[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