[java-shib-attribute] 01/04: JSSH-27 Implement an ensureId method to help with nullability annotation

Rod Widdowson rdw at steadingsoftware.com
Sat Apr 29 10:36:38 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=b43bd4e9891c14449e060055b4aae18116a65d4d

commit b43bd4e9891c14449e060055b4aae18116a65d4d
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri Apr 28 17:00:10 2023 +0100

    JSSH-27 Implement an ensureId method to help with nullability annotation
    
    https://shibboleth.atlassian.net/browse/JSSH-27
    
    Use the ensureId where appropriate.
---
 .../idp/attribute/filter/impl/AttributeFilterImpl.java    |  4 ++--
 .../attribute/filter/impl/AttributeFilterImplTest.java    |  2 +-
 .../attribute/filter/tests/AttributeFilterPolicyTest.java |  9 +++++----
 .../spring/impl/AttributeFilterServiceStrategy.java       |  2 +-
 .../idp/attribute/filter/spring/basic/AndTest.java        |  2 +-
 .../spring/saml/AttributeInMetadataRuleParserTest.java    |  4 ++--
 .../impl/AttributeRegistryServiceStrategy.java            |  2 +-
 .../attribute/resolver/AbstractAttributeDefinition.java   |  4 +++-
 .../idp/attribute/resolver/AbstractDataConnector.java     |  1 +
 .../attribute/resolver/ResolvedAttributeDefinition.java   |  6 ++++--
 .../idp/attribute/resolver/ResolvedDataConnector.java     |  6 ++++--
 .../resolver/AbstractAttributeDefinitionTest.java         |  2 +-
 .../ad/impl/ContextDerivedAttributeDefinition.java        |  2 +-
 .../resolver/ad/impl/DecryptedAttributeDefinition.java    |  2 +-
 .../resolver/ad/impl/PrescopedAttributeDefinition.java    |  2 +-
 .../ad/impl/PrincipalNameAttributeDefinition.java         |  2 +-
 .../resolver/ad/impl/RegexSplitAttributeDefinition.java   |  2 +-
 .../resolver/ad/impl/ScopedAttributeDefinition.java       |  2 +-
 .../resolver/ad/impl/ScriptedAttributeDefinition.java     |  7 ++++---
 .../resolver/ad/impl/SimpleAttributeDefinition.java       |  4 ++--
 .../resolver/ad/impl/TemplateAttributeDefinition.java     |  4 ++--
 .../ad/mapped/impl/MappedAttributeDefinition.java         |  6 +++---
 .../resolver/dc/impl/PairwiseIdDataConnector.java         |  8 +++++---
 .../resolver/dc/rdbms/impl/RDBMSDataConnector.java        | 15 +++------------
 .../attribute/resolver/impl/AttributeResolverImpl.java    |  5 +++--
 .../resolver/impl/AttributeResolverImplTest.java          |  2 +-
 .../spring/impl/AttributeResolverServiceStrategy.java     |  4 ++--
 .../spring/dc/ldap/impl/LDAPDataConnectorParserTest.java  |  2 +-
 .../dc/rdbms/impl/RDBMSDataConnectorParserTest.java       |  2 +-
 29 files changed, 59 insertions(+), 56 deletions(-)

diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
index fa1c0f8db..970462dbe 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
@@ -227,7 +227,7 @@ public class AttributeFilterImpl extends AbstractIdentifiableInitializableCompon
     private boolean startTimer(@Nonnull final AttributeFilterContext filterContext) {
         final MetricContext timerCtx = metricContextLookupStrategy.apply(filterContext);
         if (timerCtx != null) {
-            timerCtx.start(getId());
+            timerCtx.start(ensureId());
             return true;
         }
         return false;
@@ -241,7 +241,7 @@ public class AttributeFilterImpl extends AbstractIdentifiableInitializableCompon
     private void stopTimer(@Nonnull final AttributeFilterContext filterContext) {
         final MetricContext timerCtx = metricContextLookupStrategy.apply(filterContext);
         if (timerCtx != null) {
-            timerCtx.stop(getId());
+            timerCtx.stop(ensureId());
         }
     }
 
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImplTest.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImplTest.java
index 7eaa644d0..4b711535b 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImplTest.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImplTest.java
@@ -100,7 +100,7 @@ public class AttributeFilterImplTest {
         Assert.assertEquals(filter.getFilterPolicies().size(), 2);
         List<AttributeFilterPolicy> contents = filter.getFilterPolicies();
         Assert.assertEquals(contents.get(0).getId(), "policy1");
-        Assert.assertEquals(contents.get(1).getId(), "policy2");
+        Assert.assertEquals(contents.get(1).ensureId(), "policy2");
 
         try {
             filter.getFilterPolicies().add(policy1);
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/tests/AttributeFilterPolicyTest.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/tests/AttributeFilterPolicyTest.java
index b3169a76f..fe4b76654 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/tests/AttributeFilterPolicyTest.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/tests/AttributeFilterPolicyTest.java
@@ -31,6 +31,7 @@ import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
 import net.shibboleth.idp.attribute.filter.context.AttributeFilterWorkContext;
 import net.shibboleth.idp.attribute.filter.testing.MockMatcher;
 import net.shibboleth.idp.attribute.filter.testing.MockPolicyRequirementRule;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeTest;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
@@ -46,11 +47,11 @@ import org.testng.annotations.Test;
 @SuppressWarnings("javadoc")
 public class AttributeFilterPolicyTest {
 
-    private MockPolicyRequirementRule policyMatcher;
+    @NonnullBeforeTest private MockPolicyRequirementRule policyMatcher;
 
-    private AttributeRule valuePolicy;
+    @NonnullBeforeTest private AttributeRule valuePolicy;
 
-    private MockMatcher valueMatcher;
+    @NonnullBeforeTest private MockMatcher valueMatcher;
 
     @Nonnull @NotEmpty private final String ATTR_NAME = "foo";
 
@@ -78,7 +79,7 @@ public class AttributeFilterPolicyTest {
         Assert.assertTrue(policy.getAttributeRules().contains(valuePolicy));
 
         policy = new AttributeFilterPolicy(ID, policyMatcher, null);
-        Assert.assertEquals(policy.getId(), ID);
+        Assert.assertEquals(policy.ensureId(), ID);
         Assert.assertEquals(policy.getPolicyRequirementRule(), policyMatcher);
         Assert.assertTrue(policy.getAttributeRules().isEmpty());
 
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 8fc163e0a..499c896c1 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
@@ -66,7 +66,7 @@ public class AttributeFilterServiceStrategy extends AbstractIdentifiableInitiali
             filter.initialize();
             result = new SpringServiceableComponent<AttributeFilter>(filter);
             result.setApplicationContext(appContext);
-            result.setId(getId());
+            result.setId(ensureId());
             result.initialize();
             return result;
         } catch (final ComponentInitializationException e) {
diff --git a/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/basic/AndTest.java b/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/basic/AndTest.java
index 9308a3e97..f74917eba 100644
--- a/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/basic/AndTest.java
+++ b/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/basic/AndTest.java
@@ -51,7 +51,7 @@ public class AndTest extends BaseAttributeFilterParserTest {
 
     @Test public void multiNameTest() throws ComponentInitializationException {
         AndMatcher what = (AndMatcher) getMatcher("andMulti.xml");
-        assertTrue(what.getId().endsWith("multi"));
+        assertTrue(what.ensureId().endsWith("multi"));
         final List<Matcher> children = what.getComposedMatchers();
 
         assertEquals(children.size(), 5);
diff --git a/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeInMetadataRuleParserTest.java b/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeInMetadataRuleParserTest.java
index a9d428973..e4244fd75 100644
--- a/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeInMetadataRuleParserTest.java
+++ b/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeInMetadataRuleParserTest.java
@@ -48,14 +48,14 @@ public class AttributeInMetadataRuleParserTest extends  BaseAttributeFilterParse
         
         assertTrue(matcher.getMatchIfMetadataSilent());
         assertTrue(matcher.getOnlyIfRequired());
-        assertTrue(matcher.getId().endsWith(":PermitRule"));
+        assertTrue(matcher.ensureId().endsWith(":PermitRule"));
     
         final PolicyFromMatcher policyRule = (PolicyFromMatcher) getPolicyRuleFromAttributeFilterPolicy(context);
 
         matcher = (AttributeInMetadataMatcher) policyRule.getMatcher();
         assertTrue(matcher.getMatchIfMetadataSilent());
         assertTrue(matcher.getOnlyIfRequired());
-        assertTrue(matcher.getId().endsWith(":PRR"));
+        assertTrue(matcher.ensureId().endsWith(":PRR"));
     }
     
 }
diff --git a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java
index 955d97a07..105b76562 100644
--- a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java
+++ b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java
@@ -112,7 +112,7 @@ public class AttributeRegistryServiceStrategy extends AbstractIdentifiableInitia
         }
         
         final AttributeTranscoderRegistryImpl registry = new AttributeTranscoderRegistryImpl();
-        registry.setId(getId());
+        registry.setId(ensureId());
         registry.setApplicationContext(appContext);
         registry.setNamingRegistry(namingRegistry);
         registry.setExtendedConditionFactory(extendedConditionFactory);
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
index 8a2dc8a20..caff62cd5 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
@@ -101,7 +101,7 @@ public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin
             throw new ComponentInitializationException("Invalid Attribute Definitions name (" + getId() + ")");
         }
         
-        if (IdPAttribute.isDeprecatedId(getId())) {
+        if (IdPAttribute.isDeprecatedId(ensureId())) {
             DeprecationSupport.warnOnce(
                     ObjectType.CONFIGURATION,
                     "Use of AttributeDefinition id with invalid characters",
@@ -165,10 +165,12 @@ public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin
         if (null == prefix) {
             final StringBuilder builder = new StringBuilder("Attribute Definition '").append(getId()).append("':");
             prefix = builder.toString();
+            assert prefix != null;
             if (null == logPrefix) {
                 logPrefix = prefix;
             }
         }
+        assert prefix != null;
         return prefix;
     }
     
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractDataConnector.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractDataConnector.java
index 59c7a3053..44110559b 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractDataConnector.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractDataConnector.java
@@ -231,6 +231,7 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
         if (null == prefix) {
             final StringBuilder builder = new StringBuilder("Data Connector '").append(getId()).append("':");
             prefix = builder.toString();
+            assert prefix != null;
             if (null == logPrefix) {
                 logPrefix = prefix;
             }
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinition.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinition.java
index 7a266f305..823391985 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinition.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinition.java
@@ -93,8 +93,10 @@ public final class ResolvedAttributeDefinition extends AbstractAttributeDefiniti
     }
 
     /** {@inheritDoc} */
-    @Override @Nullable public String getId() {
-        return resolvedDefinition.getId();
+    @Override @Nonnull public String getId() {
+        final String id = resolvedDefinition.getId();
+        assert id != null;
+        return id;
     }
 
     /**
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java
index f5772a743..ec6898528 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java
@@ -101,8 +101,10 @@ public final class ResolvedDataConnector extends AbstractDataConnector {
     }
 
     /** {@inheritDoc} */
-    @Override @Nullable public String getId() {
-        return resolvedConnector.getId();
+    @Override @Nonnull public String getId() {
+        final String id = resolvedConnector.getId();
+        assert id != null;
+        return id;
     }
 
     /** {@inheritDoc} */
diff --git a/shib-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java b/shib-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
index ebb6fd8d5..509521ac6 100644
--- a/shib-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
+++ b/shib-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
@@ -44,7 +44,7 @@ public class AbstractAttributeDefinitionTest {
     public void instantiation() {
         MockAttributeDefinition definition = new MockAttributeDefinition("foo", null);
 
-        Assert.assertEquals(definition.getId(), "foo");
+        Assert.assertEquals(definition.ensureId(), "foo");
         Assert.assertFalse(definition.isDependencyOnly());
         Assert.assertFalse(definition.isPreRequested());
     }
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ContextDerivedAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ContextDerivedAttributeDefinition.java
index cf0f145b9..9f73fbf9c 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ContextDerivedAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ContextDerivedAttributeDefinition.java
@@ -87,7 +87,7 @@ public class ContextDerivedAttributeDefinition extends AbstractAttributeDefiniti
         }
         log.debug("{} Generated {} values", getLogPrefix(), results.size());
         log.trace("{} Values: {}", getLogPrefix(), results);
-        final IdPAttribute attribute = new IdPAttribute(getId());
+        final IdPAttribute attribute = new IdPAttribute(ensureId());
         attribute.setValues(results);
         return attribute;
     }
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DecryptedAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DecryptedAttributeDefinition.java
index a24fde9fd..29b444900 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DecryptedAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DecryptedAttributeDefinition.java
@@ -89,7 +89,7 @@ public class DecryptedAttributeDefinition extends AbstractAttributeDefinition {
 
         final List<IdPAttributeValue> results =
                 PluginDependencySupport.getMergedAttributeValues(workContext, getAttributeDependencies(), 
-                        getDataConnectorDependencies(), getId());
+                        getDataConnectorDependencies(), ensureId());
 
         final List<IdPAttributeValue> decryptedValues = new ArrayList<>(results.size());
 
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java
index 10639fa0c..3ccc7938f 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java
@@ -91,7 +91,7 @@ public class PrescopedAttributeDefinition extends AbstractAttributeDefinition {
                 PluginDependencySupport.getMergedAttributeValues(workContext, 
                         getAttributeDependencies(), 
                         getDataConnectorDependencies(), 
-                        getId());
+                        ensureId());
         log.debug("{} Dependencies provided unmapped values of {}", getLogPrefix(), dependencyValues);
 
         final List<IdPAttributeValue> valueList = new ArrayList<>(dependencyValues.size());
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrincipalNameAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrincipalNameAttributeDefinition.java
index c8f83894a..c9c407afe 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrincipalNameAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrincipalNameAttributeDefinition.java
@@ -43,7 +43,7 @@ public class PrincipalNameAttributeDefinition extends AbstractAttributeDefinitio
             throw new ResolutionException(getLogPrefix() + " provided principal name was empty");
         }
 
-        final IdPAttribute attribute = new IdPAttribute(getId());
+        final IdPAttribute attribute = new IdPAttribute(ensureId());
         attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue(principalName)));
         return attribute;
     }
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java
index 16f0cc060..ac4ed347c 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java
@@ -92,7 +92,7 @@ public class RegexSplitAttributeDefinition extends AbstractAttributeDefinition {
                 PluginDependencySupport.getMergedAttributeValues(workContext, 
                         getAttributeDependencies(), 
                         getDataConnectorDependencies(), 
-                        getId());
+                        ensureId());
 
         for (final IdPAttributeValue dependencyValue : dependencyValues) {
             final String inputValue;
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java
index 0c5d53250..10faf058c 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java
@@ -172,7 +172,7 @@ public class ScopedAttributeDefinition extends AbstractAttributeDefinition {
                 PluginDependencySupport.getMergedAttributeValues(workContext,
                         nonScopeAttributeDependencies,
                         getDataConnectorDependencies(), 
-                        getId());
+                        ensureId());
 
         final List<IdPAttributeValue> valueList = new ArrayList<>(dependencyValues.size());
 
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
index 87049b8d4..003b79ac7 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
@@ -159,6 +159,7 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
             throw new ComponentInitializationException(getLogPrefix() + " no script was configured");
         }
         
+        assert script != null;
         scriptEvaluator = new AttributeDefinitionScriptEvaluator(script);
         scriptEvaluator.setCustomObject(customObject);
         scriptEvaluator.setContextExtenders(contextExtenders);
@@ -222,11 +223,11 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
                             getAttributeDependencies(), 
                             getDataConnectorDependencies());
 
-            if (dependencyAttributes.containsKey(getId())) {
+            if (dependencyAttributes.containsKey(ensureId())) {
                 log.debug("{} The attribute ID to be populated is a dependency, not created", getLogPrefix());
             } else {
                 log.debug("{} Adding to-be-populated attribute to script context", getLogPrefix());
-                final IdPAttribute newAttribute = new IdPAttribute(getId());
+                final IdPAttribute newAttribute = new IdPAttribute(ensureId());
                 scriptContext.setAttribute(getId(), new ScriptedIdPAttributeImpl(newAttribute, getLogPrefix()),
                         ScriptContext.ENGINE_SCOPE);
             }
@@ -258,7 +259,7 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
         @Nullable protected Object finalizeContext(@Nonnull final ScriptContext scriptContext,
                 @Nullable final Object scriptResult) throws ScriptException {
             
-            final Object result = scriptContext.getAttribute(getId());
+            final Object result = scriptContext.getAttribute(ensureId());
             if (null == result) {
                 log.info("{} No value returned", getLogPrefix());
                 return null;
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java
index 9696029c1..cc9a6f137 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java
@@ -65,11 +65,11 @@ public class SimpleAttributeDefinition extends AbstractAttributeDefinition {
             @Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
         Constraint.isNotNull(workContext, "AttributeResolverWorkContext cannot be null");
 
-        final IdPAttribute result = new IdPAttribute(getId());
+        final IdPAttribute result = new IdPAttribute(ensureId());
         final List<IdPAttributeValue> values = PluginDependencySupport.getMergedAttributeValues(workContext,
                 getAttributeDependencies(), 
                 getDataConnectorDependencies(), 
-                getId());
+                ensureId());
         if (isStripNulls()) {
             result.setValues(
                     values.stream().
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java
index ef27fc863..5df6ae384 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java
@@ -139,7 +139,7 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
         if (null == templateText) {
             throw new ComponentInitializationException(getLogPrefix() + " no template provided");
         }
-    
+        assert engine!=null && templateText!=null;
         template = Template.fromTemplate(engine, templateText);
     }
 
@@ -148,7 +148,7 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
             @Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
 
-        final IdPAttribute resultantAttribute = new IdPAttribute(getId());
+        final IdPAttribute resultantAttribute = new IdPAttribute(ensureId());
 
         final Map<String,Iterator<IdPAttributeValue>> sourceValues = new LazyMap<>();
         final int valueCount = setupSourceValues(workContext, sourceValues);
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
index a81ff0736..55f9ce641 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
@@ -196,11 +196,11 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
                 PluginDependencySupport.getMergedAttributeValues(workContext,
                         getAttributeDependencies(),
                         getDataConnectorDependencies(),
-                        getId());
-        log.debug("Attribute Definition '{}': Attempting to map the following values: {}", getId(), unmappedResults);
+                        ensureId());
+        log.debug("Attribute Definition '{}': Attempting to map the following values: {}", ensureId(), unmappedResults);
 
         // Bucket for results
-        final IdPAttribute resultAttribute = new IdPAttribute(getId());
+        final IdPAttribute resultAttribute = new IdPAttribute(ensureId());
 
         if (unmappedResults == null || unmappedResults.isEmpty()) {
             log.debug("Attribute Definition {}: No values from dependencies", getId());
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/PairwiseIdDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/PairwiseIdDataConnector.java
index 86fdc4daa..a1fd30cc1 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/PairwiseIdDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/PairwiseIdDataConnector.java
@@ -196,7 +196,7 @@ public class PairwiseIdDataConnector extends AbstractDataConnector {
                 PluginDependencySupport.getMergedAttributeValues(workContext,
                         getAttributeDependencies(),
                         getDataConnectorDependencies(),
-                        getId());
+                        ensureId());
         if (attributeValues == null || attributeValues.isEmpty()) {
             log.debug("{} Source attribute {} for connector {} provide no values", getLogPrefix(),
                     getSourceAttributeInformation(), getId());
@@ -296,9 +296,11 @@ public class PairwiseIdDataConnector extends AbstractDataConnector {
             // The message will have been logged above
             return null;
         }
-        final IdPAttribute attribute = new IdPAttribute(getGeneratedAttributeId());
+        final String id = getGeneratedAttributeId();
+        assert id != null;
+        final IdPAttribute attribute = new IdPAttribute(id);
         attribute.setValues(CollectionSupport.singletonList(StringAttributeValue.valueOf(value)));
-        return CollectionSupport.singletonMap(getGeneratedAttributeId(), attribute);
+        return CollectionSupport.singletonMap(id, attribute);
     }
 
 }
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnector.java
index f89bb9cfc..f0461b539 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnector.java
@@ -140,24 +140,15 @@ public class RDBMSDataConnector extends AbstractSearchDataConnector<ExecutableSt
             throw new ResolutionException("Executable statement cannot be null");
         }
         
-        Connection connection = null;
-        try {
-            connection = dataSource.getConnection();
+        
+        try (final Connection connection = dataSource.getConnection()) {
+            assert connection != null;
             try (final ResultSet queryResult = statement.execute(connection)) {
                 log.trace("Data connector '{}': search returned {}", getId(), queryResult);
                 return getMappingStrategy().map(queryResult);
             }
         } catch (final SQLException e) {
             throw new ResolutionException(getLogPrefix() + " Unable to execute SQL query", e);
-        } finally {
-            try {
-                if (connection != null && !connection.isClosed()) {
-                    connection.close();
-                }
-            } catch (final SQLException e) {
-                log.debug("{} Unable to close database connection; SQL State: {}, SQL Code: {}",
-                        new Object[] {getLogPrefix(), e.getSQLState(), e.getErrorCode()}, e);
-            }
         }
     }
 }
\ No newline at end of file
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
index d78f67516..0d543721c 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
@@ -202,6 +202,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
             if (!preRequestedAttributes.isEmpty()) {
                 log.debug("Resolving pre-requested Attributes");
                 for (final String attributeId : preRequestedAttributes) {
+                    assert attributeId != null;
                     resolveAttributeDefinition(attributeId, resolutionContext);
                 }
                 finalizePreResolvedAttributes(resolutionContext);
@@ -720,7 +721,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
         if (prc != null) {
             final MetricContext timerCtx = prc.getSubcontext(MetricContext.class);
             if (timerCtx != null) {
-                timerCtx.start(getId());
+                timerCtx.start(ensureId());
                 return true;
             }
         }
@@ -737,7 +738,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
         if (prc != null) {
             final MetricContext timerCtx = prc.getSubcontext(MetricContext.class);
             if (timerCtx != null) {
-                timerCtx.stop(getId());
+                timerCtx.stop(ensureId());
             }
         }
     }
diff --git a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
index 83afe9620..7c3e85194 100644
--- a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
+++ b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
@@ -94,7 +94,7 @@ public class AttributeResolverImplTest {
         assertTrue(dataCon.isInitialized());
         assertFalse(dataCon.isDestroyed());
 
-        assertEquals(resolver.getId(), "toto");
+        assertEquals(resolver.ensureId(), "toto");
         assertEquals(resolver.getAttributeDefinitions().size(), 1);
         assertTrue(resolver.getAttributeDefinitions().containsKey("foo"));
         assertEquals(resolver.getDataConnectors().size(), 1);
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverServiceStrategy.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverServiceStrategy.java
index 5bbd1169a..08d63554a 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverServiceStrategy.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverServiceStrategy.java
@@ -84,14 +84,14 @@ public class AttributeResolverServiceStrategy extends AbstractIdentifiableInitia
         final AttributeResolverImpl resolver = new AttributeResolverImpl();
         resolver.setAttributeDefinitions(definitions);
         resolver.setDataConnectors(connectors);
-        resolver.setId(getId());
+        resolver.setId(ensureId());
         resolver.setStripNulls(isStripNulls());
         final SpringServiceableComponent<AttributeResolver> result;
         try {
             resolver.initialize();
             result = new SpringServiceableComponent<AttributeResolver>(resolver);
             result.setApplicationContext(appContext);
-            result.setId(getId());
+            result.setId(ensureId());
             result.initialize();
             return result;
         } catch (final ComponentInitializationException e) {
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java
index 224c77058..93e850dba 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java
@@ -512,7 +512,7 @@ public class LDAPDataConnectorParserTest {
 
     protected void doTest(final LDAPDataConnector dataConnector) throws ResolutionException {
 
-        final String id = dataConnector.getId();
+        final String id = dataConnector.ensureId();
         assertEquals(id, "myLDAP");
         assertEquals(dataConnector.getNoRetryDelay(), Duration.ofMinutes(5));
 
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java
index 9d3fbd95f..10db8c591 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java
@@ -169,7 +169,7 @@ public class RDBMSDataConnectorParserTest {
     }
 
     protected void doTest(final RDBMSDataConnector dataConnector) throws ResolutionException {
-        final String id = dataConnector.getId();
+        final String id = dataConnector.ensureId();
         assertEquals("myDatabase", id);
         assertEquals(Duration.ofMinutes(5), dataConnector.getNoRetryDelay());
 

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


More information about the commits mailing list