[java-shib-attribute] branch main updated: PoilicyRequirementRule matches method should be non-null.

Scott Cantor cantor.2 at osu.edu
Tue May 2 14:34:47 UTC 2023


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch main
in repository java-shib-attribute.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-attribute.git;a=commit;h=1cb8a0b7899c48a1287dd33e2d3e66f31437f593

The following commit(s) were added to refs/heads/main by this push:
     new 1cb8a0b78 PoilicyRequirementRule matches method should be non-null.
1cb8a0b78 is described below

commit 1cb8a0b7899c48a1287dd33e2d3e66f31437f593
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue May 2 10:34:45 2023 -0400

    PoilicyRequirementRule matches method should be non-null.
---
 .../idp/attribute/filter/PolicyFromMatcher.java    |  9 ++++---
 .../attribute/filter/PolicyRequirementRule.java    |  8 +++---
 .../impl/AttributeIssuerPolicyRule.java            | 13 +++-------
 .../impl/AttributeIssuerRegexpPolicyRule.java      | 12 +++------
 .../impl/AttributeRequesterPolicyRule.java         | 12 +++------
 .../impl/AttributeRequesterRegexpPolicyRule.java   | 13 +++-------
 .../filtercontext/impl/PredicatePolicyRule.java    | 16 ++++--------
 .../impl/PrincipalNamePolicyRule.java              | 12 +++------
 .../impl/PrincipalNameRegexpPolicyRule.java        | 11 +++-----
 .../filtercontext/impl/ProfilePolicyRule.java      | 12 +++------
 .../impl/ProxiedRequesterPolicyRule.java           | 12 +++------
 .../impl/ProxiedRequesterRegexpPolicyRule.java     | 13 +++-------
 .../policyrule/impl/AbstractRegexpPolicyRule.java  | 19 +++++++-------
 .../policyrule/impl/AbstractStringPolicyRule.java  |  3 ++-
 .../policyrule/impl/DirectionPolicyRule.java       |  3 ++-
 .../logic/impl/AbstractComposedPolicyRule.java     | 19 ++++++--------
 .../policyrule/logic/impl/AndPolicyRule.java       | 29 ++++++++++------------
 .../policyrule/logic/impl/NotPolicyRule.java       |  5 ++--
 .../filter/policyrule/logic/impl/OrPolicyRule.java | 29 ++++++++++------------
 .../impl/AbstractEntityAttributePolicyRule.java    | 12 +++------
 .../saml/impl/AbstractEntityGroupPolicyRule.java   |  9 +------
 .../impl/AbstractNameIDFormatExactPolicyRule.java  | 10 ++------
 .../AbstractRegistrationAuthorityPolicyRule.java   |  3 ++-
 .../logic/impl/AbstractComposedPolicyRuleTest.java | 12 ++++++---
 .../idp/attribute/filter/testing/MockMatcher.java  | 20 +++++++--------
 .../filter/testing/MockPolicyRequirementRule.java  |  8 +++---
 .../idp/attribute/filter/testing/package-info.java |  4 ++-
 27 files changed, 130 insertions(+), 198 deletions(-)

diff --git a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/PolicyFromMatcher.java b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/PolicyFromMatcher.java
index 7f92c244f..adc2d5f24 100644
--- a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/PolicyFromMatcher.java
+++ b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/PolicyFromMatcher.java
@@ -39,12 +39,12 @@ import net.shibboleth.shared.primitive.LoggerFactory;
  */
 public final class PolicyFromMatcher extends BaseBridgingClass implements PolicyRequirementRule,
         IdentifiedComponent, DestructableComponent {
-
-    /** The rule we are shadowing. */
-    @Nonnull private final Matcher matcher;
     
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(PolicyFromMatcher.class);
+
+    /** The rule we are shadowing. */
+    @Nonnull private final Matcher matcher;
     
     /**
      * Constructor.
@@ -64,11 +64,12 @@ public final class PolicyFromMatcher extends BaseBridgingClass implements Policy
 
     /** {@inheritDoc} */
     @Override
-    public Tristate matches(@Nonnull final AttributeFilterContext context) {
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext context) {
         
         log.debug("{} Applying matcher supplied as policy to all values of all attributes", getLogPrefix());
 
         for (final IdPAttribute attribute : context.getPrefilteredIdPAttributes().values()) {
+            assert attribute != null;
             final Set<IdPAttributeValue> result = matcher.getMatchingValues(attribute, context);
             if (null == result) {
                 log.warn("{} Matcher returned null, returning FAIL", getLogPrefix());
diff --git a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/PolicyRequirementRule.java b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/PolicyRequirementRule.java
index 317076f5d..914d752f7 100644
--- a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/PolicyRequirementRule.java
+++ b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/PolicyRequirementRule.java
@@ -50,7 +50,7 @@ public interface PolicyRequirementRule extends IdentifiedComponent {
     /** A {@link PolicyRequirementRule} that returns true matched. */
     @Nonnull public static final PolicyRequirementRule MATCHES_ALL = new PolicyRequirementRule() {
 
-        @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+        @Override @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
             return Tristate.TRUE;
         }
 
@@ -63,7 +63,7 @@ public interface PolicyRequirementRule extends IdentifiedComponent {
     /** A {@link PolicyRequirementRule} that returns false as matched. */
     @Nonnull public static final PolicyRequirementRule MATCHES_NONE = new PolicyRequirementRule() {
 
-        @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+        @Override @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
             return Tristate.FALSE;
         }
 
@@ -76,7 +76,7 @@ public interface PolicyRequirementRule extends IdentifiedComponent {
     /** A {@link PolicyRequirementRule} that returns failed. */
     @Nonnull public static final PolicyRequirementRule REQUIREMENT_RULE_FAILS = new PolicyRequirementRule() {
 
-        @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+        @Override @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
             return Tristate.FAIL;
         }
 
@@ -92,6 +92,6 @@ public interface PolicyRequirementRule extends IdentifiedComponent {
      * @param filterContext the context.
      * @return whether the rule holds
      */
-    Tristate matches(@Nonnull final AttributeFilterContext filterContext);
+    @Nonnull Tristate matches(@Nonnull final AttributeFilterContext filterContext);
 
 }
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeIssuerPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeIssuerPolicyRule.java
index 1f7c9987d..43139cf93 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeIssuerPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeIssuerPolicyRule.java
@@ -33,15 +33,9 @@ public class AttributeIssuerPolicyRule extends AbstractStringPolicyRule {
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AttributeIssuerPolicyRule.class);
 
-    /**
-     * Compare the issuer from the context with the provided string.
-     * 
-     * @param filterContext the context
-     * @return whether it matches
-     * 
-     *         {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
 
         checkComponentActive();
 
@@ -54,4 +48,5 @@ public class AttributeIssuerPolicyRule extends AbstractStringPolicyRule {
 
         return stringCompare(issuer);
     }
+
 }
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeIssuerRegexpPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeIssuerRegexpPolicyRule.java
index a76f3f62d..5f3770ba3 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeIssuerRegexpPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeIssuerRegexpPolicyRule.java
@@ -33,15 +33,9 @@ public class AttributeIssuerRegexpPolicyRule extends AbstractRegexpPolicyRule {
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AttributeIssuerRegexpPolicyRule.class);
 
-    /**
-     * Compare the issuer from the context with the provided regexp.
-     * 
-     * @param filterContext the context
-     * @return whether it matches
-     * 
-     *         {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
 
         checkComponentActive();
 
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeRequesterPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeRequesterPolicyRule.java
index 1291fe665..f13641e41 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeRequesterPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeRequesterPolicyRule.java
@@ -33,15 +33,9 @@ public class AttributeRequesterPolicyRule extends AbstractStringPolicyRule {
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AttributeRequesterPolicyRule.class);
 
-    /**
-     * Compare the requester from the context with the provided string.
-     * 
-     * @param filterContext the context
-     * @return whether it matches
-     * 
-     *         {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
 
         checkComponentActive();
 
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeRequesterRegexpPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeRequesterRegexpPolicyRule.java
index ba288318c..cafee4d95 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeRequesterRegexpPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/AttributeRequesterRegexpPolicyRule.java
@@ -33,15 +33,9 @@ public class AttributeRequesterRegexpPolicyRule extends AbstractRegexpPolicyRule
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AttributeRequesterRegexpPolicyRule.class);
 
-    /**
-     * Compare the requester from the context with the provided regexp.
-     * 
-     * @param filterContext the context
-     * @return whether it matches
-     * 
-     *         {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
 
         checkComponentActive();
 
@@ -54,4 +48,5 @@ public class AttributeRequesterRegexpPolicyRule extends AbstractRegexpPolicyRule
 
         return regexpCompare(requester);
     }
+    
 }
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PredicatePolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PredicatePolicyRule.java
index d4f0f5b4a..1ac4c7653 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PredicatePolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PredicatePolicyRule.java
@@ -46,7 +46,7 @@ public class PredicatePolicyRule extends AbstractPolicyRule {
      * 
      * @return Returns the Predicate.
      */
-    public Predicate<ProfileRequestContext> getRulePredicate() {
+    @NonnullAfterInit public Predicate<ProfileRequestContext> getRulePredicate() {
         return rulePredicate;
     }
 
@@ -68,16 +68,9 @@ public class PredicatePolicyRule extends AbstractPolicyRule {
         }
     }
 
-    /**
-     * Compare the issuer from the context with the provided string.
-     * 
-     * @param filterContext the context
-     * @return whether it matches. All failure and navigation issues return
-     *      {@link net.shibboleth.idp.attribute.filter.PolicyRequirementRule.Tristate#FAIL}.
-     * 
-     * {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         checkComponentActive();
         final ProfileRequestContext pc = filterContext.getProfileRequestContextLookupStrategy().apply(filterContext);
         if (null == pc) {
@@ -97,4 +90,5 @@ public class PredicatePolicyRule extends AbstractPolicyRule {
             return Tristate.FAIL;
         }
     }
+    
 }
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PrincipalNamePolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PrincipalNamePolicyRule.java
index b7b4a8b99..c863ca26b 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PrincipalNamePolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PrincipalNamePolicyRule.java
@@ -33,15 +33,9 @@ public class PrincipalNamePolicyRule extends AbstractStringPolicyRule {
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(PrincipalNamePolicyRule.class);
 
-    /**
-     * Compare the principal name for this resolution with the provided string.
-     * 
-     * @param filterContext the context
-     * @return whether it matches
-     * 
-     *         {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
 
         checkComponentActive();
 
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PrincipalNameRegexpPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PrincipalNameRegexpPolicyRule.java
index 7d43f8ea9..9b3f365ef 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PrincipalNameRegexpPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/PrincipalNameRegexpPolicyRule.java
@@ -33,13 +33,9 @@ public class PrincipalNameRegexpPolicyRule extends AbstractRegexpPolicyRule {
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(PrincipalNameRegexpPolicyRule.class);
 
-    /**
-     * Compare the principal name for this resolution with the provided regexp.
-     * 
-     * @param filterContext the context
-     * @return whether it matches {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
 
         checkComponentActive();
 
@@ -52,4 +48,5 @@ public class PrincipalNameRegexpPolicyRule extends AbstractRegexpPolicyRule {
 
         return regexpCompare(principal);
     }
+
 }
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProfilePolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProfilePolicyRule.java
index 1c4a11d81..6ea8851f5 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProfilePolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProfilePolicyRule.java
@@ -36,15 +36,9 @@ public class ProfilePolicyRule extends AbstractStringPolicyRule {
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(ProfilePolicyRule.class);
     
-    /**
-     * Compare the principal name for this resolution with the provided string.
-     * 
-     * @param filterContext the context
-     * @return whether it matches
-     * 
-     *         {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         checkComponentActive();
         final ProfileRequestContext pc = filterContext.getProfileRequestContextLookupStrategy().apply(filterContext);
         if (null == pc) {
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterPolicyRule.java
index d1f0c3ba0..de23a26b4 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterPolicyRule.java
@@ -31,15 +31,9 @@ import net.shibboleth.idp.attribute.filter.policyrule.impl.AbstractStringPolicyR
  */
 public class ProxiedRequesterPolicyRule extends AbstractStringPolicyRule {
 
-    /**
-     * Compare the requester from the context with the provided string.
-     * 
-     * @param filterContext the context
-     * @return whether it matches
-     * 
-     *         {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         checkComponentActive();
 
         final ProxiedRequesterContext ctx = filterContext.getProxiedRequesterContext();
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterRegexpPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterRegexpPolicyRule.java
index 7148e38a8..b34e5d34d 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterRegexpPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterRegexpPolicyRule.java
@@ -31,15 +31,9 @@ import net.shibboleth.idp.attribute.filter.policyrule.impl.AbstractRegexpPolicyR
  */
 public class ProxiedRequesterRegexpPolicyRule extends AbstractRegexpPolicyRule {
 
-    /**
-     * Compare the requester from the context with the provided regexp.
-     * 
-     * @param filterContext the context
-     * @return whether it matches
-     * 
-     *         {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         checkComponentActive();
 
         final ProxiedRequesterContext ctx = filterContext.getProxiedRequesterContext();
@@ -55,4 +49,5 @@ public class ProxiedRequesterRegexpPolicyRule extends AbstractRegexpPolicyRule {
         
         return Tristate.FALSE;
     }
+    
 }
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/AbstractRegexpPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/AbstractRegexpPolicyRule.java
index 7c8421a23..a243e44cc 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/AbstractRegexpPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/AbstractRegexpPolicyRule.java
@@ -53,6 +53,14 @@ public abstract class AbstractRegexpPolicyRule extends AbstractPolicyRule {
         pattern = Constraint.isNotNull(thePattern, "Pattern supplied to setPattern but not be null");
     }
 
+    /** {@inheritDoc} */
+    protected void doInitialize() throws ComponentInitializationException {
+        super.doInitialize();
+        if (null == pattern) {
+            throw new ComponentInitializationException(getLogPrefix() + " No regular expression provided");
+        }
+    }
+
     /**
      * Matches the given value against the provided regular expression.
      * 
@@ -60,7 +68,7 @@ public abstract class AbstractRegexpPolicyRule extends AbstractPolicyRule {
      * 
      * @return true if the value matches the given match string, false if not
      */
-    protected Tristate regexpCompare(@Nullable final String value) {
+    @Nonnull protected Tristate regexpCompare(@Nullable final String value) {
         checkComponentActive();
 
         final boolean result;
@@ -78,11 +86,4 @@ public abstract class AbstractRegexpPolicyRule extends AbstractPolicyRule {
         return Tristate.FALSE;
     }
 
-    /** {@inheritDoc} */
-    protected void doInitialize() throws ComponentInitializationException {
-        super.doInitialize();
-        if (null == pattern) {
-            throw new ComponentInitializationException(getLogPrefix() + " No regular expression provided");
-        }
-    }
-}
+}
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/AbstractStringPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/AbstractStringPolicyRule.java
index 961dc1958..1f9075123 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/AbstractStringPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/AbstractStringPolicyRule.java
@@ -17,6 +17,7 @@
 
 package net.shibboleth.idp.attribute.filter.policyrule.impl;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import net.shibboleth.idp.attribute.filter.PolicyRequirementRule;
@@ -75,7 +76,7 @@ public abstract class AbstractStringPolicyRule extends AbstractPolicyRule implem
      * 
      * @return true if the value matches the given match string, false if not
      */
-    protected Tristate stringCompare(@Nullable final String value) {
+    @Nonnull protected Tristate stringCompare(@Nullable final String value) {
         checkComponentActive();
 
         final boolean result;
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/DirectionPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/DirectionPolicyRule.java
index 96d0d3637..7aaa76c1c 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/DirectionPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/DirectionPolicyRule.java
@@ -61,7 +61,8 @@ public class DirectionPolicyRule extends AbstractPolicyRule {
     }
     
     /** {@inheritDoc} */
-    public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         return matchDirection.equals(filterContext.getDirection()) ? Tristate.TRUE : Tristate.FALSE;
     }
 
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AbstractComposedPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AbstractComposedPolicyRule.java
index cecf20ec5..e46e1e68c 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AbstractComposedPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AbstractComposedPolicyRule.java
@@ -25,13 +25,11 @@ import javax.annotation.Nullable;
 import com.google.common.base.MoreObjects;
 
 import net.shibboleth.idp.attribute.filter.PolicyRequirementRule;
-import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.component.UnmodifiableComponent;
 
 /**
@@ -42,7 +40,14 @@ public abstract class AbstractComposedPolicyRule extends AbstractIdentifiableIni
         PolicyRequirementRule, UnmodifiableComponent {
 
     /** The composed matchers. */
-    @NonnullAfterInit private List<PolicyRequirementRule> rules;
+    @Nonnull private List<PolicyRequirementRule> rules;
+    
+    /**
+     * Constructor.
+     */
+    public AbstractComposedPolicyRule() {
+        rules = CollectionSupport.emptyList();
+    }
 
     /** Set the rules to be composed.
      * Called "subsidiaries" to allow easier parsing.
@@ -57,14 +62,6 @@ public abstract class AbstractComposedPolicyRule extends AbstractIdentifiableIni
             rules = CollectionSupport.emptyList();
         }
     }
-    
-    /** {@inheritDoc} */
-    @Override protected void doInitialize() throws ComponentInitializationException {
-        super.doInitialize();
-        if (rules == null) {
-            throw new ComponentInitializationException("Rules not set up"); 
-        }
-    }
 
     /**
      * Get the composed matchers.
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AndPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AndPolicyRule.java
index 0ccad92b6..d4e92bf25 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AndPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AndPolicyRule.java
@@ -42,20 +42,24 @@ import net.shibboleth.shared.logic.Constraint;
 @ThreadSafe
 public class AndPolicyRule extends AbstractComposedPolicyRule {
 
-    /**
-    * A given rule is considered to have matched if, and only if, TRUE is returned by every composed
-    * rule.
-    * 
-    * {@inheritDoc}
-    */
+    /** {@inheritDoc} */
+    @Override protected void doInitialize() throws ComponentInitializationException {
+        super.doInitialize();
+        
+        if (getComposedRules().isEmpty()) {
+            throw new ComponentInitializationException("No policy rules supplied to AND");
+        }
+    }
+
+    /** {@inheritDoc} */
     @Override
-    public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         Constraint.isNotNull(filterContext, "Attribute filter context can not be null");
         checkComponentActive();
 
         final List<PolicyRequirementRule> rules = getComposedRules();
         
-        for (final PolicyRequirementRule rule:rules) {
+        for (final PolicyRequirementRule rule : rules) {
             final Tristate match = rule.matches(filterContext);
             if (Tristate.FAIL == match) {
                 return Tristate.FAIL;
@@ -63,15 +67,8 @@ public class AndPolicyRule extends AbstractComposedPolicyRule {
                 return Tristate.FALSE;
             }
         }
+        
         return Tristate.TRUE;
     }
 
-    /** {@inheritDoc} */
-    @Override protected void doInitialize() throws ComponentInitializationException {
-        super.doInitialize();
-        if (getComposedRules().isEmpty()) {
-            throw new ComponentInitializationException("No policy rules supplied to AND");
-        }
-    }
-
 }
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/NotPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/NotPolicyRule.java
index 95643a7e0..4ff9875a7 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/NotPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/NotPolicyRule.java
@@ -54,7 +54,7 @@ public final class NotPolicyRule extends AbstractIdentifiableInitializableCompon
      * 
      * @return matcher that is being negated
      */
-    @Nonnull public PolicyRequirementRule getNegatedRule() {
+    @NonnullAfterInit public PolicyRequirementRule getNegatedRule() {
         return negatedRule;
     }
     
@@ -68,7 +68,8 @@ public final class NotPolicyRule extends AbstractIdentifiableInitializableCompon
     }
 
     /** {@inheritDoc} */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         Constraint.isNotNull(filterContext, "Attribute filter context can not be null");
         checkComponentActive();
 
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/OrPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/OrPolicyRule.java
index 6379af66e..1de50cad3 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/OrPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/OrPolicyRule.java
@@ -42,14 +42,18 @@ import net.shibboleth.shared.logic.Constraint;
 @ThreadSafe
 public class OrPolicyRule extends AbstractComposedPolicyRule {
 
-    /**
-    * A given rule is considered to have matched as soon as TRUE is returned by any composed
-    * rule. It is considered to have failed as soon as FAIL is returned by any composed
-    * rule.
-    * 
-    * {@inheritDoc}
-    */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override protected void doInitialize() throws ComponentInitializationException {
+        super.doInitialize();
+        
+        if (getComposedRules().isEmpty()) {
+            throw new ComponentInitializationException("No policy rules supplied to OR");
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         Constraint.isNotNull(filterContext, "Attribute filter context can not be null");
         checkComponentActive();
 
@@ -65,12 +69,5 @@ public class OrPolicyRule extends AbstractComposedPolicyRule {
         }
         return Tristate.FALSE;
     }
-
-    /** {@inheritDoc} */
-    @Override protected void doInitialize() throws ComponentInitializationException {
-        super.doInitialize();
-        if (getComposedRules().isEmpty()) {
-            throw new ComponentInitializationException("No policy rules supplied to OR");
-        }
-    }
+    
 }
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityAttributePolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityAttributePolicyRule.java
index 9ad0b0a49..9b27d747f 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityAttributePolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityAttributePolicyRule.java
@@ -160,15 +160,9 @@ public abstract class AbstractEntityAttributePolicyRule extends AbstractPolicyRu
         }
     }
 
-    /**
-     * Checks to see if the entity returned by {@link #getEntityMetadata(AttributeFilterContext)} contains the entity
-     * attribute specified by this matcher's configuration.
-     * 
-     * @param filterContext current request context
-     * 
-     * @return whether the entity has the configured attribute {@inheritDoc}
-     */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
 
         Constraint.isNotNull(filterContext, "Context must be supplied");
         checkComponentActive();
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityGroupPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityGroupPolicyRule.java
index d37a65f23..a950be914 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityGroupPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityGroupPolicyRule.java
@@ -115,14 +115,7 @@ public abstract class AbstractEntityGroupPolicyRule extends AbstractPolicyRule {
     @Nullable protected abstract EntityDescriptor getEntityMetadata(
             @Nonnull final AttributeFilterContext filterContext);
     
-    /**
-     * Checks if the given entity is in the provided entity group.
-     * 
-     * @param input the context to look at
-     * 
-     * @return whether the entity is in the group
-     *         {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     @Override
     @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext input) {
         checkComponentActive();
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractNameIDFormatExactPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractNameIDFormatExactPolicyRule.java
index 001ad81d5..9db2fe6a6 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractNameIDFormatExactPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractNameIDFormatExactPolicyRule.java
@@ -83,15 +83,9 @@ public abstract class AbstractNameIDFormatExactPolicyRule extends AbstractPolicy
     @Nullable protected abstract SSODescriptor getEntitySSODescriptor(
             @Nonnull final AttributeFilterContext filterContext);
 
-    /**
-     * Checks to see if the metadata for the entity supports the required NameID format.
-     * 
-     * @param filterContext current filter context
-     * 
-     * @return true if the entity supports the required NameID format, false otherwise
-     *         {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     @Override
+    @Nonnull
     public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         checkComponentActive();
         
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractRegistrationAuthorityPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractRegistrationAuthorityPolicyRule.java
index 272048ffb..a13f25764 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractRegistrationAuthorityPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractRegistrationAuthorityPolicyRule.java
@@ -157,7 +157,8 @@ public abstract class AbstractRegistrationAuthorityPolicyRule extends AbstractPo
     }
 
     /** {@inheritDoc} */
-    @Override public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
+    @Override
+    @Nonnull public Tristate matches(@Nonnull final AttributeFilterContext filterContext) {
         final RegistrationInfo info = getRegistrationInfo(filterContext);
 
         if (info == null) {
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AbstractComposedPolicyRuleTest.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AbstractComposedPolicyRuleTest.java
index 5a851400d..c53235acf 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AbstractComposedPolicyRuleTest.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/logic/impl/AbstractComposedPolicyRuleTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertTrue;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.testng.annotations.Test;
@@ -130,16 +131,18 @@ public class AbstractComposedPolicyRuleTest {
             setSubsidiaries(composedMatchers);
         }
 
+        /** {@inheritDoc} */
         @Override
-        public Tristate matches(@Nullable final AttributeFilterContext arg0) {
+        @Nonnull public Tristate matches(@Nullable final AttributeFilterContext arg0) {
             return Tristate.FALSE;
         }
     }
     
-    public static class TestMatcher extends AbstractInitializableComponent implements  PolicyRequirementRule, DestructableComponent, InitializableComponent {
+    public static class TestMatcher extends AbstractInitializableComponent implements PolicyRequirementRule, DestructableComponent, InitializableComponent {
 
+        /** {@inheritDoc} */
         @Override
-        public Tristate matches(@Nullable final AttributeFilterContext arg0) {
+        @Nonnull public Tristate matches(@Nullable final AttributeFilterContext arg0) {
             return Tristate.FALSE;
         }
 
@@ -150,4 +153,5 @@ public class AbstractComposedPolicyRuleTest {
         }
         
     }
-}
+
+}
\ No newline at end of file
diff --git a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/MockMatcher.java b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/MockMatcher.java
index 35025cf76..80698762f 100644
--- a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/MockMatcher.java
+++ b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/MockMatcher.java
@@ -38,14 +38,13 @@ import net.shibboleth.shared.primitive.StringSupport;
 public class MockMatcher extends AbstractIdentifiedInitializableComponent implements Matcher { 
 
     /** ID of the attribute to which this matcher applies. */
-    private String matchingAttribute;
+    @Nullable private String matchingAttribute;
 
     /** Values, of the attribute, considered to match this matcher. */
-    private Collection<?> matchingValues;
+    @Nullable private Collection<?> matchingValues;
     
     /** state variable */
     private boolean initialized;
-
    
     /** do we fail when validate is called? do we fail when we are called?*/
     private boolean fails;
@@ -60,7 +59,7 @@ public class MockMatcher extends AbstractIdentifiedInitializableComponent implem
      * 
      * @param id ID of the attribute to which this matcher applies
      */
-    public void setMatchingAttribute(String id) {
+    public void setMatchingAttribute(@Nonnull final String id) {
         matchingAttribute = Constraint.isNotNull(StringSupport.trimOrNull(id), "attribute ID can not be null or empty");
         if (!initialized) {
             setId("Mock " + id);
@@ -73,7 +72,7 @@ public class MockMatcher extends AbstractIdentifiedInitializableComponent implem
      * 
      * @param values values, of the attribute, considered to match this matcher
      */
-    public void setMatchingValues(Collection<?> values) {
+    public void setMatchingValues(@Nullable final Collection<?> values) {
         matchingValues = values;
     }
 
@@ -91,9 +90,9 @@ public class MockMatcher extends AbstractIdentifiedInitializableComponent implem
             return CollectionSupport.copyToSet(attribute.getValues());
         }
 
-        LinkedHashSet<IdPAttributeValue> values = new LinkedHashSet<>();
-        for (IdPAttributeValue value : attribute.getValues()) {
-            if (matchingValues.contains(value)) {
+        final LinkedHashSet<IdPAttributeValue> values = new LinkedHashSet<>();
+        for (final IdPAttributeValue value : attribute.getValues()) {
+            if (matchingValues != null && matchingValues.contains(value)) {
                 values.add(value);
             }
         }
@@ -118,7 +117,8 @@ public class MockMatcher extends AbstractIdentifiedInitializableComponent implem
     /** set whether we are going to fail {{@link #getMatchingValues(IdPAttribute, AttributeFilterContext)}.
      * @param doFail whether we are going to fail.
      */
-    public void setFailValidate(boolean doFail) {
+    public void setFailValidate(final boolean doFail) {
         fails = doFail;
     }
-}
+    
+}
\ No newline at end of file
diff --git a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/MockPolicyRequirementRule.java b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/MockPolicyRequirementRule.java
index b5a4abe75..3ad626987 100644
--- a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/MockPolicyRequirementRule.java
+++ b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/MockPolicyRequirementRule.java
@@ -18,6 +18,7 @@
 package net.shibboleth.idp.attribute.filter.testing;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
 import net.shibboleth.idp.attribute.filter.Matcher;
 import net.shibboleth.idp.attribute.filter.PolicyRequirementRule;
@@ -32,7 +33,7 @@ public class MockPolicyRequirementRule extends AbstractIdentifiedInitializableCo
     private boolean initialized;
 
     /** to return from matcher(). */
-    private Tristate retVal;
+    @Nullable private Tristate retVal;
 
     /** Constructor. */
     public MockPolicyRequirementRule() {
@@ -60,7 +61,8 @@ public class MockPolicyRequirementRule extends AbstractIdentifiedInitializableCo
 
     /** {@inheritDoc} */
     @Override
-    public Tristate matches(@Nonnull AttributeFilterContext filterContext) {
-        return retVal;
+    @Nonnull public Tristate matches(@Nonnull AttributeFilterContext filterContext) {
+        return retVal != null ? retVal : Tristate.FAIL;
     }
+    
 }
\ No newline at end of file
diff --git a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/package-info.java b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/package-info.java
index 60d1ba9ab..f9c4ab3ca 100644
--- a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/package-info.java
+++ b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/filter/testing/package-info.java
@@ -18,5 +18,7 @@
 /**
  * Testing utility classes.
  */
+ at NonnullElements
+package net.shibboleth.idp.attribute.filter.testing;
 
-package net.shibboleth.idp.attribute.filter.testing;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list