[java-shib-attribute] 02/02: JSATTR-6: SAML AttributeQuery DataConnector

Brent Putman putmanb at georgetown.edu
Thu Nov 6 03:34:31 UTC 2025


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

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

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

commit ffb28fae95ebb4a8c352415b08ce7aecf5647c0a
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Wed Nov 5 21:24:42 2025 -0500

    JSATTR-6: SAML AttributeQuery DataConnector
    
    Checkstyle fixes.
---
 .../attribute/resolver/dc/saml/ResponseData.java   |  5 +++
 .../impl/AttributeAuthorityEntityIDResolver.java   | 10 ++++++
 .../dc/saml/impl/ExecutableQueryBuilder.java       | 41 ++++++++++++++++------
 .../resolver/dc/saml/impl/SAMLDataConnector.java   | 29 +++++++--------
 .../dc/saml/impl/SelfEntityIDResolver.java         | 11 ++++++
 .../impl/SimpleAggregationSAMLDataConnector.java   | 10 +++---
 .../resolver/dc/saml/impl/SubjectResolver.java     | 11 ++++++
 .../impl/ContextAuthorityEntityIDResolver.java     |  2 +-
 .../impl/DependencyAttributeSubjectResolver.java   |  4 ++-
 .../impl/AttributeAuthorityEntityIDSource.java     |  2 +-
 .../dc/saml/util/impl/DecryptionProcessor.java     |  6 ++--
 .../dc/saml/util/impl/SubjectMatchProcessor.java   |  4 +--
 .../saml/impl/AbstractSAMLDataConnectorParser.java | 12 +++++--
 .../SimpleAggregationSAMLDataConnectorParser.java  |  8 ++---
 .../resolver/spring/dc/saml/impl/package-info.java | 21 +++++++++++
 15 files changed, 132 insertions(+), 44 deletions(-)

diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/ResponseData.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/ResponseData.java
index 9c81e40c5..9b055af80 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/ResponseData.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/ResponseData.java
@@ -105,6 +105,11 @@ public class ResponseData {
         return dependencyAttributes;
     }
     
+    /**
+     * Get the {@link RoleDescriptor} for the attribute authority.
+     * 
+     * @return the role descriptor
+     */ 
     @Nonnull public RoleDescriptor getAttributeAuthorityRoleDescriptor() {
         return attributeAuthorityRoleDescriptor;
     }
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/AttributeAuthorityEntityIDResolver.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/AttributeAuthorityEntityIDResolver.java
index 8345be352..7d8e18bb5 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/AttributeAuthorityEntityIDResolver.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/AttributeAuthorityEntityIDResolver.java
@@ -30,6 +30,16 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
  */
 public interface AttributeAuthorityEntityIDResolver {
     
+    /**
+     * Resolve the entity ID of the attribute authority to use in query.
+     * 
+     * @param resolutionContext the attribute resolution context in effect for the query
+     * @param dependencyAttributes the dependency attributes in effect for the query
+     * 
+     * @return the entity ID, may be null
+     * 
+     * @throws ResolutionException if there is a fatal error during processing
+     */
     @Nullable
     String resolve(@Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException;
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/ExecutableQueryBuilder.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/ExecutableQueryBuilder.java
index f81323c13..ea09d9ddb 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/ExecutableQueryBuilder.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/ExecutableQueryBuilder.java
@@ -210,6 +210,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
     }
 
     /**
+     * Get the attribute authority entity ID resolution strategy.
+     * 
      * @return the strategy
      */
     @NonnullAfterInit public AttributeAuthorityEntityIDResolver getAuthorityEntityIDStrategy() {
@@ -217,6 +219,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
     }
 
     /**
+     * Set the attribute authority entity ID resolution strategy.
+     * 
      * @param strategy the entityID resolution strategy
      */
     public void setAuthorityEntityIDStrategy(
@@ -226,6 +230,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
     }
 
     /**
+     * Get the self entity ID resolution strategy.
+     * 
      * @return the strategy
      */
     @NonnullAfterInit public SelfEntityIDResolver getSelfEntityIDStrategy() {
@@ -233,6 +239,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
     }
 
     /**
+     * Set the self entity ID resolution strategy.
+     * 
      * @param strategy the entityID resolution strategy
      */
     public void setSelfEntityIDStrategy(
@@ -242,6 +250,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
     }
 
     /**
+     * Get the Subject resolution strategy.
+     * 
      * @return the strategy
      */
     @NonnullAfterInit public SubjectResolver getSubjectStrategy() {
@@ -249,6 +259,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
     }
 
     /**
+     * Set the Subject resolution strategy.
+     * 
      * @param strategy the entityID resolution strategy
      */
     public void setSubjectStrategy(
@@ -273,7 +285,7 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
      * 
      * @param attributes the list of attributes to request, may be null or empty
      */
-    public void setRequestedAttributes(@Nullable List<Attribute> attributes) {
+    public void setRequestedAttributes(@Nullable final List<Attribute> attributes) {
         if (attributes == null) {
             requestedAttributes = CollectionSupport.emptyList();
         } else {
@@ -315,6 +327,7 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
     }
 
     /** {@inheritDoc} */
+    // Checkstyle: MethodLength OFF
     @Override
     @Nonnull
     public ExecutableQuery build(@Nonnull final AttributeResolutionContext resolutionContext,
@@ -329,6 +342,7 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
         final InOutOperationContext opContext = buildOperationContext(resolutionContext, dependencyAttributes,
                 authorityRoleDescriptor, authorityEndpoint);
             
+        // Checkstyle: AnonInnerLength OFF
         return new ExecutableQuery() {
 
             /** Logger. */
@@ -393,7 +407,9 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
                 }
             }
         };
+        // Checkstyle: AnonInnerLength ON
     }
+    // Checkstyle: MethodLength ON
 
     /**
      * Resolve the attribute authority entityID.
@@ -405,7 +421,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
      * 
      * @throws ResolutionException if there is a fatal error during processing
      */
-    @Nonnull private String resolveAttributeAuthorityEntityID(@Nonnull final AttributeResolutionContext resolutionContext,
+    @Nonnull private String resolveAttributeAuthorityEntityID(
+            @Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
 
         final String entityID = getAuthorityEntityIDStrategy().resolve(resolutionContext, dependencyAttributes);
@@ -424,8 +441,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
      * 
      * @throws ResolutionException if there is a fatal error during processing
      */
-    @Nonnull private AttributeAuthorityDescriptor resolveAuthorityRoleDescriptor(@Nonnull final String authorityEntityID)
-            throws ResolutionException {
+    @Nonnull private AttributeAuthorityDescriptor resolveAuthorityRoleDescriptor(
+            @Nonnull final String authorityEntityID) throws ResolutionException {
         
         final CriteriaSet criteriaSet = new CriteriaSet(
                 new EntityIdCriterion(authorityEntityID),
@@ -504,7 +521,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
      * 
      * @throws ResolutionException if there is a fatal error during processing
      */
-    @Nonnull private InOutOperationContext buildOperationContext(@Nonnull final AttributeResolutionContext resolutionContext,
+    @Nonnull private InOutOperationContext buildOperationContext(
+            @Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes,
             @Nonnull final AttributeAuthorityDescriptor roleDescriptor, @Nonnull final String endpoint)
                 throws ResolutionException {
@@ -513,15 +531,15 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
 
         try {
             return new SAMLSOAPClientContextBuilder<>()
-                    .setOutboundMessage(buildAttributeQueryMessage(resolutionContext, dependencyAttributes, roleDescriptor,
-                            endpoint, selfEntityID))
+                    .setOutboundMessage(buildAttributeQueryMessage(
+                            resolutionContext, dependencyAttributes, roleDescriptor, endpoint, selfEntityID))
                     .setProtocol(SAMLConstants.SAML20P_NS)
                     .setPipelineName(getSOAPPipelineName())
                     .setPeerRoleDescriptor(roleDescriptor)
                     .setSelfEntityID(selfEntityID)
                     .setSecurityConfigurationProfileId(getSOAPClientSecurityConfigurationProfileId())
                     .build();
-        } catch (MessageException e) {
+        } catch (final MessageException e) {
             throw new ResolutionException("Fatal error building operation context for SAML AttributeQuery", e);
         }
     }
@@ -616,7 +634,7 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
         if (subject != null) {
             try {
                 return XMLObjectSupport.cloneXMLObject(subject);
-            } catch (MarshallingException | UnmarshallingException e) {
+            } catch (final MarshallingException | UnmarshallingException e) {
                 throw new ResolutionException("Error cloning Subject", e);
             }
         }
@@ -634,7 +652,8 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
      * 
      * @throws ResolutionException if there is a fatal error during processing
      */
-    @Nonnull private List <Attribute> buildRequestAttributes(@Nonnull final AttributeResolutionContext resolutionContext,
+    @Nonnull private List <Attribute> buildRequestAttributes(
+            @Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes,
             @Nonnull final AttributeAuthorityDescriptor roleDescriptor) throws ResolutionException {
         
@@ -644,7 +663,7 @@ public class ExecutableQueryBuilder extends AbstractInitializableComponent
             assert attr != null;
             try {
                 attributes.add(XMLObjectSupport.cloneXMLObject(attr));
-            } catch (MarshallingException | UnmarshallingException e) {
+            } catch (final MarshallingException | UnmarshallingException e) {
                 throw new ResolutionException("Error cloning requested Attribute", e);
             }
         }
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SAMLDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SAMLDataConnector.java
index 939756f80..3c0da5324 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SAMLDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SAMLDataConnector.java
@@ -64,7 +64,7 @@ public class SAMLDataConnector extends AbstractSearchDataConnector<ExecutableQue
     @NonnullAfterInit private SubjectMatchProcessor subjectMatchProcessor;
     
     /** Flag indicating whether to perform matching of Assertion subjects against the value in the query. */
-    private boolean subjectMatch = false;
+    private boolean subjectMatch;
     
     /** Constructor. */
     public SAMLDataConnector() {
@@ -100,7 +100,7 @@ public class SAMLDataConnector extends AbstractSearchDataConnector<ExecutableQue
     }
 
     /**
-     * Set the decryption processor
+     * Set the decryption processor.
      * 
      * @param processor the Decryption processor
      */
@@ -119,7 +119,7 @@ public class SAMLDataConnector extends AbstractSearchDataConnector<ExecutableQue
     }
 
     /**
-     * Set the Assertion validation processor
+     * Set the Assertion validation processor.
      * 
      * @param processor the Assertion validation processor
      */
@@ -138,9 +138,9 @@ public class SAMLDataConnector extends AbstractSearchDataConnector<ExecutableQue
     }
 
     /**
-     * Set the Subject match processor
+     * Set the Subject match processor.
      * 
-     * @param processor the Subjet match processor
+     * @param processor the Subject match processor
      */
     public void setSubjectMatchProcessor(@Nullable final SubjectMatchProcessor processor) {
         checkSetterPreconditions();
@@ -169,7 +169,7 @@ public class SAMLDataConnector extends AbstractSearchDataConnector<ExecutableQue
      * 
      * @param flag the flag value
      */
-    public void setSubjectMatch(boolean flag) {
+    public void setSubjectMatch(final boolean flag) {
         checkSetterPreconditions();
         subjectMatch = flag;
     }
@@ -196,7 +196,8 @@ public class SAMLDataConnector extends AbstractSearchDataConnector<ExecutableQue
     /** {@inheritDoc} */
     @Override
     @Nullable
-    protected Map<String, IdPAttribute> retrieveAttributes(@Nonnull final ExecutableQuery executable) throws ResolutionException {
+    protected Map<String, IdPAttribute> retrieveAttributes(@Nonnull final ExecutableQuery executable)
+            throws ResolutionException {
         try {
             final ResponseMappingStrategy strategy = getMappingStrategy();
             final SOAPClient localClient = getSOAPClient();
@@ -227,11 +228,11 @@ public class SAMLDataConnector extends AbstractSearchDataConnector<ExecutableQue
         // Encryption on an AttributeQuery response probably isn't that common, so be efficient.
         // Goal is to only build the Decrypter if/when needed, and only do it once
         // for both Assertions and Assertion content.
-        DecryptionProcessor decryptionProcessor = getDecryptionProcessor();
+        final DecryptionProcessor decryptProcessor = getDecryptionProcessor();
         Decrypter decrypter = null;
-        if (decryptionProcessor.haveEncryptedAssertions(response)) {
-            decrypter = decryptionProcessor.buildDecrypter(responseData);
-            decryptionProcessor.decryptAssertions(response, decrypter);
+        if (decryptProcessor.haveEncryptedAssertions(response)) {
+            decrypter = decryptProcessor.buildDecrypter(responseData);
+            decryptProcessor.decryptAssertions(response, decrypter);
         }
         
         getAssertionValidationProcessor().validateAssertions(response, responseData.getSOAPClientContext());
@@ -240,11 +241,11 @@ public class SAMLDataConnector extends AbstractSearchDataConnector<ExecutableQue
             throw new ResolutionException("SAML Response contained no valid Assertions");
         }
         
-        if (decryptionProcessor.haveEncryptedContent(response)) {
+        if (decryptProcessor.haveEncryptedContent(response)) {
             if (decrypter == null) {
-                decrypter = decryptionProcessor.buildDecrypter(responseData);
+                decrypter = decryptProcessor.buildDecrypter(responseData);
             }
-            decryptionProcessor.decryptAssertionContent(response, decrypter);
+            decryptProcessor.decryptAssertionContent(response, decrypter);
         }
         
         if (isSubjectMatch()) {
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SelfEntityIDResolver.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SelfEntityIDResolver.java
index 2163a9f8b..145117148 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SelfEntityIDResolver.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SelfEntityIDResolver.java
@@ -32,6 +32,17 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
  */
 public interface SelfEntityIDResolver {
     
+    /**
+     * Resolve the self entity ID to use in query.
+     * 
+     * @param resolutionContext the attribute resolution context in effect for the query
+     * @param dependencyAttributes the dependency attributes in effect for the query
+     * @param roleDescriptor the attribute authority role descriptor for the query
+     * 
+     * @return the entity ID, may be null
+     * 
+     * @throws ResolutionException if there is a fatal error during processing
+     */
     @Nullable
     String resolve(@Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes,
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SimpleAggregationSAMLDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SimpleAggregationSAMLDataConnector.java
index c03595569..587fad3ad 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SimpleAggregationSAMLDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SimpleAggregationSAMLDataConnector.java
@@ -40,6 +40,7 @@ import net.shibboleth.idp.attribute.resolver.dc.saml.util.impl.AttributeAuthorit
 import net.shibboleth.idp.attribute.resolver.dc.saml.util.impl.AttributeAuthorityEntityIDReference;
 import net.shibboleth.idp.attribute.resolver.dc.saml.util.impl.AttributeAuthorityEntityIDSource;
 import net.shibboleth.idp.attribute.resolver.dc.saml.util.impl.AttributeAuthorityEntityIDValue;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.collection.CollectionSupport;
@@ -56,7 +57,7 @@ public class SimpleAggregationSAMLDataConnector extends AbstractDataConnector {
     private Logger log = LoggerFactory.getLogger(SimpleAggregationSAMLDataConnector.class);
     
     /** The SAML Data Connector which performs the actual attribute resolution operations. */
-    private SAMLDataConnector queryConnector;
+    @NonnullAfterInit private SAMLDataConnector queryConnector;
     
     /** Sources of attribute authority entityIDs. */
     @Nonnull private List<AttributeAuthorityEntityIDSource> entityIDSources = CollectionSupport.emptyList();
@@ -75,7 +76,7 @@ public class SimpleAggregationSAMLDataConnector extends AbstractDataConnector {
      * 
      * @param connector the data connector instance
      */
-    public void setQueryConnector(SAMLDataConnector connector) {
+    public void setQueryConnector(@Nullable final SAMLDataConnector connector) {
         checkSetterPreconditions();
         queryConnector = connector;
     }
@@ -122,7 +123,8 @@ public class SimpleAggregationSAMLDataConnector extends AbstractDataConnector {
     /** {@inheritDoc} */
     @Override
     @Nullable
-    protected Map<String, IdPAttribute> doDataConnectorResolve(@Nonnull final AttributeResolutionContext resolutionContext,
+    protected Map<String, IdPAttribute> doDataConnectorResolve(
+            @Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
         checkComponentActive();
         
@@ -184,7 +186,7 @@ public class SimpleAggregationSAMLDataConnector extends AbstractDataConnector {
         // Don't resolve these unless/until we actually need them below
         Map<String, List<IdPAttributeValue>> dependencyAttributes = null;
         
-        for (AttributeAuthorityEntityIDSource source : getEntityIDSources()) {
+        for (final AttributeAuthorityEntityIDSource source : getEntityIDSources()) {
             if (source instanceof AttributeAuthorityEntityIDValue) {
                 entityIDs.add(source.getValue());
             } else if (source instanceof AttributeAuthorityEntityIDReference) {
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SubjectResolver.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SubjectResolver.java
index 2a654e05b..a707eee93 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SubjectResolver.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/impl/SubjectResolver.java
@@ -33,6 +33,17 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
  */
 public interface SubjectResolver {
     
+    /**
+     * Resolve the {@link Subject} to use in query.
+     * 
+     * @param resolutionContext the attribute resolution context in effect for the query
+     * @param dependencyAttributes the dependency attributes in effect for the query
+     * @param roleDescriptor the attribute authority role descriptor for the query
+     * 
+     * @return the subject, may be null
+     * 
+     * @throws ResolutionException if there is a fatal error during processing
+     */
     @Nullable
     Subject resolve(@Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes,
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/plugin/impl/ContextAuthorityEntityIDResolver.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/plugin/impl/ContextAuthorityEntityIDResolver.java
index 9d9cadcd4..7b7c64f17 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/plugin/impl/ContextAuthorityEntityIDResolver.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/plugin/impl/ContextAuthorityEntityIDResolver.java
@@ -37,7 +37,7 @@ public class ContextAuthorityEntityIDResolver implements AttributeAuthorityEntit
     @Override
     @Nullable
     public String resolve(@Nonnull final AttributeResolutionContext resolutionContext,
-            @Nonnull Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
+            @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
         
         final AttributeAuthorityEntityIDContext context =
                 resolutionContext.getSubcontext(AttributeAuthorityEntityIDContext.class);
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/plugin/impl/DependencyAttributeSubjectResolver.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/plugin/impl/DependencyAttributeSubjectResolver.java
index f9fbd324b..bdbd30d8d 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/plugin/impl/DependencyAttributeSubjectResolver.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/plugin/impl/DependencyAttributeSubjectResolver.java
@@ -60,7 +60,7 @@ import net.shibboleth.shared.xml.SerializeSupport;
 public class DependencyAttributeSubjectResolver extends AbstractInitializableComponent  implements SubjectResolver {
     
     /** Logger. */
-    @Nonnull final Logger log = LoggerFactory.getLogger(DependencyAttributeSubjectResolver.class);
+    @Nonnull private final Logger log = LoggerFactory.getLogger(DependencyAttributeSubjectResolver.class);
     
     /** List of dependency attribute IDs to search for a value. */
     @Nonnull private List<String> attributeIDs = CollectionSupport.emptyList();
@@ -144,6 +144,7 @@ public class DependencyAttributeSubjectResolver extends AbstractInitializableCom
     }
 
     /** {@inheritDoc} */
+    // Checkstyle: CyclomaticComplexity OFF
     @Override
     @Nullable
     public Subject resolve(@Nonnull final AttributeResolutionContext resolutionContext,
@@ -192,6 +193,7 @@ public class DependencyAttributeSubjectResolver extends AbstractInitializableCom
         log.debug("Could not resolve Subject based on dependency attributes");
         return null;
     }
+    // Checkstyle: CyclomaticComplexity ON
 
     /**
      * Build a Subject using the specified string as the NameID value.
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/AttributeAuthorityEntityIDSource.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/AttributeAuthorityEntityIDSource.java
index b52e0696c..3be840dcf 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/AttributeAuthorityEntityIDSource.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/AttributeAuthorityEntityIDSource.java
@@ -40,7 +40,7 @@ public abstract class AttributeAuthorityEntityIDSource {
     }
 
     /**
-     * Get the source value
+     * Get the source value.
      * 
      * @return the value 
      */
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/DecryptionProcessor.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/DecryptionProcessor.java
index 4b5cc4dd6..7531c7c17 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/DecryptionProcessor.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/DecryptionProcessor.java
@@ -138,12 +138,12 @@ public class DecryptionProcessor extends AbstractInitializableComponent {
      * @return true if Response contains EncryptedID or EncryptedAttribute elements, otherwise false
      */
     public boolean haveEncryptedContent(@Nonnull final Response response) {
-        for (Assertion assertion : response.getAssertions()) {
+        for (final Assertion assertion : response.getAssertions()) {
             final Subject subject = assertion.getSubject();
             if (subject != null && subject.getEncryptedID() != null) {
                 return true;
             }
-            for (AttributeStatement statement : assertion.getAttributeStatements()) {
+            for (final AttributeStatement statement : assertion.getAttributeStatements()) {
                 if (statement.getEncryptedAttributes().size() > 0) {
                     return true;
                 }
@@ -285,7 +285,7 @@ public class DecryptionProcessor extends AbstractInitializableComponent {
             }
             throw new DecryptionException("Decrypted EncryptedID was not a NameID, was a "
                     + object.getElementQName().toString());
-        } catch (DecryptionException e) {
+        } catch (final DecryptionException e) {
             throw new ResolutionException("Error decryptng EncryptedID", e);
         }
     }
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/SubjectMatchProcessor.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/SubjectMatchProcessor.java
index c530395ad..e1d8c1ea7 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/SubjectMatchProcessor.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/saml/util/impl/SubjectMatchProcessor.java
@@ -52,12 +52,12 @@ public class SubjectMatchProcessor {
         // We know these are all non-null because we created them
         final MessageContext outboundContext = responseData.getSOAPClientContext().getOutboundMessageContext();
         assert outboundContext != null;
-        final AttributeQuery query = ((AttributeQuery)outboundContext.getMessage());
+        final AttributeQuery query = (AttributeQuery)outboundContext.getMessage();
         assert query != null;
         final Subject querySubject = query.getSubject();
         assert querySubject != null;
         
-        List<Assertion> toRemove = new LinkedList<>();
+        final List<Assertion> toRemove = new LinkedList<>();
         
         for (final Assertion assertion : responseData.getResponse().getAssertions()) {
             final Issuer assertionIssuer = assertion.getIssuer();
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/AbstractSAMLDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/AbstractSAMLDataConnectorParser.java
index 04c5fd23f..987172b4e 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/AbstractSAMLDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/AbstractSAMLDataConnectorParser.java
@@ -117,6 +117,7 @@ public abstract class AbstractSAMLDataConnectorParser extends AbstractDataConnec
     /** Map of custom bean properties for bean wiring. */
     @Nonnull private final Map<String,CustomPropertyValue> resolvedCustomProperties = new HashMap<>();
     
+    /** Logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractSAMLDataConnectorParser.class);
     
     /** Constructor. */
@@ -167,7 +168,7 @@ public abstract class AbstractSAMLDataConnectorParser extends AbstractDataConnec
     protected BeanDefinition parseSAMLDataConnector(@Nonnull final Element config,
             @Nonnull final ParserContext parserContext) {
 
-        BeanDefinitionBuilder samlBuilder = BeanDefinitionBuilder.genericBeanDefinition(SAMLDataConnector.class);
+        final BeanDefinitionBuilder samlBuilder = BeanDefinitionBuilder.genericBeanDefinition(SAMLDataConnector.class);
         
         // Because this is a an ID-ed component, must have an ID, so just use a suffixed value
         // based on owning connector's ID
@@ -230,6 +231,8 @@ public abstract class AbstractSAMLDataConnectorParser extends AbstractDataConnec
     }
 
     /**
+     * Parse the query builder.
+     * 
      * @param config the configuration element
      * @param parserContext the current parser context
      * @return the bean definition
@@ -465,6 +468,7 @@ public abstract class AbstractSAMLDataConnectorParser extends AbstractDataConnec
         /** Flag indicating whether property is required. */
         private boolean required;
         
+        /** Property default value. */
         @Nullable private String defaultValue;
 
        /**
@@ -495,12 +499,14 @@ public abstract class AbstractSAMLDataConnectorParser extends AbstractDataConnec
          * @param isRequired is property required
          * @param defaultVal the default value
          */
+        // Checkstyle: ParameterNumber OFF
         protected CustomPropertyDef(@Nonnull final Class<?> prefixClass, @Nonnull final String propName,
                 @Nonnull final String propType, final boolean isReference, final boolean isRequired,
                 @Nullable final String defaultVal) {
             this(prefixClass, propName, propType, isReference, isRequired);
             defaultValue = StringSupport.trimOrNull(defaultVal);
         }
+        // Checkstyle: ParameterNumber ON
 
         /**
          * Get the property class prefix.
@@ -548,7 +554,7 @@ public abstract class AbstractSAMLDataConnectorParser extends AbstractDataConnec
         }
 
         /**
-         * Get the default value
+         * Get the default value.
          * 
          * @return the default value
          */
@@ -579,7 +585,7 @@ public abstract class AbstractSAMLDataConnectorParser extends AbstractDataConnec
         }
 
         /**
-         * Get the property value
+         * Get the property value.
          * 
          * @return the value
          */
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/SimpleAggregationSAMLDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/SimpleAggregationSAMLDataConnectorParser.java
index 3a3d01036..4b0f2b393 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/SimpleAggregationSAMLDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/SimpleAggregationSAMLDataConnectorParser.java
@@ -48,6 +48,10 @@ import net.shibboleth.shared.xml.QNameSupport;
  */
 public class SimpleAggregationSAMLDataConnectorParser extends AbstractSAMLDataConnectorParser {
     
+    /** Schema type - resolver. */
+    @Nonnull public static final QName TYPE_NAME =
+            new QName(AttributeResolverNamespaceHandler.NAMESPACE, "SimpleAggregationSAML");
+
     /** Map of custom property definitions for bean wiring. */
     @Nonnull private static final Map<String,CustomPropertyDef> CUSTOM_PROPERTY_DEFS = new HashMap<>();
     static {
@@ -56,10 +60,6 @@ public class SimpleAggregationSAMLDataConnectorParser extends AbstractSAMLDataCo
                         "SelfEntityIDResolver", "bean", true, true));
     }
     
-    /** Schema type - resolver. */
-    @Nonnull public static final QName TYPE_NAME =
-            new QName(AttributeResolverNamespaceHandler.NAMESPACE, "SimpleAggregationSAML");
-
     /** QName of <Entity> child element. */
     private static final QName ENTITY = new QName(AttributeResolverNamespaceHandler.NAMESPACE, "Entity");
 
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/package-info.java
new file mode 100644
index 000000000..5a07ddff7
--- /dev/null
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/saml/impl/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * The parser for the SAML Data connectors.
+ */
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.dc.saml.impl;
+
+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