[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