[java-shib-attribute] branch main updated: IDP-2083 - Treat NonnullElements as the default for collections
Scott Cantor
cantor.2 at osu.edu
Wed May 3 16:56:50 UTC 2023
This is an automated email from the git hooks/post-receive script.
scantor 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=b8ddea86ed545a0d67bf39db28014c2eeb93723c
The following commit(s) were added to refs/heads/main by this push:
new b8ddea86e IDP-2083 - Treat NonnullElements as the default for collections
b8ddea86e is described below
commit b8ddea86ed545a0d67bf39db28014c2eeb93723c
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed May 3 12:56:47 2023 -0400
IDP-2083 - Treat NonnullElements as the default for collections
https://shibboleth.atlassian.net/browse/IDP-2083
Review rest of java-shib-attribute.
Tighten method annotations where needed.
---
.../attribute/filter/spring/BaseFilterParser.java | 25 ++++---
.../filter/spring/basic/impl/package-info.java | 5 +-
.../impl/AttributeFilterPolicyGroupParser.java | 1 +
.../impl/AttributeFilterServiceStrategy.java | 2 +-
.../attribute/filter/spring/impl/package-info.java | 4 +-
.../matcher/BaseAttributeValueMatcherParser.java | 2 +-
.../filter/spring/matcher/impl/package-info.java | 4 +-
.../filter/spring/matcher/package-info.java | 5 +-
.../idp/attribute/filter/spring/package-info.java | 3 +-
.../impl/AbstractRegexPolicyRuleParser.java | 2 +
.../impl/AbstractStringPolicyRuleParser.java | 7 +-
.../spring/policyrule/impl/package-info.java | 4 +-
.../filter/spring/policyrule/package-info.java | 4 +-
.../AbstractRegistrationAuthorityRuleParser.java | 4 +-
.../RequesterEntityAttributeExactRuleParser.java | 1 -
.../RequesterEntityAttributeRegexRuleParser.java | 1 -
.../saml/impl/ScopeMatchesShibMDScopeParser.java | 1 +
.../saml/impl/ValueMatchesShibMDScopeParser.java | 1 +
.../filter/spring/saml/impl/package-info.java | 5 +-
.../attribute/resolver/AbstractDataConnector.java | 27 ++++----
.../attribute/resolver/AbstractResolverPlugin.java | 27 +++-----
.../attribute/resolver/AttributeDefinition.java | 1 +
.../idp/attribute/resolver/DataConnector.java | 9 ++-
.../resolver/PluginDependencySupport.java | 35 ++++------
.../attribute/resolver/ResolvedDataConnector.java | 4 +-
.../resolver/ResolverDataConnectorDependency.java | 8 +--
.../idp/attribute/resolver/ResolverPlugin.java | 6 +-
.../context/AttributeResolutionContext.java | 25 ++++---
.../context/AttributeResolverWorkContext.java | 11 ++--
.../resolver/context/navigate/package-info.java | 4 +-
.../attribute/resolver/context/package-info.java | 4 +-
.../resolver/dc/AbstractMappingStrategy.java | 20 ++----
.../attribute/resolver/dc/ExecutableSearch.java | 1 +
.../resolver/dc/ExecutableSearchBuilder.java | 3 +-
.../idp/attribute/resolver/dc/MappingStrategy.java | 4 +-
.../resolver/dc/NonFailFastValidator.java | 76 ----------------------
.../idp/attribute/resolver/dc/Validator.java | 7 +-
.../attribute/resolver/dc/http/package-info.java | 7 +-
.../AbstractExecutableSearchFilterBuilder.java | 2 +-
...ParameterizedExecutableSearchFilterBuilder.java | 16 ++---
.../dc/ldap/SearchResultMappingStrategy.java | 1 +
.../ldap/StringAttributeValueMappingStrategy.java | 7 +-
.../TemplatedExecutableSearchFilterBuilder.java | 53 +++++++--------
.../attribute/resolver/dc/ldap/package-info.java | 5 +-
.../idp/attribute/resolver/dc/package-info.java | 4 +-
.../rdbms/AbstractExecutableStatementBuilder.java | 2 +-
.../resolver/dc/rdbms/ExecutableStatement.java | 1 +
.../dc/rdbms/FormatExecutableStatementBuilder.java | 6 +-
.../resolver/dc/rdbms/ResultMappingStrategy.java | 1 +
.../dc/rdbms/StringResultMappingStrategy.java | 7 +-
.../rdbms/TemplatedExecutableStatementBuilder.java | 52 +++++++--------
.../attribute/resolver/dc/rdbms/package-info.java | 7 +-
.../resolver/dc/storage/package-info.java | 4 +-
.../resolver/logic/AttributeIssuerIdPredicate.java | 6 +-
.../logic/AttributePrincipalPredicate.java | 6 +-
.../logic/AttributeRecipientIdPredicate.java | 6 +-
.../resolver/logic/ResolutionLabelPredicate.java | 11 ++--
.../idp/attribute/resolver/logic/package-info.java | 4 +-
.../idp/attribute/resolver/package-info.java | 4 +-
.../resolver/scripted/ScriptedIdPAttribute.java | 9 +--
.../attribute/resolver/scripted/package-info.java | 4 +-
.../ad/impl/ScopedAttributeDefinition.java | 4 +-
.../ad/impl/ScriptedAttributeDefinition.java | 6 +-
.../resolver/ad/impl/ScriptedIdPAttributeImpl.java | 28 ++++----
.../ad/impl/TemplateAttributeDefinition.java | 10 ++-
.../attribute/resolver/ad/impl/package-info.java | 4 +-
.../ad/mapped/impl/MappedAttributeDefinition.java | 11 ++--
.../resolver/ad/mapped/impl/SourceValue.java | 4 +-
.../resolver/ad/mapped/impl/ValueMap.java | 9 +--
.../resolver/ad/mapped/impl/package-info.java | 4 +-
.../dc/http/impl/AbstractHTTPSearchBuilder.java | 13 ++--
.../resolver/dc/http/impl/HTTPDataConnector.java | 8 ++-
.../http/impl/ScriptedResponseMappingStrategy.java | 11 ++--
.../dc/http/impl/TemplatedBodyBuilder.java | 4 +-
.../resolver/dc/http/impl/TemplatedURLBuilder.java | 4 +-
.../resolver/dc/http/impl/package-info.java | 5 +-
.../dc/impl/AbstractSearchDataConnector.java | 9 ++-
.../dc/impl/ContextDerivedDataConnector.java | 5 +-
.../resolver/dc/impl/PairwiseIdDataConnector.java | 7 +-
.../resolver/dc/impl/ScriptedDataConnector.java | 12 ++--
.../resolver/dc/impl/StaticDataConnector.java | 12 ++--
.../attribute/resolver/dc/impl/package-info.java | 4 +-
.../dc/ldap/impl/ConnectionFactoryValidator.java | 2 +-
.../resolver/dc/ldap/impl/LDAPDataConnector.java | 6 +-
.../resolver/dc/ldap/impl/package-info.java | 4 +-
.../dc/rdbms/impl/DataSourceValidator.java | 10 ++-
.../resolver/dc/rdbms/impl/RDBMSDataConnector.java | 7 +-
.../resolver/dc/rdbms/impl/package-info.java | 4 +-
.../impl/ScriptedStorageMappingStrategy.java | 4 +-
.../storage/impl/SimpleStorageMappingStrategy.java | 5 +-
.../storage/impl/StorageServiceDataConnector.java | 2 +-
.../dc/storage/impl/TemplatedSearchBuilder.java | 2 +-
.../resolver/dc/storage/impl/package-info.java | 4 +-
.../resolver/impl/AttributeResolverImpl.java | 54 +++++++--------
.../idp/attribute/resolver/impl/package-info.java | 4 +-
.../SubjectDerivedAttributeDefinitionParser.java | 2 +-
.../resolver/spring/ad/impl/package-info.java | 4 +-
.../spring/ad/mapped/impl/package-info.java | 4 +-
.../attribute/resolver/spring/ad/package-info.java | 6 +-
.../resolver/spring/dc/http/impl/package-info.java | 4 +-
.../resolver/spring/dc/impl/package-info.java | 4 +-
.../resolver/spring/dc/ldap/impl/package-info.java | 2 +
.../attribute/resolver/spring/dc/package-info.java | 4 +-
.../spring/dc/rdbms/impl/package-info.java | 2 +
.../spring/dc/storage/impl/package-info.java | 4 +-
.../resolver/spring/enc/impl/package-info.java | 4 +-
.../resolver/spring/enc/package-info.java | 4 +-
.../resolver/spring/impl/package-info.java | 4 +-
.../attribute/resolver/spring/package-info.java | 4 +-
.../spring/AttributeMappingNodeProcessorTest.java | 1 +
110 files changed, 470 insertions(+), 443 deletions(-)
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/BaseFilterParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/BaseFilterParser.java
index 062e16280..694bfb0c3 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/BaseFilterParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/BaseFilterParser.java
@@ -34,7 +34,6 @@ import org.w3c.dom.Element;
import com.google.common.base.Strings;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -77,7 +76,8 @@ public abstract class BaseFilterParser extends AbstractCustomBeanDefinitionParse
@Nonnull @NotEmpty public static final String QUALIFIED_ID = "qualifiedId";
/** Generator of unique IDs. */
- @Nonnull private static IdentifierGenerationStrategy idGen = IdentifierGenerationStrategy.getInstance(ProviderType.RANDOM);
+ @Nonnull private static IdentifierGenerationStrategy idGen =
+ IdentifierGenerationStrategy.getInstance(ProviderType.RANDOM);
/** Class logger. */
@Nonnull private static final Logger LOG = LoggerFactory.getLogger(BaseFilterParser.class);
@@ -226,8 +226,7 @@ public abstract class BaseFilterParser extends AbstractCustomBeanDefinitionParse
* @return list of bean definitions
*/
@Nullable public static ManagedList<BeanDefinition> parseCustomElements(
- @Nullable @NonnullElements final Collection<Element> elements,
- @Nonnull final ParserContext parserContext,
+ @Nullable final Collection<Element> elements, @Nonnull final ParserContext parserContext,
@Nonnull final BeanDefinitionBuilder parentBuilder) {
if (elements == null) {
@@ -238,18 +237,18 @@ public abstract class BaseFilterParser extends AbstractCustomBeanDefinitionParse
final ManagedList<BeanDefinition> definitions = new ManagedList<>(elements.size());
final HashSet<String> beanNames = new HashSet<>(elements.size());
for (final Element e : elements) {
- if (e != null) {
- final BeanDefinition def = SpringSupport.parseCustomElement(e, parserContext, parentBuilder, false);
- if (def != null) {
- definitions.add(def);
- final Object name = def.getAttribute(QUALIFIED_ID);
- if (name != null && !beanNames.add(name.toString())) {
- LOG.warn("Duplicate filter element name {} found", name);
- }
+ assert e != null;
+ final BeanDefinition def = SpringSupport.parseCustomElement(e, parserContext, parentBuilder, false);
+ if (def != null) {
+ definitions.add(def);
+ final Object name = def.getAttribute(QUALIFIED_ID);
+ if (name != null && !beanNames.add(name.toString())) {
+ LOG.warn("Duplicate filter element name {} found", name);
}
}
}
return definitions;
}
-}
+
+}
\ No newline at end of file
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/impl/package-info.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/impl/package-info.java
index 8707d231e..7dc2a85e4 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/impl/package-info.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/basic/impl/package-info.java
@@ -16,8 +16,9 @@
*/
/**
- * Parsers for the top level of the "urn:mace:shibboleth:2.0:afp:mf:basic" namespace.
+ * Parsers for simple matchers.
*/
-
+ at NonnullElements
package net.shibboleth.idp.attribute.filter.spring.basic.impl;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterPolicyGroupParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterPolicyGroupParser.java
index c751215d3..cdf165811 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterPolicyGroupParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterPolicyGroupParser.java
@@ -47,6 +47,7 @@ import net.shibboleth.shared.xml.ElementSupport;
* </p>
*/
public class AttributeFilterPolicyGroupParser implements BeanDefinitionParser {
+
/** Schema type name. */
@Nonnull public static final QName TYPE_NAME = new QName(BaseFilterParser.NAMESPACE,
"AttributeFilterPolicyGroupType");
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 572da726c..ed6d5e340 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
@@ -46,7 +46,7 @@ public class AttributeFilterServiceStrategy extends AbstractIdentifiableInitiali
NonnullFunction<ApplicationContext, ServiceableComponent<AttributeFilter>> {
/** log. */
- private final Logger log = LoggerFactory.getLogger(AttributeFilterServiceStrategy.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(AttributeFilterServiceStrategy.class);
/** {@inheritDoc} */
@Nonnull
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/package-info.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/package-info.java
index 7460bb73e..1cc8ee207 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/package-info.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* Parsers for the top level of the "urn:mace:shibboleth:2.0:afp" namespace.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.filter.spring.impl;
-package net.shibboleth.idp.attribute.filter.spring.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/BaseAttributeValueMatcherParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/BaseAttributeValueMatcherParser.java
index 522c2d527..ac2145dfe 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/BaseAttributeValueMatcherParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/BaseAttributeValueMatcherParser.java
@@ -59,7 +59,7 @@ import net.shibboleth.idp.attribute.filter.spring.BaseFilterParser;
public abstract class BaseAttributeValueMatcherParser extends BaseFilterParser {
/** ATTRIBUTE ID string. */
- public static final String ATTRIBUTE_ID = "attributeID";
+ @Nonnull public static final String ATTRIBUTE_ID = "attributeID";
/**
* Helper function to determine if the Attribute Matcher has the attribute Id Specified. This influences decisions
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/impl/package-info.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/impl/package-info.java
index a1994488b..a06435936 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/impl/package-info.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/impl/package-info.java
@@ -23,5 +23,7 @@
* {@link net.shibboleth.idp.attribute.filter.spring.matcher.BaseAttributeValueMatcherParser}.
* </p>
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.filter.spring.matcher.impl;
-package net.shibboleth.idp.attribute.filter.spring.matcher.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/package-info.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/package-info.java
index 6d1bbd53c..b3913eb71 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/package-info.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/package-info.java
@@ -18,7 +18,8 @@
/**
* Base class for parsers parse beans which are natural "Matchers" (that is to say that
* they look at attribute values).
- *
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.filter.spring.matcher;
-package net.shibboleth.idp.attribute.filter.spring.matcher;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/package-info.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/package-info.java
index c9822854a..5ea582632 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/package-info.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/package-info.java
@@ -18,6 +18,7 @@
/**
* The base class for filter other parser is located here.
*/
-
+ at NonnullElements
package net.shibboleth.idp.attribute.filter.spring;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractRegexPolicyRuleParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractRegexPolicyRuleParser.java
index e4e0ce487..63fb858ef 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractRegexPolicyRuleParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractRegexPolicyRuleParser.java
@@ -34,6 +34,7 @@ import org.w3c.dom.Element;
public abstract class AbstractRegexPolicyRuleParser extends BasePolicyRuleParser {
/** {@inheritDoc} */
+ @Override
protected void doNativeParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
@Nonnull final BeanDefinitionBuilder builder) {
super.doParse(config, builder);
@@ -55,4 +56,5 @@ public abstract class AbstractRegexPolicyRuleParser extends BasePolicyRuleParser
builder.addPropertyValue("pattern", pattern.getBeanDefinition());
}
+
}
\ No newline at end of file
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java
index e93b67e94..d0058c458 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java
@@ -32,7 +32,8 @@ import net.shibboleth.shared.primitive.StringSupport;
public abstract class AbstractStringPolicyRuleParser extends BasePolicyRuleParser {
/** {@inheritDoc} */
- @Override protected void doNativeParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
+ @Override
+ protected void doNativeParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
@Nonnull final BeanDefinitionBuilder builder) {
super.doParse(element, builder);
@@ -42,5 +43,7 @@ public abstract class AbstractStringPolicyRuleParser extends BasePolicyRuleParse
builder.addPropertyValue("caseSensitive",
StringSupport.trimOrNull(element.getAttributeNS(null, "caseSensitive")));
- } }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/package-info.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/package-info.java
index 435947916..1671a688b 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/package-info.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/package-info.java
@@ -21,5 +21,7 @@
* Nearly all the work is done in
* {@link net.shibboleth.idp.attribute.filter.spring.policyrule.BasePolicyRuleParser}
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.filter.spring.policyrule.impl;
-package net.shibboleth.idp.attribute.filter.spring.policyrule.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/package-info.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/package-info.java
index 2232de2bb..b9196fdfa 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/package-info.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/package-info.java
@@ -19,5 +19,7 @@
* Base parser for filters that are natural policy rules (that is to make their
* decisions based on the context, not the attribute values are implemented.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.filter.spring.policyrule;
-package net.shibboleth.idp.attribute.filter.spring.policyrule;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AbstractRegistrationAuthorityRuleParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AbstractRegistrationAuthorityRuleParser.java
index 55f29d810..45f8b574d 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AbstractRegistrationAuthorityRuleParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AbstractRegistrationAuthorityRuleParser.java
@@ -34,10 +34,10 @@ import net.shibboleth.shared.spring.util.SpringSupport;
public abstract class AbstractRegistrationAuthorityRuleParser extends BasePolicyRuleParser {
/** Name of the attribute carrying the Issuers list. */
- public static final String REGISTRARS_ATTR_NAME = "registrars";
+ @Nonnull public static final String REGISTRARS_ATTR_NAME = "registrars";
/** Name of the attribute carrying the boolean to flag behaviour if the metadata MDRPI. */
- public static final String MATCH_IF_METADATA_SILENT_ATTR_NAME = "matchIfMetadataSilent";
+ @Nonnull public static final String MATCH_IF_METADATA_SILENT_ATTR_NAME = "matchIfMetadataSilent";
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(AbstractRegistrationAuthorityRuleParser.class);
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/RequesterEntityAttributeExactRuleParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/RequesterEntityAttributeExactRuleParser.java
index 227a5101d..e0daff409 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/RequesterEntityAttributeExactRuleParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/RequesterEntityAttributeExactRuleParser.java
@@ -33,7 +33,6 @@ public class RequesterEntityAttributeExactRuleParser extends AbstractEntityAttri
"EntityAttributeExactMatch");
@Override @Nonnull protected Class<RequesterEntityAttributeExactPolicyRule> getNativeBeanClass() {
-
return RequesterEntityAttributeExactPolicyRule.class;
}
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/RequesterEntityAttributeRegexRuleParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/RequesterEntityAttributeRegexRuleParser.java
index 4c5741c54..382829de5 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/RequesterEntityAttributeRegexRuleParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/RequesterEntityAttributeRegexRuleParser.java
@@ -34,7 +34,6 @@ public class RequesterEntityAttributeRegexRuleParser extends AbstractEntityAttri
/** {@inheritDoc} */
@Override @Nonnull protected Class<RequesterEntityAttributeRegexPolicyRule> getNativeBeanClass() {
-
return RequesterEntityAttributeRegexPolicyRule.class;
}
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/ScopeMatchesShibMDScopeParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/ScopeMatchesShibMDScopeParser.java
index 11a4d901a..926fa0abe 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/ScopeMatchesShibMDScopeParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/ScopeMatchesShibMDScopeParser.java
@@ -43,6 +43,7 @@ public class ScopeMatchesShibMDScopeParser extends BaseAttributeValueMatcherPars
}
/** {@inheritDoc} */
+ @Override
protected void doNativeParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
@Nonnull final BeanDefinitionBuilder builder) {
// Nothing to do
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/ValueMatchesShibMDScopeParser.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/ValueMatchesShibMDScopeParser.java
index e18d8d74d..d7208fe50 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/ValueMatchesShibMDScopeParser.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/ValueMatchesShibMDScopeParser.java
@@ -43,6 +43,7 @@ public class ValueMatchesShibMDScopeParser extends BaseAttributeValueMatcherPars
}
/** {@inheritDoc} */
+ @Override
protected void doNativeParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
@Nonnull final BeanDefinitionBuilder builder) {
// Nothing to do
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/package-info.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/package-info.java
index bc42a3e63..da37785e7 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/package-info.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/package-info.java
@@ -16,13 +16,14 @@
*/
/**
- * Parsers for the top level of the "urn:mace:shibboleth:2.0:saml" namespace.
+ * Parsers for the SAML rules.
*
* <p>
* These are all "policy" type <MatchFunctorType> rules and so all
* the parsers are based on {@link net.shibboleth.idp.attribute.filter.spring.policyrule.BasePolicyRuleParser}.
* </p>
*/
-
+ at NonnullElements
package net.shibboleth.idp.attribute.filter.spring.saml.impl;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
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 0747f096f..db4947fdf 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
@@ -31,8 +31,8 @@ import org.slf4j.Logger;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
@@ -63,7 +63,7 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
@Nonnull private Duration noRetryDelay;
/** Which named attributes do we release?. */
- @Nonnull @NonnullElements @Unmodifiable private Collection<String> exportAttributes;
+ @Nonnull @Unmodifiable private Collection<String> exportAttributes;
/** Constructor. */
public AbstractDataConnector() {
@@ -151,13 +151,13 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
*
* @param what the list
*/
- public void setExportAttributes(@Nonnull @NonnullElements final Collection<String> what) {
+ public void setExportAttributes(@Nonnull final Collection<String> what) {
checkSetterPreconditions();
exportAttributes = CollectionSupport.copyToSet(what);
}
/** {@inheritDoc} */
- @Nonnull @NonnullElements @Unmodifiable public Collection<String> getExportAttributes() {
+ @Nonnull @Unmodifiable @NotLive public Collection<String> getExportAttributes() {
return exportAttributes;
}
@@ -177,7 +177,7 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
* extension point for introducing new common behavior.
*/
@Override
- @Nullable public final Map<String, IdPAttribute> doResolve(
+ @Nullable @Unmodifiable @NotLive public final Map<String,IdPAttribute> doResolve(
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
@@ -194,14 +194,17 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
}
if (null == result) {
- log.debug("{} no attributes were produced during resolution", getId());
+ log.debug("{} No attributes were produced during resolution", getId());
return result;
}
- log.debug("{} produced the following {} attributes during resolution {}", new Object[] {getLogPrefix(),
- result.size(), result.keySet(),});
- for (final String attrName : result.keySet()) {
- final IdPAttribute attr = result.get(attrName);
- log.debug("{} Attribute '{}': Values '{}'", new Object[] {getLogPrefix(), attrName, attr.getValues(),});
+
+ if (log.isDebugEnabled()) {
+ log.debug("{} Produced the following {} attributes during resolution {}", new Object[] {getLogPrefix(),
+ result.size(), result.keySet(),});
+ for (final String attrName : result.keySet()) {
+ final IdPAttribute attr = result.get(attrName);
+ log.debug("{} Attribute '{}': Values '{}'", new Object[] {getLogPrefix(), attrName, attr.getValues(),});
+ }
}
return result;
@@ -217,7 +220,7 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
*
* @throws ResolutionException thrown if there is a problem resolving the attributes
*/
- @Nullable protected abstract Map<String, IdPAttribute> doDataConnectorResolve(
+ @Nullable @Unmodifiable @NotLive protected abstract Map<String, IdPAttribute> doDataConnectorResolve(
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
index 7def85162..be48184da 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
@@ -32,15 +32,12 @@ import org.springframework.beans.factory.DisposableBean;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.logic.PredicateSupport;
import net.shibboleth.shared.primitive.LoggerFactory;
/**
@@ -62,10 +59,10 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
@Nullable private Predicate<ProfileRequestContext> activationCondition;
/** The {@link ResolverAttributeDefinitionDependency}s this plug-in depends on. */
- @Nonnull @NonnullElements private Set<ResolverAttributeDefinitionDependency> attributeDependencies;
+ @Nonnull private Set<ResolverAttributeDefinitionDependency> attributeDependencies;
/** The {@link ResolverDataConnectorDependency}s this plug-in depends on. */
- @Nonnull @NonnullElements private Set<ResolverDataConnectorDependency> dataConnectorDependencies;
+ @Nonnull private Set<ResolverDataConnectorDependency> dataConnectorDependencies;
/** Constructor. */
public AbstractResolverPlugin() {
@@ -109,8 +106,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
*
* @return unmodifiable list of dependencies for this plugin, never null.
*/
- @Override @Nonnull @Unmodifiable @NotLive public Set<ResolverAttributeDefinitionDependency>
- getAttributeDependencies() {
+ @Nonnull @Unmodifiable @NotLive public Set<ResolverAttributeDefinitionDependency> getAttributeDependencies() {
return attributeDependencies;
}
@@ -119,8 +115,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
*
* @return unmodifiable list of dependencies for this plugin, never null.
*/
- @Nonnull @NonnullElements @Unmodifiable @NotLive public Set<ResolverDataConnectorDependency>
- getDataConnectorDependencies() {
+ @Nonnull @Unmodifiable @NotLive public Set<ResolverDataConnectorDependency> getDataConnectorDependencies() {
return dataConnectorDependencies;
}
@@ -130,8 +125,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
*
* @param dependencies unmodifiable list of dependencies for this plugin
*/
- public void setAttributeDependencies(@Nonnull @NonnullElements
- final Set<ResolverAttributeDefinitionDependency> dependencies) {
+ public void setAttributeDependencies(@Nonnull final Set<ResolverAttributeDefinitionDependency> dependencies) {
checkSetterPreconditions();
Constraint.isNotNull(dependencies, "Attribute Dependencies cannot be null");
@@ -143,8 +137,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
*
* @param dependencies unmodifiable list of dependencies for this plugin
*/
- public void setDataConnectorDependencies(@Nonnull @NonnullElements
- final Set<ResolverDataConnectorDependency> dependencies) {
+ public void setDataConnectorDependencies(@Nonnull final Set<ResolverDataConnectorDependency> dependencies) {
checkSetterPreconditions();
Constraint.isNotNull(dependencies, "DataConnector Dependencies cannot be null");
@@ -225,17 +218,12 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
/** {@inheritDoc} */
@Override protected void doDestroy() {
- activationCondition = PredicateSupport.alwaysFalse();
+ // TODO: probably should strip this out
attributeDependencies = CollectionSupport.emptySet();
dataConnectorDependencies = CollectionSupport.emptySet();
super.doDestroy();
}
- /** {@inheritDoc} */
- @Override protected void doInitialize() throws ComponentInitializationException {
- super.doInitialize();
- }
-
/** {@inheritDoc} */
@Override public int hashCode() {
return Objects.hash(getId());
@@ -316,4 +304,5 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
* @return a log prefix
*/
@Nonnull @NotEmpty protected abstract String getLogPrefix();
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AttributeDefinition.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AttributeDefinition.java
index c2d1228b3..b2611c14e 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AttributeDefinition.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AttributeDefinition.java
@@ -39,4 +39,5 @@ public interface AttributeDefinition extends ResolverPlugin<IdPAttribute> {
* @return true if this is a definition to be done "first"
*/
boolean isPreRequested();
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/DataConnector.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/DataConnector.java
index 4179b71f2..e27f6f669 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/DataConnector.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/DataConnector.java
@@ -27,7 +27,7 @@ import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
/**
@@ -52,9 +52,7 @@ public interface DataConnector extends ResolverPlugin<Map<String, IdPAttribute>>
*
* @since 4.1.0
*/
- @Nullable default Instant getLastSuccess() {
- return Instant.now();
- }
+ @Nullable Instant getLastSuccess();
/**
* Get the time when this connector last failed. This will be set for any exception regardless of the setting of
@@ -78,5 +76,6 @@ public interface DataConnector extends ResolverPlugin<Map<String, IdPAttribute>>
*
* @return the list of attribute names to export during resolution
*/
- @Nonnull @NonnullElements @Unmodifiable Collection<String> getExportAttributes();
+ @Nonnull @Unmodifiable @NotLive Collection<String> getExportAttributes();
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java
index ac51ca7d7..4dbc232bf 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java
@@ -32,7 +32,7 @@ import org.slf4j.Logger;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.Live;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -64,11 +64,10 @@ public final class PluginDependencySupport {
* @return the merged value set. Returns an empty set if we were given a DataConnector as a dependency, but not
* attribute name
*/
- // Checkstyle: MethodLength|CyclomaticComplexity OFF
- @Nonnull @NonnullElements public static List<IdPAttributeValue> getMergedAttributeValues(
+ @Nonnull @Live public static List<IdPAttributeValue> getMergedAttributeValues(
@Nonnull final AttributeResolverWorkContext workContext,
- @Nonnull @NonnullElements final Collection<ResolverAttributeDefinitionDependency> attributeDependencies,
- @Nonnull @NonnullElements final Collection<ResolverDataConnectorDependency> dataConnectorDependencies,
+ @Nonnull final Collection<ResolverAttributeDefinitionDependency> attributeDependencies,
+ @Nonnull final Collection<ResolverDataConnectorDependency> dataConnectorDependencies,
@Nonnull final String attributeDefinitionId) {
Constraint.isNotNull(workContext, "Attribute resolution context cannot be null");
Constraint.isNotNull(attributeDependencies, "Resolver dependency collection cannot be null");
@@ -79,8 +78,6 @@ public final class PluginDependencySupport {
}
for (final ResolverAttributeDefinitionDependency attributeDependency : attributeDependencies) {
- Constraint.isNotNull(attributeDependency, "Resolver attribute dependency cannot be null");
-
final String attributeId = attributeDependency.getDependencyPluginId();
final ResolvedAttributeDefinition attributeDefinition =
workContext.getResolvedIdPAttributeDefinitions().get(attributeId);
@@ -92,8 +89,6 @@ public final class PluginDependencySupport {
}
for (final ResolverDataConnectorDependency dataConnectorDependency : dataConnectorDependencies) {
- Constraint.isNotNull(dataConnectorDependency, "Resolver data connector dependency cannot be null");
-
final String dataConnectorId = dataConnectorDependency.getDependencyPluginId();
final ResolvedDataConnector dataConnector = workContext.getResolvedDataConnectors().get(dataConnectorId);
if (dataConnector != null) {
@@ -112,9 +107,9 @@ public final class PluginDependencySupport {
}
}
}
+
return values;
}
- // Checkstyle: MethodLength|CyclomaticComplexity ON
/**
* Gets the values from all dependencies. Attributes, with the same identifier but from different resolver plugins,
@@ -134,11 +129,11 @@ public final class PluginDependencySupport {
*
* @return the merged value set
*/
- // Checkstyle: MethodLength|CyclomaticComplexity OFF
- @Nonnull @NonnullElements public static Map<String, List<IdPAttributeValue>> getAllAttributeValues(
+ // Checkstyle: CyclomaticComplexity OFF
+ @Nonnull @Live public static Map<String, List<IdPAttributeValue>> getAllAttributeValues(
@Nonnull final AttributeResolverWorkContext workContext,
@Nonnull final Collection<ResolverAttributeDefinitionDependency> attributeDependencies,
- @Nonnull @NonnullElements final Collection<ResolverDataConnectorDependency> dataConnectorDependencies) {
+ @Nonnull final Collection<ResolverDataConnectorDependency> dataConnectorDependencies) {
final HashMap<String, List<IdPAttributeValue>> result = new HashMap<>();
if (LOG.isTraceEnabled()) {
@@ -146,8 +141,6 @@ public final class PluginDependencySupport {
}
for (final ResolverAttributeDefinitionDependency dependency : attributeDependencies) {
- Constraint.isNotNull(dependency, "Attribute Definition dependency cannot be null");
-
final String attributeId = dependency.getDependencyPluginId();
final ResolvedAttributeDefinition attributeDefinition =
workContext.getResolvedIdPAttributeDefinitions().get(attributeId);
@@ -160,8 +153,6 @@ public final class PluginDependencySupport {
}
for (final ResolverDataConnectorDependency dataConnectorDependency : dataConnectorDependencies) {
- Constraint.isNotNull(dataConnectorDependency, "Data Connector dependency cannot be null");
-
// Just add those attributes specified
final String dataConnectorId = dataConnectorDependency.getDependencyPluginId();
final ResolvedDataConnector dataConnector =
@@ -182,9 +173,10 @@ public final class PluginDependencySupport {
}
}
}
+
return result;
}
- // Checkstyle: MethodLength|CyclomaticComplexity ON
+ // Checkstyle: CyclomaticComplexity ON
/**
* Adds the values of the given attribute to the target collection of attribute values.
@@ -193,7 +185,7 @@ public final class PluginDependencySupport {
* @param target current set attribute values
*/
private static void addAttribute(@Nullable final IdPAttribute source,
- @Nonnull @NonnullElements final Map<String, List<IdPAttributeValue>> target) {
+ @Nonnull final Map<String, List<IdPAttributeValue>> target) {
if (source == null) {
return;
}
@@ -213,9 +205,10 @@ public final class PluginDependencySupport {
* @param target current set attribute values
*/
private static void mergeAttributeValues(@Nullable final IdPAttribute source,
- @Nonnull final List<IdPAttributeValue> target) {
+ @Nonnull @Live final List<IdPAttributeValue> target) {
if (source != null) {
target.addAll(source.getValues());
}
}
-}
+
+}
\ No newline at end of file
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 848c545ad..0661ff329 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
@@ -31,7 +31,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.logic.Constraint;
@@ -139,7 +139,7 @@ public final class ResolvedDataConnector extends AbstractDataConnector {
}
/** {@inheritDoc} */
- @Override @Nonnull @NonnullElements @Unmodifiable public Collection<String> getExportAttributes() {
+ @Override @Nonnull @Unmodifiable @NotLive public Collection<String> getExportAttributes() {
return resolvedConnector.getExportAttributes();
}
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
index e3e031128..ab2d864a4 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
@@ -19,15 +19,15 @@ package net.shibboleth.idp.attribute.resolver;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import javax.annotation.Nonnull;
import net.shibboleth.shared.annotation.ParameterName;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.StringSupport;
@@ -92,7 +92,7 @@ public final class ResolverDataConnectorDependency {
*
* @return attribute names
*/
- @Nonnull @NonnullElements public Collection<String> getAttributeNames() {
+ @Nonnull @Unmodifiable @NotLive public Collection<String> getAttributeNames() {
return attributeNames;
}
@@ -102,7 +102,7 @@ public final class ResolverDataConnectorDependency {
* @param names attribute names
*/
public void setAttributeNames(@Nonnull @NotEmpty final Collection<String> names) {
- attributeNames = new HashSet<>(StringSupport.normalizeStringCollection(names));
+ attributeNames = CollectionSupport.copyToSet(StringSupport.normalizeStringCollection(names));
}
/** {@inheritDoc} */
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverPlugin.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverPlugin.java
index cd59addd4..82dad4737 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverPlugin.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverPlugin.java
@@ -63,16 +63,14 @@ public interface ResolverPlugin<ResolvedType> extends UnmodifiableComponent,
*
* @return unmodifiable list of attribute dependencies for this plugin, never null
*/
- @Nonnull @Unmodifiable @NotLive Set<ResolverAttributeDefinitionDependency>
- getAttributeDependencies();
+ @Nonnull @Unmodifiable @NotLive Set<ResolverAttributeDefinitionDependency> getAttributeDependencies();
/**
* Get the unmodifiable list of data connector dependencies for this plugin.
*
* @return unmodifiable list of data connector dependencies for this plugin, never null
*/
- @Nonnull @Unmodifiable @NotLive Set<ResolverDataConnectorDependency>
- getDataConnectorDependencies();
+ @Nonnull @Unmodifiable @NotLive Set<ResolverDataConnectorDependency> getDataConnectorDependencies();
/**
* Perform the attribute resolution for this plugin.
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolutionContext.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolutionContext.java
index 8d3be5069..5221b5ef3 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolutionContext.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolutionContext.java
@@ -37,7 +37,6 @@ import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.resolver.AttributeResolver;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.shared.annotation.constraint.Live;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
@@ -53,7 +52,7 @@ import net.shibboleth.shared.service.ServiceableComponent;
public final class AttributeResolutionContext extends BaseContext {
/** (internal) Names of the attributes that have been requested to be resolved. */
- @Nonnull @NonnullElements private Set<String> requestedAttributeNames;
+ @Nonnull private Set<String> requestedAttributeNames;
/** Strategy used to locate the {@link ProfileRequestContext} to use. */
@Nonnull private Function<AttributeResolutionContext,ProfileRequestContext> prcLookupStrategy;
@@ -77,7 +76,7 @@ public final class AttributeResolutionContext extends BaseContext {
@Nullable private String resolutionLabel;
/** Attributes which were resolved and released by the attribute resolver. */
- @Nonnull @NonnullElements private Map<String,IdPAttribute> resolvedAttributes;
+ @Nonnull private Map<String,IdPAttribute> resolvedAttributes;
/** Constructor. */
public AttributeResolutionContext() {
@@ -111,7 +110,7 @@ public final class AttributeResolutionContext extends BaseContext {
*
* @since 5.0.0
*/
- public AttributeResolutionContext setProfileRequestContextLookupStrategy(
+ @Nonnull public AttributeResolutionContext setProfileRequestContextLookupStrategy(
@Nonnull final Function<AttributeResolutionContext,ProfileRequestContext> strategy) {
prcLookupStrategy = Constraint.isNotNull(strategy, "ProfileRequestContext lookup strategy cannot be null");
@@ -190,7 +189,7 @@ public final class AttributeResolutionContext extends BaseContext {
*
* @return this context
*/
- @Nullable public AttributeResolutionContext setAttributeIssuerID(@Nullable final String value) {
+ @Nonnull public AttributeResolutionContext setAttributeIssuerID(@Nullable final String value) {
attributeIssuerID = value;
return this;
@@ -212,7 +211,7 @@ public final class AttributeResolutionContext extends BaseContext {
*
* @return this context
*/
- @Nullable public AttributeResolutionContext setAttributeRecipientID(@Nullable final String value) {
+ @Nonnull public AttributeResolutionContext setAttributeRecipientID(@Nullable final String value) {
attributeRecipientID = value;
return this;
@@ -241,7 +240,7 @@ public final class AttributeResolutionContext extends BaseContext {
*
* @since 3.4.0
*/
- @Nullable public AttributeResolutionContext setAttributeRecipientGroupID(@Nullable final String value) {
+ @Nonnull public AttributeResolutionContext setAttributeRecipientGroupID(@Nullable final String value) {
attributeRecipientGroupID = value;
return this;
@@ -274,7 +273,7 @@ public final class AttributeResolutionContext extends BaseContext {
*
* @return live collection of attributes requested to be resolved
*/
- @Nonnull @NonnullElements @Live public Collection<String> getRequestedIdPAttributeNames() {
+ @Nonnull @Live public Collection<String> getRequestedIdPAttributeNames() {
return requestedAttributeNames;
}
@@ -285,11 +284,9 @@ public final class AttributeResolutionContext extends BaseContext {
*
* @return this context
*/
- @Nullable public AttributeResolutionContext setRequestedIdPAttributeNames(
- @Nonnull @NonnullElements final Collection<String> names) {
+ @Nonnull public AttributeResolutionContext setRequestedIdPAttributeNames(@Nonnull final Collection<String> names) {
requestedAttributeNames = Constraint.isNotNull(names, "Requested IdPAttribute collection cannot be null")
.stream()
- .filter(n -> n != null)
.collect(CollectionSupport.nonnullCollector(Collectors.toCollection(HashSet::new)))
.get();
@@ -301,7 +298,7 @@ public final class AttributeResolutionContext extends BaseContext {
*
* @return set of resolved attributes
*/
- @Nonnull @NonnullElements @Unmodifiable @NotLive public Map<String, IdPAttribute> getResolvedIdPAttributes() {
+ @Nonnull @Unmodifiable @NotLive public Map<String, IdPAttribute> getResolvedIdPAttributes() {
return resolvedAttributes;
}
@@ -312,8 +309,8 @@ public final class AttributeResolutionContext extends BaseContext {
*
* @return this context
*/
- @Nullable public AttributeResolutionContext setResolvedIdPAttributes(
- @Nonnull @NonnullElements final Collection<IdPAttribute> attributes) {
+ @Nonnull public AttributeResolutionContext setResolvedIdPAttributes(
+ @Nonnull final Collection<IdPAttribute> attributes) {
Constraint.isNotNull(attributes, "Null attribute set cannot be inserted into a context");
resolvedAttributes = attributes.
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolverWorkContext.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolverWorkContext.java
index f14e0f14a..c7e92fecf 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolverWorkContext.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolverWorkContext.java
@@ -30,7 +30,6 @@ import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.ResolvedAttributeDefinition;
import net.shibboleth.idp.attribute.resolver.ResolvedDataConnector;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
@@ -50,10 +49,10 @@ import org.opensaml.messaging.context.BaseContext;
public final class AttributeResolverWorkContext extends BaseContext {
/** Attribute definitions that have been resolved and the resultant attribute. */
- @Nonnull @NonnullElements private final Map<String, ResolvedAttributeDefinition> resolvedAttributeDefinitions;
+ @Nonnull private final Map<String,ResolvedAttributeDefinition> resolvedAttributeDefinitions;
/** Data connectors that have been resolved and the resultant attributes. */
- @Nonnull @NonnullElements private final Map<String, ResolvedDataConnector> resolvedDataConnectors;
+ @Nonnull private final Map<String,ResolvedDataConnector> resolvedDataConnectors;
/** Constructor. */
public AttributeResolverWorkContext() {
@@ -67,8 +66,7 @@ public final class AttributeResolverWorkContext extends BaseContext {
*
* @return resolved attribute definitions that been recorded
*/
- @Nonnull @NonnullElements @Unmodifiable @NotLive public Map<String, ResolvedAttributeDefinition>
- getResolvedIdPAttributeDefinitions() {
+ @Nonnull @Unmodifiable @NotLive public Map<String, ResolvedAttributeDefinition> getResolvedIdPAttributeDefinitions() {
return CollectionSupport.copyToMap(resolvedAttributeDefinitions);
}
@@ -99,7 +97,7 @@ public final class AttributeResolverWorkContext extends BaseContext {
*
* @return resolved data connectors that been recorded
*/
- @Nonnull @NonnullElements @Unmodifiable @NotLive public Map<String, ResolvedDataConnector> getResolvedDataConnectors() {
+ @Nonnull @Unmodifiable @NotLive public Map<String, ResolvedDataConnector> getResolvedDataConnectors() {
return CollectionSupport.copyToMap(resolvedDataConnectors);
}
@@ -151,4 +149,5 @@ public final class AttributeResolverWorkContext extends BaseContext {
new ResolvedDataConnector(failedConnector, resolvedFailoverConector.getResolvedAttributes());
resolvedDataConnectors.put(failedConnector.getId(), wrapper);
}
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/navigate/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/navigate/package-info.java
index f36a9e1e3..bc8ddae8f 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/navigate/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/navigate/package-info.java
@@ -18,5 +18,7 @@
/**
* Functions for navigating attribute resolution contexts.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.context.navigate;
-package net.shibboleth.idp.attribute.resolver.context.navigate;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/package-info.java
index b0ee69e37..094b6fe0a 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/package-info.java
@@ -18,5 +18,7 @@
/**
* The context to do with Attribute Resolution.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.context;
-package net.shibboleth.idp.attribute.resolver.context;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/AbstractMappingStrategy.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/AbstractMappingStrategy.java
index ac086d695..e449cc71f 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/AbstractMappingStrategy.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/AbstractMappingStrategy.java
@@ -17,12 +17,10 @@
package net.shibboleth.idp.attribute.resolver.dc;
-import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nonnull;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
@@ -37,7 +35,7 @@ import net.shibboleth.shared.logic.Constraint;
public abstract class AbstractMappingStrategy<T> implements MappingStrategy<T> {
/** A map to rename result fields. */
- @Nonnull @NonnullElements private Map<String,String> resultRenamingMap;
+ @Nonnull private Map<String,String> resultRenamingMap;
/** Whether an empty result set is an error. */
private boolean noResultAnError;
@@ -55,8 +53,8 @@ public abstract class AbstractMappingStrategy<T> implements MappingStrategy<T> {
*
* @return a map of result field names to alternate field names
*/
- @Nonnull @NonnullElements @Unmodifiable @NotLive public Map<String,String> getResultRenamingMap() {
- return CollectionSupport.copyToMap(resultRenamingMap);
+ @Nonnull @Unmodifiable @NotLive public Map<String,String> getResultRenamingMap() {
+ return resultRenamingMap;
}
/**
@@ -64,15 +62,8 @@ public abstract class AbstractMappingStrategy<T> implements MappingStrategy<T> {
*
* @param map map of result field names to alternate field names
*/
- public void setResultRenamingMap(@Nonnull @NonnullElements final Map<String,String> map) {
- Constraint.isNotNull(map, "Renaming map cannot be null");
-
- resultRenamingMap = new HashMap<>(map.size());
- for (final Map.Entry<String,String> entry : map.entrySet()) {
- if (entry.getKey() != null && entry.getValue() != null) {
- resultRenamingMap.put(entry.getKey(), entry.getValue());
- }
- }
+ public void setResultRenamingMap(@Nonnull final Map<String,String> map) {
+ resultRenamingMap = CollectionSupport.copyToMap(Constraint.isNotNull(map, "Renaming map cannot be null"));
}
/**
@@ -110,4 +101,5 @@ public abstract class AbstractMappingStrategy<T> implements MappingStrategy<T> {
public void setMultipleResultsAnError(final boolean isAnError) {
multipleResultsAnError = isAnError;
}
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ExecutableSearch.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ExecutableSearch.java
index 15c60678e..1b4ee408f 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ExecutableSearch.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ExecutableSearch.java
@@ -30,4 +30,5 @@ public interface ExecutableSearch {
* @return the result cache key
*/
@Nullable String getResultCacheKey();
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ExecutableSearchBuilder.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ExecutableSearchBuilder.java
index 86a948531..38b24be74 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ExecutableSearchBuilder.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ExecutableSearchBuilder.java
@@ -45,4 +45,5 @@ public interface ExecutableSearchBuilder<T extends ExecutableSearch> {
*/
@Nonnull T build(@Nonnull AttributeResolutionContext resolutionContext,
@Nonnull Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException;
-}
+
+}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/MappingStrategy.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/MappingStrategy.java
index 72b238ea7..4695098a1 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/MappingStrategy.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/MappingStrategy.java
@@ -24,6 +24,8 @@ import javax.annotation.Nullable;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
/**
* Strategy for mapping from an arbitrary result type to a collection of {@link IdPAttribute}s.
@@ -41,6 +43,6 @@ public interface MappingStrategy<T> {
*
* @throws ResolutionException thrown if there is a problem reading data or mapping it
*/
- @Nullable Map<String,IdPAttribute> map(@Nonnull final T results) throws ResolutionException;
+ @Nullable @Unmodifiable @NotLive Map<String,IdPAttribute> map(@Nonnull final T results) throws ResolutionException;
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/NonFailFastValidator.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/NonFailFastValidator.java
deleted file mode 100644
index f752e8f9e..000000000
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/NonFailFastValidator.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements. See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You 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.
- */
-
-package net.shibboleth.idp.attribute.resolver.dc;
-
-import javax.annotation.Nullable;
-
-import net.shibboleth.idp.attribute.resolver.DataConnector;
-import net.shibboleth.shared.primitive.DeprecationSupport;
-import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
-import net.shibboleth.shared.primitive.LoggerFactory;
-
-/** Used to determine whether a Data Connector initialized properly and continues to be fit for use. */
-public class NonFailFastValidator implements Validator {
-
- /** Embedded validator to run. */
- @Nullable private final Validator embeddedValidator;
-
- /** Constructor. */
- public NonFailFastValidator() {
- this(null);
- }
-
- /**
- * Constructor.
- *
- * @param validator validator to run but trap exceptions from
- */
- public NonFailFastValidator(@Nullable final Validator validator) {
- // V4 deprecation. Remove the class in V5
- DeprecationSupport.warnOnce(ObjectType.CLASS, "NonFailFastValidator", null,
- "failFastInitialize on DataConnector or p:throwValidateError on the contained Validator");
- embeddedValidator = validator;
- if (embeddedValidator != null) {
- embeddedValidator.setThrowValidateError(false);
- }
- }
-
- /** {@inheritDoc} */
- @Override
- public void validate(final DataConnector dataConnector) throws ValidationException {
- if (embeddedValidator != null) {
- try {
- embeddedValidator.validate(dataConnector);
- } catch (final ValidationException e) {
- LoggerFactory.getLogger(NonFailFastValidator.class).warn(
- "Non-fail-fast validator trapped an error from its embedded validator", e);
- }
- }
- }
-
- /** {@inheritDoc} */
- public void setThrowValidateError(final boolean what) {
- LoggerFactory.getLogger(NonFailFastValidator.class).error("setThrowValidateError ignored");
- }
-
- /** {@inheritDoc} */
- public boolean isThrowValidateError() {
- return false;
- }
-
-}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/Validator.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/Validator.java
index 7dc22cba7..e94e61088 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/Validator.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/Validator.java
@@ -17,6 +17,8 @@
package net.shibboleth.idp.attribute.resolver.dc;
+import javax.annotation.Nonnull;
+
import net.shibboleth.idp.attribute.resolver.DataConnector;
/** Used to determine whether a Data Connector initialized properly and continues to be fit for use. */
@@ -25,9 +27,11 @@ public interface Validator {
/**
* Probe the data connector and conditionally fails if it is not valid and ready for use.
*
+ * @param dataConnector data connector to validate
+ *
* @throws ValidationException thrown if validation fails and {@link #isThrowValidateError()} is true
*/
- void validate(DataConnector dataConnector) throws ValidationException;
+ void validate(@Nonnull final DataConnector dataConnector) throws ValidationException;
/**
* Sets whether {@link #validate(DataConnector)} should throw or log errors.
@@ -42,4 +46,5 @@ public interface Validator {
* @return whether {@link #validate(DataConnector)} should throw or log errors
*/
boolean isThrowValidateError();
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/package-info.java
index 7247ac3bd..021f73cdd 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/package-info.java
@@ -14,8 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
/**
- * Package for http data connector configuration.
+ * Package for HTTP data connector configuration.
*/
-
+ at NonnullElements
package net.shibboleth.idp.attribute.resolver.dc.http;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/AbstractExecutableSearchFilterBuilder.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/AbstractExecutableSearchFilterBuilder.java
index e6cac2c3b..f41bc7d2e 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/AbstractExecutableSearchFilterBuilder.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/AbstractExecutableSearchFilterBuilder.java
@@ -39,7 +39,7 @@ public abstract class AbstractExecutableSearchFilterBuilder extends AbstractInit
implements ExecutableSearchBuilder<ExecutableSearchFilter> {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(AbstractExecutableSearchFilterBuilder.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractExecutableSearchFilterBuilder.class);
/**
* Creates an executable search filter that performs a search with the search filter.
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/ParameterizedExecutableSearchFilterBuilder.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/ParameterizedExecutableSearchFilterBuilder.java
index 41f251227..129f7d46a 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/ParameterizedExecutableSearchFilterBuilder.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/ParameterizedExecutableSearchFilterBuilder.java
@@ -27,12 +27,13 @@ import org.ldaptive.FilterTemplate;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
+import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
/**
- * An {@link net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder} that generates the search filter to
+ * An {@link ExecutableSearchBuilder} that generates the search filter to
* be executed by evaluating a parameterized filter string against the currently resolved attributes within a
* {@link AttributeResolutionContext}.
*/
@@ -40,14 +41,6 @@ public class ParameterizedExecutableSearchFilterBuilder extends AbstractExecutab
/** LDAP search filter. */
@NonnullAfterInit private String searchFilter;
-
- /**
- * Constructor.
- *
- */
- public ParameterizedExecutableSearchFilterBuilder() {
-
- }
/** Set the filter used for the LDAP search.
* @param filter used for the LDAP search
@@ -60,8 +53,11 @@ public class ParameterizedExecutableSearchFilterBuilder extends AbstractExecutab
/** {@inheritDoc} */
@Override
protected void doInitialize() throws ComponentInitializationException {
- Constraint.isNotNull(searchFilter, "Search filter can not be null");
super.doInitialize();
+
+ if (searchFilter == null) {
+ throw new ComponentInitializationException("Search filter cannot be null");
+ }
}
/** {@inheritDoc} */
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/SearchResultMappingStrategy.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/SearchResultMappingStrategy.java
index 465729bfc..34f95e251 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/SearchResultMappingStrategy.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/SearchResultMappingStrategy.java
@@ -26,4 +26,5 @@ import net.shibboleth.idp.attribute.resolver.dc.MappingStrategy;
* {@link net.shibboleth.idp.attribute.IdPAttribute}s.
*/
public interface SearchResultMappingStrategy extends MappingStrategy<SearchResponse> {
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/StringAttributeValueMappingStrategy.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/StringAttributeValueMappingStrategy.java
index a2669b549..7109087d9 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/StringAttributeValueMappingStrategy.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/StringAttributeValueMappingStrategy.java
@@ -37,6 +37,8 @@ import net.shibboleth.idp.attribute.resolver.MultipleResultAnErrorResolutionExce
import net.shibboleth.idp.attribute.resolver.NoResultAnErrorResolutionException;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.dc.AbstractMappingStrategy;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -52,7 +54,8 @@ public class StringAttributeValueMappingStrategy extends AbstractMappingStrategy
// Checkstyle: CyclomaticComplexity OFF
/** {@inheritDoc} */
- @Override @Nullable public Map<String,IdPAttribute> map(@Nonnull final SearchResponse results)
+ @Override
+ @Nullable @Unmodifiable @NotLive public Map<String,IdPAttribute> map(@Nonnull final SearchResponse results)
throws ResolutionException {
Constraint.isNotNull(results, "Results can not be null");
@@ -108,4 +111,4 @@ public class StringAttributeValueMappingStrategy extends AbstractMappingStrategy
}
// Checkstyle: CyclomaticComplexity ON
-}
+}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/TemplatedExecutableSearchFilterBuilder.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/TemplatedExecutableSearchFilterBuilder.java
index 49226624d..f58e7e40b 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/TemplatedExecutableSearchFilterBuilder.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/TemplatedExecutableSearchFilterBuilder.java
@@ -37,22 +37,22 @@ import org.slf4j.Logger;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
+import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.velocity.Template;
/**
- * An {@link net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder} that generates the search filter to
+ * An {@link ExecutableSearchBuilder} that generates the search filter to
* be executed by evaluating a {@link Template} against the currently resolved attributes within a
* {@link AttributeResolutionContext}.
*/
public class TemplatedExecutableSearchFilterBuilder extends AbstractExecutableSearchFilterBuilder {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(TemplatedExecutableSearchFilterBuilder.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(TemplatedExecutableSearchFilterBuilder.class);
/** Template evaluated to generate a search filter. */
@NonnullAfterInit private Template template;
@@ -163,12 +163,29 @@ public class TemplatedExecutableSearchFilterBuilder extends AbstractExecutableSe
protected void addExtraVelocityContext(@Nonnull final VelocityContext velocityContext,
@Nonnull final AttributeResolutionContext resolutionContext) {
}
+
+ /** {@inheritDoc} */
+ @Override protected void doInitialize() throws ComponentInitializationException {
+ super.doInitialize();
+
+ final VelocityEngine localEngine = engine;
+ final String localTemplateText = templateText;
+ if (null == localEngine) {
+ throw new ComponentInitializationException(
+ "TemplatedExecutableStatementBuilder: no velocity engine was configured");
+ }
+ if (null == localTemplateText) {
+ throw new ComponentInitializationException(
+ "TemplatedExecutableStatementBuilder: template text must be non null");
+ }
+
+ template = Template.fromTemplate(localEngine, localTemplateText);
+ }
/** {@inheritDoc} */
@Override
@Nonnull public ExecutableSearchFilter build(@Nonnull final AttributeResolutionContext resolutionContext,
- @Nonnull @NonnullElements final Map<String, List<IdPAttributeValue>> dependencyAttributes)
- throws ResolutionException {
+ @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
final VelocityContext context = new VelocityContext();
log.trace("Creating search filter using attribute resolution context {}", resolutionContext);
@@ -208,33 +225,13 @@ public class TemplatedExecutableSearchFilterBuilder extends AbstractExecutableSe
*
* @return result of the merge operation
*/
- protected String merge(@Nonnull final VelocityContext context) {
- String result = template.merge(context);
- if (result != null) {
- result = result.trim();
- }
+ @Nonnull protected String merge(@Nonnull final VelocityContext context) {
+ final String result = template.merge(context).trim();
log.debug("Template text {} yields {}", templateText, result);
+ assert result != null;
return result;
}
- /** {@inheritDoc} */
- @Override protected void doInitialize() throws ComponentInitializationException {
- super.doInitialize();
-
- final VelocityEngine localEngine = engine;
- final String localTemplateText = templateText;
- if (null == localEngine) {
- throw new ComponentInitializationException(
- "TemplatedExecutableStatementBuilder: no velocity engine was configured");
- }
- if (null == localTemplateText) {
- throw new ComponentInitializationException(
- "TemplatedExecutableStatementBuilder: template text must be non null");
- }
-
- template = Template.fromTemplate(localEngine, localTemplateText);
- }
-
/** Escapes LDAP attribute values added to the template context. */
protected static class EscapingReferenceInsertionEventHandler implements ReferenceInsertionEventHandler {
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/package-info.java
index 541e44905..a2be50d6e 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/package-info.java
@@ -14,8 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
/**
* Package for LDAP data connector configuration.
*/
-
+ at NonnullElements
package net.shibboleth.idp.attribute.resolver.dc.ldap;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/package-info.java
index bc1d1b989..d36fe735b 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/package-info.java
@@ -18,5 +18,7 @@
/**
* Interfaces supporting data connectors.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.dc;
-package net.shibboleth.idp.attribute.resolver.dc;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java
index bcfd71f1c..1655e3658 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java
@@ -82,7 +82,7 @@ public abstract class AbstractExecutableStatementBuilder extends AbstractInitial
*
* @return the SQL string
*/
- protected abstract String getSQLQuery(@Nonnull final AttributeResolutionContext resolutionContext,
+ @Nonnull protected abstract String getSQLQuery(@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException;
/** {@inheritDoc} */
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/ExecutableStatement.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/ExecutableStatement.java
index 4b38f3a33..1dd6ed97d 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/ExecutableStatement.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/ExecutableStatement.java
@@ -39,4 +39,5 @@ public interface ExecutableStatement extends ExecutableSearch {
* @throws SQLException thrown if there is a problem executing the statement
*/
@Nonnull ResultSet execute(@Nonnull Connection connection) throws SQLException;
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/FormatExecutableStatementBuilder.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/FormatExecutableStatementBuilder.java
index d6ac1b2c2..c3808fe60 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/FormatExecutableStatementBuilder.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/FormatExecutableStatementBuilder.java
@@ -25,12 +25,13 @@ import javax.annotation.Nonnull;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
+import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
/**
- * An {@link net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder}. It generates the SQL statement to
+ * An {@link ExecutableSearchBuilder}. It generates the SQL statement to
* be executed by invoking {@link String#format(String, Object...)} with
* {@link AttributeResolutionContext#getPrincipal() }.
*/
@@ -58,7 +59,8 @@ public class FormatExecutableStatementBuilder extends AbstractExecutableStatemen
}
/** {@inheritDoc} */
- @Override protected String getSQLQuery(@Nonnull final AttributeResolutionContext resolutionContext,
+ @Override
+ @Nonnull protected String getSQLQuery(@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) {
final List<Object> args = new ArrayList<>();
if (dependencyAttributes != null && !dependencyAttributes.isEmpty()) {
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/ResultMappingStrategy.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/ResultMappingStrategy.java
index 3a5b674ba..13eed3d65 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/ResultMappingStrategy.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/ResultMappingStrategy.java
@@ -26,4 +26,5 @@ import net.shibboleth.idp.attribute.resolver.dc.MappingStrategy;
* net.shibboleth.idp.attribute.IdPAttribute}s.
*/
public interface ResultMappingStrategy extends MappingStrategy<ResultSet> {
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/StringResultMappingStrategy.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/StringResultMappingStrategy.java
index 188bb50f4..1f609b394 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/StringResultMappingStrategy.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/StringResultMappingStrategy.java
@@ -37,6 +37,8 @@ import net.shibboleth.idp.attribute.resolver.MultipleResultAnErrorResolutionExce
import net.shibboleth.idp.attribute.resolver.NoResultAnErrorResolutionException;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.dc.AbstractMappingStrategy;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -52,7 +54,8 @@ public class StringResultMappingStrategy extends AbstractMappingStrategy<ResultS
// Checkstyle: CyclomaticComplexity OFF
/** {@inheritDoc} */
- @Override @Nullable public Map<String, IdPAttribute> map(@Nonnull final ResultSet results)
+ @Override
+ @Nullable @Unmodifiable @NotLive public Map<String, IdPAttribute> map(@Nonnull final ResultSet results)
throws ResolutionException {
Constraint.isNotNull(results, "Result set can not be null");
@@ -115,4 +118,4 @@ public class StringResultMappingStrategy extends AbstractMappingStrategy<ResultS
}
// Checkstyle: CyclomaticComplexity ON
-}
+}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java
index f2005655f..eadd714fe 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java
@@ -36,15 +36,15 @@ import org.slf4j.Logger;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
+import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.velocity.Template;
/**
- * An {@link net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder} that generates the SQL statement to
+ * An {@link ExecutableSearchBuilder} that generates the SQL statement to
* be executed by evaluating a {@link Template} against the currently resolved attributes within a
* {@link AttributeResolutionContext}.
*/
@@ -63,7 +63,7 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
@NonnullAfterInit private VelocityEngine engine;
/** Event handler used for escaping. */
- private ReferenceInsertionEventHandler eventHandler = new EscapingReferenceInsertionEventHandler();
+ @Nullable private ReferenceInsertionEventHandler eventHandler = new EscapingReferenceInsertionEventHandler();
/** Do we need to make ourself V2 Compatible? */
private boolean v2Compatibility;
@@ -155,6 +155,24 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
v2Compatibility = compat;
}
+ /** {@inheritDoc} */
+ @Override protected void doInitialize() throws ComponentInitializationException {
+ super.doInitialize();
+
+ final VelocityEngine localEngine = engine;
+ final String localTemplateText = templateText;
+ if (null == localEngine) {
+ throw new ComponentInitializationException(
+ "TemplatedExecutableStatementBuilder: no velocity engine was configured");
+ }
+ if (null == localTemplateText) {
+ throw new ComponentInitializationException(
+ "TemplatedExecutableStatementBuilder: Template text must be non null");
+ }
+
+ template = Template.fromTemplate(localEngine, localTemplateText);
+ }
+
/**
* Invokes {@link Template#merge(org.apache.velocity.context.Context)} on the supplied context.
*
@@ -162,7 +180,7 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
*
* @return result of the merge operation
*/
- protected String merge(@Nonnull final VelocityContext context) {
+ @Nonnull protected String merge(@Nonnull final VelocityContext context) {
final String result = template.merge(context);
log.debug("Template text {} yields {}", templateText, result);
return result;
@@ -172,9 +190,8 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
* Apply the context to the template. {@inheritDoc}
*/
@Override
- public final String getSQLQuery(@Nonnull final AttributeResolutionContext resolutionContext,
- @Nonnull @NonnullElements final Map<String, List<IdPAttributeValue>> dependencyAttributes)
- throws ResolutionException {
+ @Nonnull public final String getSQLQuery(@Nonnull final AttributeResolutionContext resolutionContext,
+ @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
final VelocityContext context = new VelocityContext();
log.trace("Creating search filter using attribute resolution context {}", resolutionContext);
context.put("resolutionContext", resolutionContext);
@@ -215,24 +232,6 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
@Nonnull final AttributeResolutionContext resolutionContext) {
}
- /** {@inheritDoc} */
- @Override protected void doInitialize() throws ComponentInitializationException {
- super.doInitialize();
-
- final VelocityEngine localEngine = engine;
- final String localTemplateText = templateText;
- if (null == localEngine) {
- throw new ComponentInitializationException(
- "TemplatedExecutableStatementBuilder: no velocity engine was configured");
- }
- if (null == localTemplateText) {
- throw new ComponentInitializationException(
- "TemplatedExecutableStatementBuilder: Template text must be non null");
- }
-
- template = Template.fromTemplate(localEngine, localTemplateText);
- }
-
/** Escapes SQL values added to the template context. */
protected static class EscapingReferenceInsertionEventHandler implements ReferenceInsertionEventHandler {
@@ -271,4 +270,5 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
return value;
}
}
-}
+
+}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/package-info.java
index 96a5afd29..0cb5ee066 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/package-info.java
@@ -14,8 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
/**
- * Package for rdbms data connector configuration.
+ * Package for RDBMS data connector configuration.
*/
-
+ at NonnullElements
package net.shibboleth.idp.attribute.resolver.dc.rdbms;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/package-info.java
index d36e26cb3..95cbdbe11 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/package-info.java
@@ -18,5 +18,7 @@
/**
* StorageService-backed data connector APIs.
*/
-
+ at NonnullElements
package net.shibboleth.idp.attribute.resolver.dc.storage;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributeIssuerIdPredicate.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributeIssuerIdPredicate.java
index 5c107f146..06eff8c5a 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributeIssuerIdPredicate.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributeIssuerIdPredicate.java
@@ -23,7 +23,7 @@ import java.util.function.Predicate;
import javax.annotation.Nonnull;
import net.shibboleth.idp.attribute.resolver.context.navigate.AttributeIssuerIdLookupFunction;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.logic.StrategyIndirectedPredicate;
import net.shibboleth.shared.primitive.StringSupport;
@@ -42,7 +42,7 @@ public class AttributeIssuerIdPredicate extends StrategyIndirectedPredicate<Prof
*
* @param candidates hardwired set of values to check against
*/
- public AttributeIssuerIdPredicate(@Nonnull @NonnullElements final Collection<String> candidates) {
+ public AttributeIssuerIdPredicate(@ParameterName(name="candidates") @Nonnull final Collection<String> candidates) {
super(new AttributeIssuerIdLookupFunction(), StringSupport.normalizeStringCollection(candidates));
}
@@ -51,7 +51,7 @@ public class AttributeIssuerIdPredicate extends StrategyIndirectedPredicate<Prof
*
* @param pred generalized predicate
*/
- public AttributeIssuerIdPredicate(@Nonnull final Predicate<String> pred) {
+ public AttributeIssuerIdPredicate(@ParameterName(name="pred") @Nonnull final Predicate<String> pred) {
super(new AttributeIssuerIdLookupFunction(), pred);
}
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributePrincipalPredicate.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributePrincipalPredicate.java
index 74217354e..822eb4a1d 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributePrincipalPredicate.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributePrincipalPredicate.java
@@ -23,7 +23,7 @@ import java.util.function.Predicate;
import javax.annotation.Nonnull;
import net.shibboleth.idp.attribute.resolver.context.navigate.AttributePrincipalLookupFunction;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.logic.StrategyIndirectedPredicate;
import net.shibboleth.shared.primitive.StringSupport;
@@ -42,7 +42,7 @@ public class AttributePrincipalPredicate extends StrategyIndirectedPredicate<Pro
*
* @param candidates hardwired set of values to check against
*/
- public AttributePrincipalPredicate(@Nonnull @NonnullElements final Collection<String> candidates) {
+ public AttributePrincipalPredicate(@ParameterName(name="candidates") @Nonnull final Collection<String> candidates) {
super(new AttributePrincipalLookupFunction(), StringSupport.normalizeStringCollection(candidates));
}
@@ -51,7 +51,7 @@ public class AttributePrincipalPredicate extends StrategyIndirectedPredicate<Pro
*
* @param pred generalized predicate
*/
- public AttributePrincipalPredicate(@Nonnull final Predicate<String> pred) {
+ public AttributePrincipalPredicate(@ParameterName(name="pred") @Nonnull final Predicate<String> pred) {
super(new AttributePrincipalLookupFunction(), pred);
}
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributeRecipientIdPredicate.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributeRecipientIdPredicate.java
index d2553f1e7..e532184c3 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributeRecipientIdPredicate.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/AttributeRecipientIdPredicate.java
@@ -23,7 +23,7 @@ import java.util.function.Predicate;
import javax.annotation.Nonnull;
import net.shibboleth.idp.attribute.resolver.context.navigate.AttributeRecipientIdLookupFunction;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.logic.StrategyIndirectedPredicate;
import net.shibboleth.shared.primitive.StringSupport;
@@ -42,7 +42,7 @@ public class AttributeRecipientIdPredicate extends StrategyIndirectedPredicate<P
*
* @param candidates hardwired set of values to check against
*/
- public AttributeRecipientIdPredicate(@Nonnull @NonnullElements final Collection<String> candidates) {
+ public AttributeRecipientIdPredicate(@ParameterName(name="candidates") @Nonnull final Collection<String> candidates) {
super(new AttributeRecipientIdLookupFunction(), StringSupport.normalizeStringCollection(candidates));
}
@@ -51,7 +51,7 @@ public class AttributeRecipientIdPredicate extends StrategyIndirectedPredicate<P
*
* @param pred generalized predicate
*/
- public AttributeRecipientIdPredicate(@Nonnull final Predicate<String> pred) {
+ public AttributeRecipientIdPredicate(@ParameterName(name="pred") @Nonnull final Predicate<String> pred) {
super(new AttributeRecipientIdLookupFunction(), pred);
}
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/ResolutionLabelPredicate.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/ResolutionLabelPredicate.java
index 275f030dd..e5f6e3a71 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/ResolutionLabelPredicate.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/ResolutionLabelPredicate.java
@@ -23,7 +23,7 @@ import java.util.function.Predicate;
import javax.annotation.Nonnull;
import net.shibboleth.idp.attribute.resolver.context.navigate.ResolutionLabelLookupFunction;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.logic.StrategyIndirectedPredicate;
import net.shibboleth.shared.primitive.StringSupport;
@@ -44,7 +44,7 @@ public class ResolutionLabelPredicate extends StrategyIndirectedPredicate<Profil
*
* @param candidates hardwired set of values to check against
*/
- public ResolutionLabelPredicate(@Nonnull @NonnullElements final Collection<String> candidates) {
+ public ResolutionLabelPredicate(@ParameterName(name="candidates") @Nonnull final Collection<String> candidates) {
super(new ResolutionLabelLookupFunction(), StringSupport.normalizeStringCollection(candidates));
}
@@ -53,7 +53,7 @@ public class ResolutionLabelPredicate extends StrategyIndirectedPredicate<Profil
*
* @param pred generalized predicate
*/
- public ResolutionLabelPredicate(@Nonnull final Predicate<String> pred) {
+ public ResolutionLabelPredicate(@ParameterName(name="pred") @Nonnull final Predicate<String> pred) {
super(new ResolutionLabelLookupFunction(), pred);
}
@@ -63,7 +63,7 @@ public class ResolutionLabelPredicate extends StrategyIndirectedPredicate<Profil
* @param candidates hardwired set of values to check against
* @return the result of calling {@link #ResolutionLabelPredicate(Collection)}
*/
- static ResolutionLabelPredicate byList(@Nonnull @NonnullElements final Collection<String> candidates) {
+ static ResolutionLabelPredicate byList(@Nonnull final Collection<String> candidates) {
return new ResolutionLabelPredicate(candidates);
}
@@ -76,4 +76,5 @@ public class ResolutionLabelPredicate extends StrategyIndirectedPredicate<Profil
static ResolutionLabelPredicate byPredicate(@Nonnull final Predicate<String> pred) {
return new ResolutionLabelPredicate(pred);
}
-}
+
+}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/package-info.java
index 61734e5d7..e19465820 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/logic/package-info.java
@@ -18,5 +18,7 @@
/**
* Predicates related to attribute resolution.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.logic;
-package net.shibboleth.idp.attribute.resolver.logic;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/package-info.java
index a46978a43..4e2c7c057 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/package-info.java
@@ -20,5 +20,7 @@
* {@link net.shibboleth.idp.attribute.IdPAttribute}s from a variety of locations, transform them,
* and associate a set of protocol-specific encoders to them.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver;
-package net.shibboleth.idp.attribute.resolver;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/scripted/ScriptedIdPAttribute.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/scripted/ScriptedIdPAttribute.java
index fa0bb2bc3..afc74ab61 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/scripted/ScriptedIdPAttribute.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/scripted/ScriptedIdPAttribute.java
@@ -23,7 +23,9 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.shibboleth.idp.attribute.IdPAttribute;
+import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
+import net.shibboleth.shared.annotation.constraint.Live;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
/**
@@ -32,13 +34,12 @@ import net.shibboleth.shared.annotation.constraint.NotEmpty;
public interface ScriptedIdPAttribute {
/**
- * Return all the values, but with {@link net.shibboleth.idp.attribute.StringAttributeValue} values returned as
- * strings.
+ * Return all the values, but with {@link StringAttributeValue} values returned as strings.
*
* @return a modifiable collection of the string attributes
* @throws ResolutionException if the script has called {@link #getNativeAttribute()}
*/
- @Nullable Collection<Object> getValues() throws ResolutionException;
+ @Nullable @Live Collection<Object> getValues() throws ResolutionException;
/**
* return the underlying attribute.
@@ -63,4 +64,4 @@ public interface ScriptedIdPAttribute {
*/
void addValue(@Nullable final Object what) throws ResolutionException;
-}
+}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/scripted/package-info.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/scripted/package-info.java
index c3739e859..93ab70562 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/scripted/package-info.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/scripted/package-info.java
@@ -23,5 +23,7 @@
* used by Java.
* </p>
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.scripted;
-package net.shibboleth.idp.attribute.resolver.scripted;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
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 6ce315778..fc3d87f56 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
@@ -99,7 +99,7 @@ public class ScopedAttributeDefinition extends AbstractAttributeDefinition {
/** Null safe getter for {@link #nonScopeAttributeDependencies}.
* @return Returns the nonScopeAttributeDependencies.
*/
- @Nonnull private Collection<ResolverAttributeDefinitionDependency> getNonScopeAttributeDependencies() {
+ @Nonnull private Collection<ResolverAttributeDefinitionDependency> ensureNonScopeAttributeDependencies() {
checkComponentActive();
assert nonScopeAttributeDependencies!=null;
return nonScopeAttributeDependencies;
@@ -178,7 +178,7 @@ public class ScopedAttributeDefinition extends AbstractAttributeDefinition {
}
final List<IdPAttributeValue> dependencyValues =
PluginDependencySupport.getMergedAttributeValues(workContext,
- getNonScopeAttributeDependencies(),
+ ensureNonScopeAttributeDependencies(),
getDataConnectorDependencies(),
ensureId());
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 ec4a6e25c..bc762c8f1 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
@@ -40,7 +40,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.idp.attribute.resolver.scripted.ResolverScriptContextExtender;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
@@ -84,7 +83,7 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
@NonnullAfterInit private AttributeDefinitionScriptEvaluator scriptEvaluator;
/** Extenders for script context. */
- @Nonnull @NonnullElements private Collection<ResolverScriptContextExtender> contextExtenders;
+ @Nonnull private Collection<ResolverScriptContextExtender> contextExtenders;
/** The custom object we inject into all scripts. */
@Nullable private Object customObject;
@@ -139,8 +138,7 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
*
* @since 5.0.0
*/
- public void setScriptContextExtenders(
- @Nullable @NonnullElements final Collection<ResolverScriptContextExtender> extenders) {
+ public void setScriptContextExtenders(@Nullable final Collection<ResolverScriptContextExtender> extenders) {
checkSetterPreconditions();
if (extenders != null) {
contextExtenders = CollectionSupport.copyToList(extenders);
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedIdPAttributeImpl.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedIdPAttributeImpl.java
index 0cdedf747..23a56f576 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedIdPAttributeImpl.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedIdPAttributeImpl.java
@@ -34,7 +34,7 @@ import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.scripted.ScriptedIdPAttribute;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.Live;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -49,12 +49,12 @@ import net.shibboleth.shared.primitive.LoggerFactory;
*/
public class ScriptedIdPAttributeImpl implements ScriptedIdPAttribute {
+ /** Logger. */
+ @Nonnull private final Logger log = LoggerFactory.getLogger(ScriptedIdPAttributeImpl.class);
+
/** The {@link IdPAttribute} we are encapsulating. */
@Nonnull private final IdPAttribute encapsulatedAttribute;
- /** Logger. */
- private final Logger log = LoggerFactory.getLogger(ScriptedIdPAttributeImpl.class);
-
/** has method {@link #getNativeAttribute()} be called. */
private boolean calledGetNativeAttribute;
@@ -69,7 +69,7 @@ public class ScriptedIdPAttributeImpl implements ScriptedIdPAttribute {
private List<Object> attributeValues;
/** The prefix for logging. Derived from the definition's logPrefix and the attribute ID. */
- @Nonnull final String logPrefix;
+ @Nonnull private final String logPrefix;
/**
* Constructor.
@@ -77,10 +77,12 @@ public class ScriptedIdPAttributeImpl implements ScriptedIdPAttribute {
* @param attribute the attribute we are encapsulating.
* @param prefix the log path from the definition.
*/
- public ScriptedIdPAttributeImpl(@Nonnull final IdPAttribute attribute, final String prefix) {
+ public ScriptedIdPAttributeImpl(@Nonnull final IdPAttribute attribute, @Nullable final String prefix) {
encapsulatedAttribute = attribute;
- final String lpf = new StringBuilder(prefix).append(" scripted attribute '").append(attribute.getId()).append("':")
- .toString();
+ final String lpf = new StringBuilder(prefix)
+ .append(" scripted attribute '")
+ .append(attribute.getId())
+ .append("':").toString();
assert lpf != null;
logPrefix=lpf;
}
@@ -97,7 +99,7 @@ public class ScriptedIdPAttributeImpl implements ScriptedIdPAttribute {
// NOTE. This has to be a List - the examples use get(0)
final ArrayList<Object> newValues = new ArrayList<>(encapsulatedAttribute.getValues().size());
for (final IdPAttributeValue value : encapsulatedAttribute.getValues()) {
- if ((value instanceof StringAttributeValue) && !(value instanceof ScopedStringAttributeValue)) {
+ if (value instanceof StringAttributeValue && !(value instanceof ScopedStringAttributeValue)) {
newValues.add(((StringAttributeValue) value).getValue());
} else if (value instanceof EmptyAttributeValue) {
// Shib2 made both empty strings and nulls null
@@ -120,7 +122,8 @@ public class ScriptedIdPAttributeImpl implements ScriptedIdPAttribute {
* @return a modifiable collection of the string attributes (not the String
* @throws ResolutionException if the script has called {@link #getNativeAttribute()}
*/
- @Override @Nullable @NonnullElements public Collection<Object> getValues() throws ResolutionException {
+ @Override
+ @Nullable @Live public Collection<Object> getValues() throws ResolutionException {
if (calledGetNativeAttribute) {
throw new ResolutionException(getLogPrefix()
+ " cannot call getNativeAttribute() and getValues() or addValues() on the same attribute()");
@@ -162,7 +165,7 @@ public class ScriptedIdPAttributeImpl implements ScriptedIdPAttribute {
* @param values the list to add to.
* @param value the value to add. Known to be a {@link String} or an {@link IdPAttributeValue}
*/
- private void addAsIdPAttributeValue(final List<IdPAttributeValue> values, final Object value) {
+ private void addAsIdPAttributeValue(@Nonnull final List<IdPAttributeValue> values, @Nullable final Object value) {
if (null == value) {
values.add(new EmptyAttributeValue(EmptyType.NULL_VALUE));
} else if (value instanceof String) {
@@ -238,4 +241,5 @@ public class ScriptedIdPAttributeImpl implements ScriptedIdPAttribute {
@Nonnull protected String getLogPrefix() {
return logPrefix;
}
-}
+
+}
\ No newline at end of file
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 1bdf0175a..0ca9c1f40 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
@@ -42,7 +42,6 @@ import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
import net.shibboleth.shared.collection.LazyMap;
import net.shibboleth.shared.component.ComponentInitializationException;
@@ -214,8 +213,8 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
*/
private int addAttributeValues(@Nonnull final String attributeName,
@Nullable final List<IdPAttributeValue> attributeValues,
- @Nonnull @NonnullElements final Map<String,Iterator<IdPAttributeValue>> sourceValues,
- final int curValueCount) throws ResolutionException {
+ @Nonnull final Map<String,Iterator<IdPAttributeValue>> sourceValues, final int curValueCount)
+ throws ResolutionException {
int valueCount = curValueCount;
if (null == attributeValues || 0 == attributeValues.size()) {
@@ -247,8 +246,7 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
* @throws ResolutionException if there is a mismatched count of attributes
*/
private int setupSourceValues(@Nonnull final AttributeResolverWorkContext workContext,
- @Nonnull @NonnullElements final Map<String,Iterator<IdPAttributeValue>> sourceValues)
- throws ResolutionException {
+ @Nonnull final Map<String,Iterator<IdPAttributeValue>> sourceValues) throws ResolutionException {
final Map<String, List<IdPAttributeValue>> dependencyAttributes =
PluginDependencySupport.getAllAttributeValues(workContext,
@@ -266,4 +264,4 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
return valueCount;
}
-}
+}
\ No newline at end of file
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/package-info.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/package-info.java
index bc7c4c095..0e25937e5 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/package-info.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/package-info.java
@@ -16,5 +16,7 @@
*/
/** Implementations of various {@link net.shibboleth.idp.attribute.resolver.AttributeDefinition}s. */
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.ad.impl;
-package net.shibboleth.idp.attribute.resolver.ad.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
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 55f9ce641..58a67751d 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
@@ -40,7 +40,8 @@ import net.shibboleth.idp.attribute.resolver.PluginDependencySupport;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.Live;
+import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
@@ -65,7 +66,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
@Nonnull private final Logger log = LoggerFactory.getLogger(MappedAttributeDefinition.class);
/** Value maps. */
- @Nonnull @NonnullElements private Set<ValueMap> valueMaps = CollectionSupport.emptySet();
+ @Nonnull private Set<ValueMap> valueMaps = CollectionSupport.emptySet();
/** Whether the definition passes thru unmatched values. */
private boolean passThru;
@@ -78,7 +79,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
*
* @return functions used to map an input value to an output value
*/
- @Nonnull @NonnullElements @Unmodifiable public Collection<ValueMap> getValueMaps() {
+ @Nonnull @Unmodifiable @NotLive public Collection<ValueMap> getValueMaps() {
return valueMaps;
}
@@ -87,7 +88,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
*
* @param mappings functions used to map an input value to an output value
*/
- public void setValueMaps(@Nullable @NonnullElements final Collection<ValueMap> mappings) {
+ public void setValueMaps(@Nullable final Collection<ValueMap> mappings) {
checkSetterPreconditions();
valueMaps = mappings != null ? CollectionSupport.copyToSet(mappings) : CollectionSupport.emptySet();
@@ -155,7 +156,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
*
* @return the set of attribute values that the given dependency value maps in to
*/
- protected List<StringAttributeValue> mapValue(@Nullable final String value) {
+ @Nonnull @Live protected List<StringAttributeValue> mapValue(@Nullable final String value) {
log.debug("Attribute Definition {}: mapping dependency attribute value {}", getId(), value);
final List<StringAttributeValue> mappedValues = new ArrayList<>();
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/SourceValue.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/SourceValue.java
index 1e34dec70..fa9a368f2 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/SourceValue.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/SourceValue.java
@@ -36,7 +36,7 @@ public class SourceValue extends AbstractInitializableComponent {
/**
* Value string. This may contain regular expressions.
*/
- private @Nullable String value;
+ @Nullable private String value;
/**
* Whether case should be taken into account when matching.
@@ -44,7 +44,7 @@ public class SourceValue extends AbstractInitializableComponent {
private boolean caseSensitive = true;
/** In the regexp case this contains the compiled pattern. */
- private @Nullable Pattern pattern;
+ @Nullable private Pattern pattern;
/**
* Whether partial matches should be allowed.
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/ValueMap.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/ValueMap.java
index 0abe776bc..aee40b89a 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/ValueMap.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/ValueMap.java
@@ -31,8 +31,8 @@ import javax.annotation.Nullable;
import org.slf4j.Logger;
import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
@@ -52,7 +52,7 @@ public class ValueMap implements Function<String, Set<StringAttributeValue>> {
private String returnValue;
/** Source values. */
- @Nonnull @NonnullElements private Collection<SourceValue> sourceValues;
+ @Nonnull private Collection<SourceValue> sourceValues;
/** Constructor. */
public ValueMap() {
@@ -83,7 +83,7 @@ public class ValueMap implements Function<String, Set<StringAttributeValue>> {
*
* @param newValues functions used to map an input value to an output value
*/
- public void setSourceValues(@Nullable @NonnullElements final Collection<SourceValue> newValues) {
+ public void setSourceValues(@Nullable final Collection<SourceValue> newValues) {
sourceValues = newValues != null ? CollectionSupport.copyToSet(newValues) : CollectionSupport.emptySet();
}
@@ -93,7 +93,7 @@ public class ValueMap implements Function<String, Set<StringAttributeValue>> {
*
* @return the collection of source values
*/
- @Nonnull @NonnullElements @Unmodifiable public Collection<SourceValue> getSourceValues() {
+ @Nonnull @Unmodifiable @NotLive public Collection<SourceValue> getSourceValues() {
return sourceValues;
}
@@ -157,4 +157,5 @@ public class ValueMap implements Function<String, Set<StringAttributeValue>> {
return mappedValues;
}
// CheckStyle: CyclomaticComplexity ON
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/package-info.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/package-info.java
index e3e79d578..c3ec19735 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/package-info.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/package-info.java
@@ -19,5 +19,7 @@
* A {@link net.shibboleth.idp.attribute.resolver.DataConnector} implementation that maps from a given set of
* source value to an output value.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.ad.mapped.impl;
-package net.shibboleth.idp.attribute.resolver.ad.mapped.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
index 2fa9b2cc1..8a786cc81 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
@@ -39,7 +39,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
import net.shibboleth.idp.attribute.resolver.dc.http.HTTPResponseMappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.http.HTTPSearch;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
@@ -64,7 +63,7 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
ExecutableSearchBuilder<HTTPSearch> {
/** Map of headers to set. */
- @Nonnull @NonnullElements @Unmodifiable private List<Pair<String,String>> headerList;
+ @Nonnull @Unmodifiable private List<Pair<String,String>> headerList;
/** HTTP client security parameters. */
@Nullable private HttpClientSecurityParameters httpClientSecurityParameters;
@@ -79,7 +78,7 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
*
* @return map of headers
*/
- @Nonnull @NonnullElements @NotLive @Unmodifiable public List<Pair<String,String>> getHeaders() {
+ @Nonnull @NotLive @Unmodifiable public List<Pair<String,String>> getHeaders() {
return headerList;
}
@@ -90,7 +89,7 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
*
* @param headers map of headers
*/
- public void setHeaders(@Nonnull @NonnullElements final Map<String,String> headers) {
+ public void setHeaders(@Nonnull final Map<String,String> headers) {
checkSetterPreconditions();
Constraint.isNotNull(headers, "Map of headers cannot be null");
@@ -164,11 +163,13 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
@Nullable final HttpClientSecurityParameters securityParameters,
@Nonnull final HTTPResponseMappingStrategy mappingStrategy) throws IOException {
- @Nonnull HttpClientContext clientContext = HttpClientContext.create();
+ final HttpClientContext clientContext = HttpClientContext.create();
+ assert clientContext != null;
HttpClientSecuritySupport.marshalSecurityParameters(clientContext, securityParameters, true);
HttpClientSecuritySupport.addDefaultTLSTrustEngineCriteria(clientContext, request);
- @Nonnull final Map<String,IdPAttribute> results = client.execute(request, clientContext, mappingStrategy);
+ final Map<String,IdPAttribute> results = client.execute(request, clientContext, mappingStrategy);
HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, request.getScheme());
+ assert results != null;
return results;
}
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java
index 05ea4ea79..1696117f5 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java
@@ -39,6 +39,8 @@ import net.shibboleth.idp.attribute.resolver.dc.http.HTTPResponseMappingStrategy
import net.shibboleth.idp.attribute.resolver.dc.http.HTTPSearch;
import net.shibboleth.idp.attribute.resolver.dc.impl.AbstractSearchDataConnector;
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.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
@@ -57,7 +59,7 @@ public class HTTPDataConnector extends AbstractSearchDataConnector<HTTPSearch,HT
/** Constructor. */
public HTTPDataConnector() {
setValidator(new Validator() {
- public void validate(final DataConnector dataConnector) throws ValidationException {
+ public void validate(@Nonnull final DataConnector dataConnector) throws ValidationException {
}
public void setThrowValidateError(final boolean what) {
@@ -102,8 +104,8 @@ public class HTTPDataConnector extends AbstractSearchDataConnector<HTTPSearch,HT
/** {@inheritDoc} */
@Override
- @Nullable protected Map<String,IdPAttribute> retrieveAttributes(@Nonnull final HTTPSearch executable)
- throws ResolutionException {
+ @Nullable @Unmodifiable @NotLive protected Map<String,IdPAttribute> retrieveAttributes(
+ @Nonnull final HTTPSearch executable) throws ResolutionException {
try {
return getMappingStrategy().map(
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
index f7e2af0a0..8715c615b 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
@@ -42,8 +42,9 @@ import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.dc.http.HTTPResponseMappingStrategy;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
@@ -94,7 +95,7 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
*
* @param statuses successful codes
*/
- public void setAcceptStatuses(@Nonnull @NonnullElements final Collection<Integer> statuses) {
+ public void setAcceptStatuses(@Nonnull final Collection<Integer> statuses) {
acceptStatuses = CollectionSupport.copyToSet(Constraint.isNotNull(statuses, "Statuses cannot be null"));
}
@@ -103,7 +104,7 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
*
* @param types types to allow
*/
- public void setAcceptTypes(@Nonnull @NonnullElements final Collection<String> types) {
+ public void setAcceptTypes(@Nonnull final Collection<String> types) {
acceptTypes = CollectionSupport.copyToSet(StringSupport.normalizeStringCollection(
Constraint.isNotNull(types, "Types cannot be null")));
}
@@ -120,8 +121,8 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
}
/** {@inheritDoc} */
- @Nonnull public Map<String,IdPAttribute> map(@Nonnull final Map<String,IdPAttribute> results)
- throws ResolutionException {
+ @Nullable @Unmodifiable @NotLive public Map<String,IdPAttribute> map(
+ @Nonnull final Map<String,IdPAttribute> results) throws ResolutionException {
return results;
}
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java
index 73eaf60aa..8c8b44a73 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java
@@ -41,6 +41,7 @@ import com.google.common.xml.XmlEscapers;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
+import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.component.ComponentInitializationException;
@@ -50,7 +51,7 @@ import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.velocity.Template;
/**
- * An {@link net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder} that generates a
+ * An {@link ExecutableSearchBuilder} that generates a
* request by evaluating {@link Template}s against the currently resolved attributes within an
* {@link AttributeResolutionContext} to produce a URL and body, via GET or POST, and a configurable
* cache key.
@@ -112,6 +113,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
@Nullable private Object customObject;
/** Constructor. */
+ @SuppressWarnings("null")
public TemplatedBodyBuilder() {
method = "POST";
mimeType ="text/plain";
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedURLBuilder.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedURLBuilder.java
index 86b03718b..b86c25fbb 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedURLBuilder.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedURLBuilder.java
@@ -35,6 +35,7 @@ import com.google.common.net.UrlEscapers;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
+import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.component.ComponentInitializationException;
@@ -44,7 +45,7 @@ import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.velocity.Template;
/**
- * An {@link net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder} that generates the URL to
+ * An {@link ExecutableSearchBuilder} that generates the URL to
* request by evaluating a {@link Template} against the currently resolved attributes within an
* {@link AttributeResolutionContext}.
*/
@@ -75,6 +76,7 @@ public class TemplatedURLBuilder extends AbstractHTTPSearchBuilder {
@Nullable private Object customObject;
/** Constructor. */
+ @SuppressWarnings("null")
public TemplatedURLBuilder() {
paramEscaper = UrlEscapers.urlFormParameterEscaper();
fragmentEscaper = UrlEscapers.urlFragmentEscaper();
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/package-info.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/package-info.java
index 195491a80..fff4a7324 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/package-info.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/package-info.java
@@ -19,4 +19,7 @@
* A {@link net.shibboleth.idp.attribute.resolver.DataConnector} implementation that
* reads data from an HTTP web service.
*/
-package net.shibboleth.idp.attribute.resolver.dc.http.impl;
\ No newline at end of file
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.dc.http.impl;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java
index e8c708237..d8a90e3a7 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java
@@ -39,6 +39,8 @@ import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
import net.shibboleth.idp.attribute.resolver.dc.MappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.Validator;
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;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
@@ -161,11 +163,12 @@ public abstract class AbstractSearchDataConnector<T1 extends ExecutableSearch,T2
*
* @throws ResolutionException thrown if there is a problem retrieving data from the data source
*/
- @Nullable protected abstract Map<String,IdPAttribute> retrieveAttributes(@Nonnull final T1 executable)
- throws ResolutionException;
+ @Nullable @Unmodifiable @NotLive protected abstract Map<String,IdPAttribute> retrieveAttributes(
+ @Nonnull final T1 executable) throws ResolutionException;
/** {@inheritDoc} */
- @Override @Nullable protected Map<String, IdPAttribute> doDataConnectorResolve(
+ @Override
+ @Nullable @Unmodifiable @NotLive protected Map<String, IdPAttribute> doDataConnectorResolve(
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
checkComponentActive();
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ContextDerivedDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ContextDerivedDataConnector.java
index 10bab9220..41e992b17 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ContextDerivedDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ContextDerivedDataConnector.java
@@ -35,7 +35,8 @@ import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -106,7 +107,7 @@ public class ContextDerivedDataConnector extends AbstractDataConnector {
/** {@inheritDoc} */
@Override
- @Nullable @NonnullElements protected Map<String,IdPAttribute> doDataConnectorResolve(
+ @Nullable @Unmodifiable @NotLive protected Map<String,IdPAttribute> doDataConnectorResolve(
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
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 a1fd30cc1..b0375f043 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
@@ -42,6 +42,8 @@ import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
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;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
@@ -73,7 +75,7 @@ public class PairwiseIdDataConnector extends AbstractDataConnector {
*
* @return source attribute ID
*/
- @Nullable @NonnullAfterInit public String getSourceAttributeInformation() {
+ @NonnullAfterInit public String getSourceAttributeInformation() {
checkComponentActive();
return sourceInformation;
}
@@ -234,7 +236,8 @@ public class PairwiseIdDataConnector extends AbstractDataConnector {
}
/** {@inheritDoc} */
- @Override @Nullable protected Map<String, IdPAttribute> doDataConnectorResolve(
+ @Override
+ @Nullable @Unmodifiable @NotLive protected Map<String, IdPAttribute> doDataConnectorResolve(
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java
index 638283c41..49fef1d4c 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java
@@ -43,7 +43,8 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.idp.attribute.resolver.scripted.ResolverScriptContextExtender;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
@@ -69,7 +70,7 @@ public class ScriptedDataConnector extends AbstractDataConnector {
@NonnullAfterInit private DataConnectorScriptEvaluator scriptEvaluator;
/** Extenders for script context. */
- @Nonnull @NonnullElements private Collection<ResolverScriptContextExtender> contextExtenders;
+ @Nonnull private Collection<ResolverScriptContextExtender> contextExtenders;
/** The custom object we inject into all scripts. */
@Nullable private Object customObject;
@@ -124,8 +125,7 @@ public class ScriptedDataConnector extends AbstractDataConnector {
*
* @since 5.0.0
*/
- public void setScriptContextExtenders(
- @Nullable @NonnullElements final Collection<ResolverScriptContextExtender> extenders) {
+ public void setScriptContextExtenders(@Nullable final Collection<ResolverScriptContextExtender> extenders) {
checkSetterPreconditions();
if (extenders != null) {
contextExtenders = CollectionSupport.copyToList(extenders);
@@ -184,7 +184,7 @@ public class ScriptedDataConnector extends AbstractDataConnector {
* @throws ResolutionException if the script fails
*/
@SuppressWarnings("unchecked")
- @Nullable protected Map<String,IdPAttribute> execute(
+ @Nullable @Unmodifiable @NotLive protected Map<String,IdPAttribute> execute(
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
try {
@@ -198,7 +198,7 @@ public class ScriptedDataConnector extends AbstractDataConnector {
@Override
protected void prepareContext(@Nonnull final ScriptContext scriptContext, @Nullable final Object... input) {
- assert(input != null);
+ assert input != null;
log.debug("{} Adding to-be-populated attribute set '{}' to script context", getLogPrefix(), RESULTS_STRING);
scriptContext.setAttribute(RESULTS_STRING, new HashSet<>(), ScriptContext.ENGINE_SCOPE);
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnector.java
index face1384b..7dacb609e 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnector.java
@@ -32,7 +32,8 @@ import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
@@ -49,14 +50,14 @@ public class StaticDataConnector extends AbstractDataConnector {
@Nonnull private final Logger log = LoggerFactory.getLogger(StaticDataConnector.class);
/** Static collection of values returned by this connector. */
- private @NonnullAfterInit @NonnullElements Map<String, IdPAttribute> attributes;
+ @NonnullAfterInit private Map<String, IdPAttribute> attributes;
/**
* Get the static values returned by this connector.
*
* @return static values returned by this connector
*/
- @NonnullAfterInit public Map<String, IdPAttribute> getAttributes() {
+ @NonnullAfterInit @Unmodifiable @NotLive public Map<String, IdPAttribute> getAttributes() {
return attributes;
}
@@ -65,14 +66,13 @@ public class StaticDataConnector extends AbstractDataConnector {
*
* @param newValues static values returned by this connector
*/
- public void setValues(@Nonnull @NonnullElements final Collection<IdPAttribute> newValues) {
+ public void setValues(@Nonnull final Collection<IdPAttribute> newValues) {
checkSetterPreconditions();
Constraint.isNotNull(newValues, "Values must not be null");
attributes = newValues.
stream().
- map(e -> Constraint.isNotNull(e, "non null Attribute in connector")).
collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableMap(IdPAttribute::getId,
i -> i,
CollectionSupport.warningMergeFunction("StaticDataConnector " + getId(), true)))).
@@ -81,7 +81,7 @@ public class StaticDataConnector extends AbstractDataConnector {
/** {@inheritDoc} */
@Override
- @Nonnull protected Map<String, IdPAttribute> doDataConnectorResolve(
+ @Nonnull @Unmodifiable @NotLive protected Map<String, IdPAttribute> doDataConnectorResolve(
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/package-info.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/package-info.java
index 6ce29c9df..af658ad8d 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/package-info.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* Common functionality used by data connectors.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.dc.impl;
-package net.shibboleth.idp.attribute.resolver.dc.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/ConnectionFactoryValidator.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/ConnectionFactoryValidator.java
index 3b530272d..7955d4a88 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/ConnectionFactoryValidator.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/ConnectionFactoryValidator.java
@@ -54,7 +54,7 @@ public class ConnectionFactoryValidator implements Validator {
}
/** {@inheritDoc} */
- @Override public void validate(final DataConnector dataConnector) throws ValidationException {
+ @Override public void validate(@Nonnull final DataConnector dataConnector) throws ValidationException {
if (!(dataConnector instanceof LDAPDataConnector)) {
throw new ValidationException("DataConnector must be of type LDAPDataConnector");
}
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java
index 8b6be5aa1..6cd73ede0 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java
@@ -43,6 +43,8 @@ import net.shibboleth.idp.attribute.resolver.dc.ldap.ExecutableSearchFilter;
import net.shibboleth.idp.attribute.resolver.dc.ldap.SearchResultMappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.ldap.StringAttributeValueMappingStrategy;
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.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -189,7 +191,8 @@ public class LDAPDataConnector extends AbstractSearchDataConnector<ExecutableSea
*
* @throws ResolutionException thrown if there is a problem retrieving data from the LDAP
*/
- @Override @Nullable protected Map<String, IdPAttribute> retrieveAttributes(
+ @Override
+ @Nullable @Unmodifiable @NotLive protected Map<String, IdPAttribute> retrieveAttributes(
@Nullable final ExecutableSearchFilter filter) throws ResolutionException {
// The base class method defines the parameter is non-null, so this is arguably unneeded.
@@ -206,4 +209,5 @@ public class LDAPDataConnector extends AbstractSearchDataConnector<ExecutableSea
throw new ResolutionException(getLogPrefix() + " Unable to execute LDAP search", e);
}
}
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/package-info.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/package-info.java
index 421fb0cbb..6cb8e4eb2 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/package-info.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* A {@link net.shibboleth.idp.attribute.resolver.DataConnector} implementation that reads data from an LDAP.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.dc.ldap.impl;
-package net.shibboleth.idp.attribute.resolver.dc.ldap.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/DataSourceValidator.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/DataSourceValidator.java
index 3cbe398a5..dffd14cbb 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/DataSourceValidator.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/DataSourceValidator.java
@@ -20,6 +20,7 @@ package net.shibboleth.idp.attribute.resolver.dc.rdbms.impl;
import java.sql.Connection;
import java.sql.SQLException;
+import javax.annotation.Nonnull;
import javax.sql.DataSource;
import org.slf4j.Logger;
@@ -36,7 +37,7 @@ import net.shibboleth.shared.primitive.LoggerFactory;
public class DataSourceValidator implements Validator {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(DataSourceValidator.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(DataSourceValidator.class);
/** Whether validate should throw, default value is <code>true</code>. */
private boolean throwOnValidateError;
@@ -53,8 +54,9 @@ public class DataSourceValidator implements Validator {
return throwOnValidateError;
}
+// Checkstyle: CyclomaticComplexity OFF
/** {@inheritDoc} */
- @Override public void validate(final DataConnector dataConnector) throws ValidationException {
+ @Override public void validate(@Nonnull final DataConnector dataConnector) throws ValidationException {
if (!(dataConnector instanceof RDBMSDataConnector)) {
throw new ValidationException("DataConnector must be of type RDBMSDataConnector");
}
@@ -97,4 +99,6 @@ public class DataSourceValidator implements Validator {
}
}
}
-}
+// Checkstyle: CyclomaticComplexity ON
+
+}
\ No newline at end of file
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 f0461b539..f6b9980b2 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
@@ -37,6 +37,8 @@ import net.shibboleth.idp.attribute.resolver.dc.rdbms.ExecutableStatement;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.ResultMappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.StringResultMappingStrategy;
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.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -132,8 +134,8 @@ public class RDBMSDataConnector extends AbstractSearchDataConnector<ExecutableSt
* data into {@link IdPAttribute}s
*/
@Override
- @Nullable protected Map<String, IdPAttribute> retrieveAttributes(@Nullable final ExecutableStatement statement)
- throws ResolutionException {
+ @Nullable @Unmodifiable @NotLive protected Map<String, IdPAttribute> retrieveAttributes(
+ @Nullable final ExecutableStatement statement) throws ResolutionException {
// The base class method defines the parameter is non-null, so this is arguably unneeded.
if (statement == null) {
@@ -151,4 +153,5 @@ public class RDBMSDataConnector extends AbstractSearchDataConnector<ExecutableSt
throw new ResolutionException(getLogPrefix() + " Unable to execute SQL query", e);
}
}
+
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/package-info.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/package-info.java
index 7f6572ffc..926d705db 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/package-info.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/package-info.java
@@ -19,5 +19,7 @@
* A {@link net.shibboleth.idp.attribute.resolver.DataConnector} implementation that reads data from a relational
* database.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.dc.rdbms.impl;
-package net.shibboleth.idp.attribute.resolver.dc.rdbms.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/ScriptedStorageMappingStrategy.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/ScriptedStorageMappingStrategy.java
index ec2b09613..1ffacea7a 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/ScriptedStorageMappingStrategy.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/ScriptedStorageMappingStrategy.java
@@ -39,6 +39,8 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.dc.storage.StorageMappingStrategy;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resource.Resource;
import net.shibboleth.shared.scripting.AbstractScriptEvaluator;
@@ -71,7 +73,7 @@ public final class ScriptedStorageMappingStrategy extends AbstractScriptEvaluato
}
/** {@inheritDoc} */
- @Nonnull public Map<String,IdPAttribute> map(@Nonnull final StorageRecord<?> results)
+ @Nonnull @Unmodifiable @NotLive public Map<String,IdPAttribute> map(@Nonnull final StorageRecord<?> results)
throws ResolutionException {
log.debug("{} Handling StorageRecord", getLogPrefix());
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/SimpleStorageMappingStrategy.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/SimpleStorageMappingStrategy.java
index d19acf021..5ec11ddf0 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/SimpleStorageMappingStrategy.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/SimpleStorageMappingStrategy.java
@@ -28,8 +28,9 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.dc.MappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.storage.StorageMappingStrategy;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.StringSupport;
@@ -54,7 +55,7 @@ public class SimpleStorageMappingStrategy implements StorageMappingStrategy {
}
/** {@inheritDoc} */
- @Nonnull @NonnullElements public Map<String,IdPAttribute> map(
+ @Nonnull @Unmodifiable @NotLive public Map<String,IdPAttribute> map(
@Nonnull final StorageRecord<?> results) throws ResolutionException {
final IdPAttribute attribute = new IdPAttribute(attributeId);
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/StorageServiceDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/StorageServiceDataConnector.java
index 403fd3506..a93313709 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/StorageServiceDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/StorageServiceDataConnector.java
@@ -66,7 +66,7 @@ public class StorageServiceDataConnector
/** Constructor. */
public StorageServiceDataConnector() {
setValidator(new Validator() {
- public void validate(final DataConnector dataConnector) throws ValidationException {
+ public void validate(@Nonnull final DataConnector dataConnector) throws ValidationException {
}
public void setThrowValidateError(final boolean what) {
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/TemplatedSearchBuilder.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/TemplatedSearchBuilder.java
index 663864799..a8cdb47c4 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/TemplatedSearchBuilder.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/TemplatedSearchBuilder.java
@@ -224,7 +224,7 @@ public class TemplatedSearchBuilder extends AbstractInitializableComponent
}
/**
- * Helper method to extract the parameters needed for the {@link StorageServiceSearch}
+ * Helper method to extract the parameters needed for the {@link StorageServiceSearch}.
*
* @param resolutionContext the context of the resolution
* @param dependencyAttributes the attributes we depend upon
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/package-info.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/package-info.java
index 52b89e3f8..6086a2f6f 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/package-info.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/storage/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* Implementation of StorageService-backed data connector.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.dc.storage.impl;
-package net.shibboleth.idp.attribute.resolver.dc.storage.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
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 41ed70f9f..3873382bb 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
@@ -52,8 +52,9 @@ import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPlugin;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
+import net.shibboleth.shared.annotation.constraint.Live;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.collection.LazyList;
@@ -98,9 +99,9 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
/** Sets the attribute definitions for this resolver.
* @param definitions attribute definitions loaded in to this resolver
*/
- public void setAttributeDefinitions(@Nonnull @NonnullElements final Collection<AttributeDefinition> definitions) {
+ public void setAttributeDefinitions(@Nonnull final Collection<AttributeDefinition> definitions) {
checkSetterPreconditions();
- Constraint.isNotNull(definitions, "Attribute Defintions should be non-null");
+ Constraint.isNotNull(definitions, "Attribute Defintions cannot be null");
final Map<String, AttributeDefinition> checkedDefinitions = new HashMap<>(definitions.size());
for (final AttributeDefinition definition : definitions) {
@@ -112,7 +113,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
checkedDefinitions.put(definition.getId(), definition);
}
}
- attributeDefinitions = Map.copyOf(checkedDefinitions);
+ attributeDefinitions = CollectionSupport.copyToMap(checkedDefinitions);
}
/**
@@ -120,17 +121,16 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
*
* @return attribute definitions loaded in to this resolver
*/
- @NonnullAfterInit @NonnullElements @Unmodifiable public Map<String, AttributeDefinition>
- getAttributeDefinitions() {
+ @NonnullAfterInit @Unmodifiable @NotLive public Map<String,AttributeDefinition> getAttributeDefinitions() {
return attributeDefinitions;
}
/** Sets the data connectors for this resolver.
* @param connectors data connectors loaded in to this resolver
*/
- public void setDataConnectors(@Nonnull @NonnullElements final Collection<DataConnector> connectors){
+ public void setDataConnectors(@Nonnull final Collection<DataConnector> connectors) {
checkSetterPreconditions();
- Constraint.isNotNull(connectors, "Data Connectors should be non-null");
+ Constraint.isNotNull(connectors, "Data Connectors cannot be null");
final Map<String, DataConnector> checkedConnectors = new HashMap<>(connectors.size());
for (final DataConnector connector : connectors) {
@@ -142,7 +142,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
checkedConnectors.put(connector.getId(), connector);
}
}
- dataConnectors = Map.copyOf(checkedConnectors);
+ dataConnectors = CollectionSupport.copyToMap(checkedConnectors);
}
/**
@@ -150,7 +150,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
*
* @return data connectors loaded in to this resolver
*/
- @NonnullAfterInit @NonnullElements @Unmodifiable public Map<String, DataConnector> getDataConnectors() {
+ @NonnullAfterInit @Unmodifiable @NotLive public Map<String, DataConnector> getDataConnectors() {
return dataConnectors;
}
@@ -183,7 +183,8 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
* @throws ResolutionException thrown if there is a problem resolving the attributes for the subject
*/
// CheckStyle: CyclomaticComplexity OFF
- @Override public void resolveAttributes(@Nonnull final AttributeResolutionContext resolutionContext)
+ @Override
+ public void resolveAttributes(@Nonnull final AttributeResolutionContext resolutionContext)
throws ResolutionException {
checkComponentActive();
@@ -259,7 +260,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
*
* @return list of attributes, identified by IDs, that should be resolved
*/
- @Nonnull @NonnullElements protected Collection<String> getToBeResolvedAttributeIds(
+ @Nonnull @Live protected Collection<String> getToBeResolvedAttributeIds(
@Nonnull final AttributeResolutionContext resolutionContext) {
Constraint.isNotNull(resolutionContext, "Attribute resolution context cannot be null");
@@ -439,8 +440,8 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
* @param input the inout list
* @return a null stripped, or null list of values
*/
- private @Nullable @NonnullElements List<IdPAttributeValue> filterAttributeValues(final String attributeId,
- final List<IdPAttributeValue> input) {
+ @Nullable @Live private List<IdPAttributeValue> filterAttributeValues(@Nonnull final String attributeId,
+ @Nonnull final List<IdPAttributeValue> input) {
log.debug("{} De-duping (and null filtering) attribute definition {} result",
logPrefix, attributeId);
@@ -480,8 +481,8 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
* @param workContext context to extract attributes from
* @param includeDependencyOnly whether we include dependencyOnly attributes
*/
- private void collectResolvedAttributes(final Map<String, IdPAttribute> resolvedAttributes,
- final AttributeResolverWorkContext workContext, final boolean includeDependencyOnly) {
+ private void collectResolvedAttributes(@Nonnull final Map<String, IdPAttribute> resolvedAttributes,
+ @Nonnull final AttributeResolverWorkContext workContext, final boolean includeDependencyOnly) {
for (final ResolvedAttributeDefinition definition : workContext.getResolvedIdPAttributeDefinitions().values()) {
final IdPAttribute resolvedAttribute = definition.getResolvedAttribute();
@@ -524,9 +525,9 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
* @param workContext context to extract attributes from
*/
// CheckStyle: CyclomaticComplexity OFF
- private void collectExportingDataConnectors(final Map<String, IdPAttribute> resolvedAttributes,
- final AttributeResolutionContext resolutionContext,
- final AttributeResolverWorkContext workContext) {
+ private void collectExportingDataConnectors(@Nonnull final Map<String, IdPAttribute> resolvedAttributes,
+ @Nonnull final AttributeResolutionContext resolutionContext,
+ @Nonnull final AttributeResolverWorkContext workContext) {
for (final ResolvedDataConnector dataConnector: workContext.getResolvedDataConnectors().values()) {
@@ -579,7 +580,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
protected void finalizeResolvedAttributes(@Nonnull final AttributeResolutionContext resolutionContext) {
Constraint.isNotNull(resolutionContext, "Attribute resolution context cannot be null");
final AttributeResolverWorkContext workContext =
- resolutionContext.getSubcontext(AttributeResolverWorkContext.class);
+ resolutionContext.ensureSubcontext(AttributeResolverWorkContext.class);
final Map<String, IdPAttribute> resolvedAttributes = new LazyMap<>();
@@ -603,7 +604,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
protected void finalizePreResolvedAttributes(@Nonnull final AttributeResolutionContext resolutionContext) {
Constraint.isNotNull(resolutionContext, "Attribute resolution context cannot be null");
final AttributeResolverWorkContext workContext =
- resolutionContext.getSubcontext(AttributeResolverWorkContext.class);
+ resolutionContext.ensureSubcontext(AttributeResolverWorkContext.class);
final Map<String, IdPAttribute> resolvedAttributes = new LazyMap<>();
@@ -660,8 +661,9 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
*
* @throws ComponentInitializationException thrown if there is a dependency loop
*/
- protected void checkPlugInDependencies(final String circularCheckPluginId, final ResolverPlugin<?> plugin,
- final Set<String> checkedPlugins) throws ComponentInitializationException {
+ protected void checkPlugInDependencies(@Nullable final String circularCheckPluginId,
+ @Nonnull final ResolverPlugin<?> plugin, @Nonnull final Set<String> checkedPlugins)
+ throws ComponentInitializationException {
final String pluginId = plugin.getId();
for (final ResolverAttributeDefinitionDependency attrDependency : plugin.getAttributeDependencies()) {
@@ -670,7 +672,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
continue;
}
- if (circularCheckPluginId.equals(attrDependency.getDependencyPluginId())) {
+ if (attrDependency.getDependencyPluginId().equals(circularCheckPluginId)) {
throw new ComponentInitializationException(logPrefix + " Plugin '" + circularCheckPluginId
+ "' and attribute definition '" + attrDependency.getDependencyPluginId()
+ "' have a circular dependency on each other.");
@@ -694,7 +696,7 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
continue;
}
- if (circularCheckPluginId.equals(dependency.getDependencyPluginId())) {
+ if (dependency.getDependencyPluginId().equals(circularCheckPluginId)) {
throw new ComponentInitializationException(logPrefix + " Plugin '" + circularCheckPluginId
+ "' and data connector '" + dependency.getDependencyPluginId()
+ "' have a circular dependency on each other.");
@@ -747,4 +749,4 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
}
}
-}
+}
\ No newline at end of file
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/package-info.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/package-info.java
index 280700ea7..7434f7c5b 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/package-info.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/package-info.java
@@ -16,5 +16,7 @@
*/
/** Implementations of core resolver functionality. */
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.impl;
-package net.shibboleth.idp.attribute.resolver.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java
index 22f63a102..c4c5fb0f1 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java
@@ -59,7 +59,7 @@ public class SubjectDerivedAttributeDefinitionParser extends BaseAttributeDefini
@Nullable private Class<? extends Function<?,?>> principalDerivedClass;
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(SubjectDerivedAttributeDefinitionParser.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(SubjectDerivedAttributeDefinitionParser.class);
/** Constructor. */
@SuppressWarnings("unchecked")
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/package-info.java
index b60a44c08..f2e5b76be 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* Implementation of the Attribute Definition parsers.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.ad.impl;
-package net.shibboleth.idp.attribute.resolver.spring.ad.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/mapped/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/mapped/impl/package-info.java
index cee66155e..423846a7a 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/mapped/impl/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/mapped/impl/package-info.java
@@ -19,5 +19,7 @@
* Contains the parsers for the {@link net.shibboleth.idp.attribute.resolver.ad.mapped.impl.MappedAttributeDefinition}
* and its child elements.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.ad.mapped.impl;
-package net.shibboleth.idp.attribute.resolver.spring.ad.mapped.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/package-info.java
index f43255878..f1235a4ef 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/package-info.java
@@ -16,8 +16,10 @@
*/
/**
- * Classes in this package are to do with parsing the attribute resolver definitions
- * associated with schema urn\mace:shibboleth:2.0:resolver:ad.
+ * Classes in this package are to do with parsing the attribute definitions
+ * associated with schema urn:mace:shibboleth:2.0:resolver.
*/
+ at NonnullElements
package net.shibboleth.idp.attribute.resolver.spring.ad;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/package-info.java
index fca4d36c2..4904edd97 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* The parser for the HTTP Data connector.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.dc.http.impl;
-package net.shibboleth.idp.attribute.resolver.spring.dc.http.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/package-info.java
index 2945f37ee..149380a50 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* Implementation of specific DataConnector parsers.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.dc.impl;
-package net.shibboleth.idp.attribute.resolver.spring.dc.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/package-info.java
index b3043c69c..a1b14c821 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* The parser for the LDAP Data connector.
*/
+ at NonnullElements
package net.shibboleth.idp.attribute.resolver.spring.dc.ldap.impl;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/package-info.java
index 78b16cdf8..fc51765ca 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/package-info.java
@@ -18,5 +18,7 @@
/**
* Supported base class for the implementation of specific DataConnector parsers.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.dc;
-package net.shibboleth.idp.attribute.resolver.spring.dc;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/package-info.java
index a6e274d3f..d67d9a81e 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* The parser for the RDBMS Data connector.
*/
+ at NonnullElements
package net.shibboleth.idp.attribute.resolver.spring.dc.rdbms.impl;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/package-info.java
index 505e066d7..59f9c26f7 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* Parser for StorageService data connector.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.dc.storage.impl;
-package net.shibboleth.idp.attribute.resolver.spring.dc.storage.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/package-info.java
index 7512358e8..23355fefd 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* Implememtation of atttribute encoders.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.enc.impl;
-package net.shibboleth.idp.attribute.resolver.spring.enc.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/package-info.java
index 1bcaebd67..ac30138e3 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/package-info.java
@@ -18,5 +18,7 @@
/**
* Parsers for the urn:mace:shibboleth:2.0:attribute:encoder namespace.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.enc;
-package net.shibboleth.idp.attribute.resolver.spring.enc;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/package-info.java
index 2283b65db..df14541ec 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/package-info.java
@@ -18,5 +18,7 @@
/**
* Implementation of top level attribute resolvers.
*/
+ at NonnullElements
+package net.shibboleth.idp.attribute.resolver.spring.impl;
-package net.shibboleth.idp.attribute.resolver.spring.impl;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/package-info.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/package-info.java
index 225cabf1c..9bad01c08 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/package-info.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/package-info.java
@@ -17,7 +17,9 @@
/**
* Classes in this package are to do with parsing the attribute resolver definitions
- * associated with schema urn\mace:shibboleth:2.0:resolver.
+ * associated with schema urn:mace:shibboleth:2.0:resolver.
*/
+ at NonnullElements
package net.shibboleth.idp.attribute.resolver.spring;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java
index 1d47f003b..cf3ce9fa7 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java
@@ -110,6 +110,7 @@ public class AttributeMappingNodeProcessorTest extends XMLObjectBaseTestCase {
assertTrue(entityDescriptor.getObjectMetadata().get(AttributesMapContainer.class).isEmpty());
assert processor != null;
+ assert entityDescriptor != null;
processor.process(entityDescriptor);
assert entityDescriptor != null;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list