[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