[java-identity-provider COMMIT] in /trunk/idp-attribute-filter-impl/src: main/java/net/shibboleth/idp/attribute/filte...

noreply at shibboleth.net noreply at shibboleth.net
Tue Aug 16 11:58:36 BST 2011


Author: rdw
Date: Tue Aug 16 11:58:36 2011
New Revision: 4018

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=4018&view=rev
Log:
Componentize the "boolean" criteria (TRUE, NOT, AND, OR).
Set parameter via setters, not constructor.

Added:
    trunk/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filtering/impl/policy/DestroyableValidatableAnyCriterion.java   (with props)
Modified:
    trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filtering/impl/policy/AndCriterion.java
    trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filtering/impl/policy/AnyCriterion.java
    trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filtering/impl/policy/NotCriterion.java
    trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filtering/impl/policy/OrCriterion.java
    trunk/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filtering/impl/policy/TestAnd.java
    trunk/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filtering/impl/policy/TestNot.java
    trunk/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filtering/impl/policy/TestOr.java

Modified: trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filtering/impl/policy/AndCriterion.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filtering/impl/policy/AndCriterion.java?rev=4018&r1=4017&r2=4018&view=diff
==============================================================================
--- trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filtering/impl/policy/AndCriterion.java (original)
+++ trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filtering/impl/policy/AndCriterion.java Tue Aug 16 11:58:36 2011
@@ -25,6 +25,12 @@
 import net.shibboleth.idp.attribute.filtering.AttributeFilterContext;
 
 import org.opensaml.util.collections.CollectionSupport;
+import org.opensaml.util.component.ComponentInitializationException;
+import org.opensaml.util.component.ComponentSupport;
+import org.opensaml.util.component.ComponentValidationException;
+import org.opensaml.util.component.DestructableComponent;
+import org.opensaml.util.component.InitializableComponent;
+import org.opensaml.util.component.ValidatableComponent;
 import org.opensaml.util.criteria.AbstractBiasedEvaluableCriterion;
 import org.opensaml.util.criteria.EvaluableCriterion;
 import org.opensaml.util.criteria.EvaluationException;
@@ -41,7 +47,8 @@
  * 
  */
 @ThreadSafe
-public class AndCriterion extends AbstractBiasedEvaluableCriterion<AttributeFilterContext> {
+public class AndCriterion extends AbstractBiasedEvaluableCriterion<AttributeFilterContext> implements
+        InitializableComponent, DestructableComponent, ValidatableComponent {
 
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(AndCriterion.class);
@@ -51,23 +58,73 @@
      * 
      * This list in unmodifiable.
      */
-    private final List<EvaluableCriterion<AttributeFilterContext>> criteria;
+    private List<EvaluableCriterion<AttributeFilterContext>> criteria = Collections.EMPTY_LIST;
+
+    /** Initialization state. */
+    private boolean initialized;
+
+    /** Destructor state. */
+    private boolean destroyed;
 
     /**
-     * Constructor.
+     * Has initialize been called on this object. {@inheritDoc}.
+     */
+    public boolean isInitialized() {
+        return initialized;
+    }
+
+    /** Mark the object as initialized having initialized any children. {@inheritDoc}. */
+    public synchronized void initialize() throws ComponentInitializationException {
+        if (initialized) {
+            throw new ComponentInitializationException("And Matcher being initialized multiple times");
+        }
+
+        for (EvaluableCriterion<AttributeFilterContext> criterion : criteria) {
+            ComponentSupport.initialize(criterion);
+        }
+        initialized = true;
+    }
+
+    /** tear down any destructable children. {@inheritDoc} */
+    public void destroy() {
+        destroyed = true;
+        for (EvaluableCriterion<AttributeFilterContext> criterion : criteria) {
+            ComponentSupport.destroy(criterion);
+        }
+        // Clear after the setting of the flag top avoid race with doEvaluate
+        criteria = null;
+    }
+
+    /**
+     * Validate any validatable children. {@inheritDoc}
      * 
-     * @param theCriteria a list of sub criteria.
+     * @throws ComponentValidationException if any of the child validates failed.
      */
-    public AndCriterion(final List<EvaluableCriterion<AttributeFilterContext>> theCriteria) {
+    public void validate() throws ComponentValidationException {
+        if (!initialized) {
+            throw new ComponentValidationException("Object not initialized");
+        }
+        for (EvaluableCriterion<AttributeFilterContext> criterion : criteria) {
+            ComponentSupport.validate(criterion);

[... 634 lines stripped ...]


More information about the commits mailing list