[java-shib-attribute] 02/05: IDP-2069 Null handling task

Rod Widdowson rdw at steadingsoftware.com
Wed May 3 13:53:29 UTC 2023


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

rdw 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=1003611b8e8d8482c635a91de42d8a494a27e794

commit 1003611b8e8d8482c635a91de42d8a494a27e794
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon May 1 15:17:07 2023 +0100

    IDP-2069 Null handling task
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    Fix the easier-to-fix warnings in shib-attribute-filter-spring
---
 .../logic/impl/AbstractComposedPolicyRule.java           | 13 ++-----------
 .../filter/policyrule/logic/impl/NotPolicyRule.java      |  1 -
 .../idp/attribute/filter/spring/BaseFilterParser.java    | 13 +++++++++----
 .../filter/spring/basic/impl/NotMatcherParser.java       |  5 +++--
 .../spring/impl/AttributeFilterServiceStrategy.java      |  2 +-
 .../filter/spring/impl/AttributeRuleParser.java          | 16 ++++++++++------
 .../filter/spring/AttributeFilterFailFastTest.java       |  4 +++-
 7 files changed, 28 insertions(+), 26 deletions(-)

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 831c135b1..2eb47c586 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
@@ -40,22 +40,14 @@ public abstract class AbstractComposedPolicyRule extends AbstractIdentifiableIni
         PolicyRequirementRule, UnmodifiableComponent {
 
     /** The composed matchers. */
-    @Nonnull private List<PolicyRequirementRule> rules;
+    @Nonnull private List<PolicyRequirementRule> rules = CollectionSupport.emptyList();
     
-    /**
-     * Constructor.
-     */
-    public AbstractComposedPolicyRule() {
-        rules = CollectionSupport.emptyList();
-    }
-
     /** Set the rules to be composed.
      * Called "subsidiaries" to allow easier parsing.
      * @param theRules the rules to be composed.
      */
     public void setSubsidiaries(@Nullable @NonnullElements final List<PolicyRequirementRule> theRules) {
         checkSetterPreconditions();
-        
         if (theRules != null) {
             rules = CollectionSupport.copyToList(theRules);
         } else {
@@ -69,7 +61,6 @@ public abstract class AbstractComposedPolicyRule extends AbstractIdentifiableIni
      * @return the composed matchers
      */
     @Nonnull @NonnullElements @Unmodifiable @NotLive public List<PolicyRequirementRule> getComposedRules() {
-        assert rules != null;
         return rules;
     }
 
@@ -78,4 +69,4 @@ public abstract class AbstractComposedPolicyRule extends AbstractIdentifiableIni
         return MoreObjects.toStringHelper(this).add("Composed Rules : ", getComposedRules()).toString();
     }
 
-}
\ 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 b641dbac6..2654da52c 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
@@ -55,7 +55,6 @@ public final class NotPolicyRule extends AbstractIdentifiableInitializableCompon
      * @return matcher that is being negated
      */
     @Nonnull public PolicyRequirementRule getNegatedRule() {
-        checkComponentActive();
         assert negatedRule!=null;
         return negatedRule;
     }
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/BaseFilterParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/BaseFilterParser.java
index 6042e1dc3..062e16280 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/BaseFilterParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/BaseFilterParser.java
@@ -112,8 +112,9 @@ public abstract class BaseFilterParser extends AbstractCustomBeanDefinitionParse
                 qualifiedId.append(localId);
             }
         }
-
-        return qualifiedId.toString();
+        final String result = qualifiedId.toString();
+        assert result != null;
+        return result;
     }
 
     /**
@@ -160,7 +161,9 @@ public abstract class BaseFilterParser extends AbstractCustomBeanDefinitionParse
         builder.setScope(BeanDefinition.SCOPE_PROTOTYPE);
 
         final String suppliedId = StringSupport.trimOrNull(element.getAttributeNS(null, "id"));
-        final String generatedId = getQualifiedId(element, element.getLocalName(), suppliedId);
+        final String localName = element.getLocalName();
+        assert localName != null;
+        final String generatedId = getQualifiedId(element, localName, suppliedId);
 
         if (suppliedId == null) {
             LOG.trace("Element '{}' did not contain an 'id' attribute.  Generated id '{}' will be used",
@@ -177,9 +180,11 @@ public abstract class BaseFilterParser extends AbstractCustomBeanDefinitionParse
     /** {@inheritDoc} */
     @Override @Nonnull @NotEmpty protected String resolveId(@Nonnull final Element configElement,
             @Nonnull final AbstractBeanDefinition beanDefinition, @Nonnull final ParserContext parserContext) {
-        return Constraint.isNotNull(
+        final String result = Constraint.isNotNull(
                 beanDefinition.getAttribute(BaseFilterParser.QUALIFIED_ID),
                 BaseFilterParser.QUALIFIED_ID + " was absent").toString();
+        assert result != null;
+        return result;
     }
 
     /**
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/impl/NotMatcherParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/impl/NotMatcherParser.java
index 4aac4156e..85e2356e8 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/impl/NotMatcherParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/impl/NotMatcherParser.java
@@ -61,9 +61,10 @@ public class NotMatcherParser extends BaseFilterParser {
                 ElementSupport.getChildElementsByTagNameNS(configElement, BaseFilterParser.NAMESPACE, "Rule");
 
         if (ruleElements != null && !ruleElements.isEmpty()) {
-
+            final Element rule =  ruleElements.get(0);
+            assert rule != null;
             builder.addPropertyValue("negation",
-                    SpringSupport.parseCustomElement(ruleElements.get(0), parserContext, builder, false));
+                    SpringSupport.parseCustomElement(rule, parserContext, builder, false));
 
         }
     }
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java
index 499c896c1..572da726c 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java
@@ -59,7 +59,7 @@ public class AttributeFilterServiceStrategy extends AbstractIdentifiableInitiali
         final Collection<AttributeFilterPolicy> afps = appContext.getBeansOfType(AttributeFilterPolicy.class).values();
         log.debug("Creating Attribute Filter {} with  {} Policies", getId(), afps.size());
 
-        final AttributeFilterImpl filter = new AttributeFilterImpl(getId(), afps);
+        final AttributeFilterImpl filter = new AttributeFilterImpl(ensureId(), afps);
         
         final SpringServiceableComponent<AttributeFilter> result;
         try {
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeRuleParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeRuleParser.java
index 3538d0f18..a4f68b48c 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeRuleParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeRuleParser.java
@@ -26,6 +26,7 @@ import javax.xml.namespace.QName;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.filter.AttributeRule;
@@ -82,9 +83,10 @@ public class AttributeRuleParser extends BaseFilterParser {
                 log.debug("{} : More than one PermitValueRule, only the first will be used",
                         parserContext.getReaderContext().getResource().getDescription());
             }
-
+            final Element rule = permitValueRule.get(0);
+            assert rule != null;
             builder.addPropertyValue("matcher", 
-                    SpringSupport.parseCustomElement(permitValueRule.get(0), parserContext, builder, false));
+                    SpringSupport.parseCustomElement(rule, parserContext, builder, false));
             builder.addPropertyValue("isDenyRule", false);
 
         } else if (denyValueRule != null && !denyValueRule.isEmpty()) {
@@ -92,14 +94,16 @@ public class AttributeRuleParser extends BaseFilterParser {
                 log.debug("{} : More than one DenyValueRule, only the first will be used",
                         parserContext.getReaderContext().getResource().getDescription());
             }
+            final Element rule = denyValueRule.get(0);
+            assert rule != null;
             builder.addPropertyValue("matcher",
-                    SpringSupport.parseCustomElement(denyValueRule.get(0), parserContext, builder, false));
+                    SpringSupport.parseCustomElement(rule, parserContext, builder, false));
             builder.addPropertyValue("isDenyRule", true);
         } else {
             // Note the documented restriction that permitAny cannot be property replaced.
-            if (config.hasAttributeNS(null, PERMIT_ANY_ATTRIBUTE)) {
-                final Boolean permitAny = AttributeSupport.getAttributeValueAsBoolean(
-                        config.getAttributeNodeNS(null, PERMIT_ANY_ATTRIBUTE));
+            final Attr permitAnyAttribute = config.getAttributeNodeNS(null, PERMIT_ANY_ATTRIBUTE);
+            if (permitAnyAttribute != null) {
+                final Boolean permitAny = AttributeSupport.getAttributeValueAsBoolean(permitAnyAttribute);
                 if (permitAny != null && permitAny.booleanValue()) {
                     builder.addPropertyValue("isDenyRule", false);
                     builder.addPropertyValue("matcher", Matcher.MATCHES_ALL);
diff --git a/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/AttributeFilterFailFastTest.java b/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/AttributeFilterFailFastTest.java
index 9fd6f7247..dbd7a9e6a 100644
--- a/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/AttributeFilterFailFastTest.java
+++ b/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/AttributeFilterFailFastTest.java
@@ -17,7 +17,9 @@
 
 package net.shibboleth.idp.attribute.filter.spring;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.fail;
 
 import java.io.IOException;
 

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


More information about the commits mailing list