[java-shib-attribute] branch main updated: Null checking
Rod Widdowson
rdw at steadingsoftware.com
Mon Jan 30 09:57:45 UTC 2023
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch main
in repository java-shib-attribute.
View the commit online:
http://git.shibboleth.net/view/?p=java-shib-attribute.git;a=commit;h=ed01b2ecb1bace134b1b5e5eaae917bb84092895
The following commit(s) were added to refs/heads/main by this push:
new ed01b2ecb Null checking
ed01b2ecb is described below
commit ed01b2ecb1bace134b1b5e5eaae917bb84092895
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sun Jan 29 15:20:50 2023 +0000
Null checking
Use non-null methods where they are available.
Pick off some more low hanging fruit.
---
.../idp/attribute/AttributesMapContainer.java | 4 +++-
.../net/shibboleth/idp/attribute/IdPAttribute.java | 3 ++-
.../idp/attribute/context/AttributeContext.java | 9 ++++----
.../attribute/filter/AttributeFilterPolicy.java | 6 ++---
.../shibboleth/idp/attribute/filter/Matcher.java | 4 ++--
.../idp/attribute/filter/MatcherFromPolicy.java | 4 ++--
.../filter/context/AttributeFilterContext.java | 13 ++++++-----
.../filter/matcher/impl/ScriptedMatcher.java | 7 +++---
.../logic/impl/AbstractComposedMatcher.java | 5 ++--
.../impl/AbstractMatchesShibMDScopeMatcher.java | 9 ++++----
.../saml/impl/AttributeInMetadataMatcher.java | 24 ++++++++++---------
.../impl/ProxiedRequesterPolicyRule.java | 5 ----
.../impl/ProxiedRequesterRegexpPolicyRule.java | 5 ----
.../filter/policyrule/impl/ScriptedPolicyRule.java | 16 ++++++-------
.../AbstractRegistrationAuthorityPolicyRule.java | 6 ++---
.../policyrule/impl/ScriptedPolicyRuleTest.java | 2 +-
.../attribute/impl/ComputedPairwiseIdStore.java | 5 ++--
.../impl/AttributeTranscoderRegistryImpl.java | 27 +++++++++++-----------
.../transcoding/impl/TranscodingRuleLoader.java | 4 +++-
.../attribute/resolver/AbstractDataConnector.java | 4 ++--
.../attribute/resolver/AbstractResolverPlugin.java | 14 +++++------
.../resolver/ResolverDataConnectorDependency.java | 7 +++---
.../context/AttributeResolutionContext.java | 11 +++++----
.../resolver/dc/AbstractMappingStrategy.java | 6 ++---
.../dc/rdbms/StringResultMappingStrategy.java | 4 ++--
.../ad/impl/DateTimeAttributeDefinition.java | 8 ++++---
.../ad/impl/PrincipalNameAttributeDefinition.java | 5 ++--
.../ad/impl/ScriptedAttributeDefinition.java | 7 +++---
.../ad/mapped/impl/MappedAttributeDefinition.java | 9 ++++----
.../resolver/ad/mapped/impl/ValueMap.java | 5 ++--
.../dc/http/impl/AbstractHTTPSearchBuilder.java | 10 ++++----
.../http/impl/ScriptedResponseMappingStrategy.java | 10 ++++----
.../dc/impl/AbstractSearchDataConnector.java | 4 ++--
.../resolver/dc/impl/PairwiseIdDataConnector.java | 3 ++-
.../resolver/dc/impl/ScriptedDataConnector.java | 8 +++----
.../resolver/impl/AttributeResolverImpl.java | 4 +++-
.../dc/impl/StoredIdDataConnectorParserTest.java | 1 +
.../rdbms/impl/RDBMSDataConnectorParserTest.java | 4 ++--
.../resolver/testing/MockDataConnector.java | 6 ++---
.../attribute/resolver/testing/TestSources.java | 4 ++--
.../AbstractSAML1AttributeTranscoder.java | 6 ++---
.../AbstractSAML2AttributeTranscoder.java | 22 +++++++++---------
.../impl/AttributeMappingNodeProcessor.java | 6 ++---
43 files changed, 170 insertions(+), 156 deletions(-)
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/AttributesMapContainer.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/AttributesMapContainer.java
index b0cd4e3de..1764c56d4 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/AttributesMapContainer.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/AttributesMapContainer.java
@@ -30,6 +30,7 @@ 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;
/**
@@ -74,7 +75,8 @@ public final class AttributesMapContainer implements Supplier<Multimap<String,Id
.filter(StringAttributeValue.class::isInstance)
.map(StringAttributeValue.class::cast)
.map(StringAttributeValue::getValue)
- .collect(Collectors.toUnmodifiableList());
+ .collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList()))
+ .get();
}
}
\ No newline at end of file
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/IdPAttribute.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/IdPAttribute.java
index 55308181b..80a44a7e6 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/IdPAttribute.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/IdPAttribute.java
@@ -134,7 +134,8 @@ public class IdPAttribute implements Comparable<IdPAttribute>, Cloneable {
if (newValues != null) {
values = newValues.stream().
map(e -> e==null? new EmptyAttributeValue(EmptyType.NULL_VALUE) :e).
- collect(Collectors.toUnmodifiableList());
+ collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList())).
+ get();
} else {
values = CollectionSupport.emptyList();
}
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/context/AttributeContext.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/context/AttributeContext.java
index 00fa841bb..74471e234 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/context/AttributeContext.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/context/AttributeContext.java
@@ -19,6 +19,7 @@ package net.shibboleth.idp.attribute.context;
import java.util.Collection;
import java.util.Map;
+import java.util.stream.Collector;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
@@ -77,9 +78,9 @@ public final class AttributeContext extends BaseContext {
if (newAttributes != null) {
attributes = newAttributes.
stream().
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId,
+ collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableMap(IdPAttribute::getId,
a -> a,
- CollectionSupport.warningMergeFunction("AttrtibuteContext", true)));
+ CollectionSupport.warningMergeFunction("AttrtibuteContext", true)))).get();
} else {
attributes = CollectionSupport.emptyMap();
}
@@ -109,9 +110,9 @@ public final class AttributeContext extends BaseContext {
if (null != newAttributes) {
unfilteredAttributes = newAttributes.
stream().
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId,
+ collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableMap(IdPAttribute::getId,
a -> a,
- CollectionSupport.warningMergeFunction("AttrtibuteContextUnfiltered", true)));
+ CollectionSupport.warningMergeFunction("AttrtibuteContextUnfiltered", true)))).get();
} else {
unfilteredAttributes = CollectionSupport.emptyMap();
}
diff --git a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/AttributeFilterPolicy.java b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/AttributeFilterPolicy.java
index 31324c476..546117001 100644
--- a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/AttributeFilterPolicy.java
+++ b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/AttributeFilterPolicy.java
@@ -17,7 +17,6 @@
package net.shibboleth.idp.attribute.filter;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -34,6 +33,7 @@ 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.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiedInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.component.UnmodifiableComponent;
@@ -79,9 +79,9 @@ public final class AttributeFilterPolicy extends AbstractIdentifiedInitializable
rule = Constraint.isNotNull(requirementRule, "Attribute filter policy activiation criterion can not be null");
if (null != attributeRules) {
- valuePolicies = List.copyOf(attributeRules);
+ valuePolicies = CollectionSupport.copyToList(attributeRules);
} else {
- valuePolicies = Collections.emptyList();
+ valuePolicies = CollectionSupport.emptyList();
}
}
diff --git a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/Matcher.java b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/Matcher.java
index e23027955..a46b4cf55 100644
--- a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/Matcher.java
+++ b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/Matcher.java
@@ -17,7 +17,6 @@
package net.shibboleth.idp.attribute.filter;
-import java.util.Collections;
import java.util.Set;
import javax.annotation.Nonnull;
@@ -29,6 +28,7 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.IdentifiedComponent;
/** Java definition of MatchFunctorType as applied to value filtering. */
@@ -56,7 +56,7 @@ public interface Matcher extends IdentifiedComponent {
/** {@inheritDoc} */
@Override public Set<IdPAttributeValue> getMatchingValues(@Nonnull final IdPAttribute attribute,
@Nonnull final AttributeFilterContext filterContext) {
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
@Override @Nullable public String getId() {
diff --git a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/MatcherFromPolicy.java b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/MatcherFromPolicy.java
index 2c06fd8fa..d97f3aecd 100644
--- a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/MatcherFromPolicy.java
+++ b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/MatcherFromPolicy.java
@@ -17,7 +17,6 @@
package net.shibboleth.idp.attribute.filter;
-import java.util.Collections;
import java.util.Set;
import javax.annotation.Nonnull;
@@ -30,6 +29,7 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.filter.PolicyRequirementRule.Tristate;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.DestructableComponent;
import net.shibboleth.shared.component.IdentifiedComponent;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -79,7 +79,7 @@ public final class MatcherFromPolicy extends BaseBridgingClass implements Matche
return null;
} else if (Tristate.FALSE == result) {
log.debug("{} The rule returned FALSE, no values returned", getLogPrefix());
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
} else {
log.debug("{} The rule returned TRUE, all values returned", getLogPrefix());
return Set.copyOf(attribute.getValues());
diff --git a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java
index 98245c2f5..cc9a34474 100644
--- a/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java
+++ b/shib-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java
@@ -208,10 +208,11 @@ public final class AttributeFilterContext extends BaseContext {
if (attributes != null) {
prefilteredAttributes = attributes.
stream().
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, e -> e,
- CollectionSupport.warningMergeFunction("AttrtibuteFilterContextPrefiltered", true)));
+ collect(CollectionSupport.nonnullCollector(
+ Collectors.toUnmodifiableMap(IdPAttribute::getId, e -> e,
+ CollectionSupport.warningMergeFunction("AttrtibuteFilterContextPrefiltered", true)))).get();
} else {
- prefilteredAttributes = Collections.emptyMap();
+ prefilteredAttributes = CollectionSupport.emptyMap();
}
return this;
@@ -239,11 +240,11 @@ public final class AttributeFilterContext extends BaseContext {
if (attributes != null) {
filteredAttributes = attributes.
stream().
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId,
+ collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableMap(IdPAttribute::getId,
e -> e,
- CollectionSupport.warningMergeFunction("AttrtibuteFilterContextFiltered", true)));
+ CollectionSupport.warningMergeFunction("AttrtibuteFilterContextFiltered", true)))).get();
} else {
- filteredAttributes = Collections.emptyMap();
+ filteredAttributes = CollectionSupport.emptyMap();
}
return this;
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcher.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcher.java
index f9836d73b..69ae01dc7 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcher.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcher.java
@@ -42,6 +42,7 @@ import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
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.component.UnmodifiableComponent;
@@ -75,7 +76,7 @@ public class ScriptedMatcher extends AbstractIdentifiableInitializableComponent
/** Constructor. */
public ScriptedMatcher() {
- contextExtenders = Collections.emptyList();
+ contextExtenders = CollectionSupport.emptyList();
}
/**
@@ -130,9 +131,9 @@ public class ScriptedMatcher extends AbstractIdentifiableInitializableComponent
checkSetterPreconditions();
if (extenders != null) {
- contextExtenders = List.copyOf(extenders);
+ contextExtenders = CollectionSupport.copyToList(extenders);
} else {
- contextExtenders = Collections.emptyList();
+ contextExtenders = CollectionSupport.emptyList();
}
}
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/logic/impl/AbstractComposedMatcher.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/logic/impl/AbstractComposedMatcher.java
index d0d6b41ac..f01e40b53 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/logic/impl/AbstractComposedMatcher.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/logic/impl/AbstractComposedMatcher.java
@@ -17,7 +17,6 @@
package net.shibboleth.idp.attribute.filter.matcher.logic.impl;
-import java.util.Collections;
import java.util.List;
import javax.annotation.Nonnull;
@@ -27,6 +26,7 @@ import net.shibboleth.idp.attribute.filter.Matcher;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
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.component.UnmodifiableComponent;
@@ -51,7 +51,7 @@ public abstract class AbstractComposedMatcher extends AbstractIdentifiableInitia
if (composedMatchers != null) {
matchers = List.copyOf(composedMatchers);
} else {
- matchers = Collections.emptyList();
+ matchers = CollectionSupport.emptyList();
}
}
@@ -69,6 +69,7 @@ public abstract class AbstractComposedMatcher extends AbstractIdentifiableInitia
* @return the composed matchers
*/
@Nonnull @NonnullElements @Unmodifiable public List<Matcher> getComposedMatchers() {
+ assert matchers != null;
return matchers;
}
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AbstractMatchesShibMDScopeMatcher.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AbstractMatchesShibMDScopeMatcher.java
index a270515bd..486a7ff9b 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AbstractMatchesShibMDScopeMatcher.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AbstractMatchesShibMDScopeMatcher.java
@@ -38,6 +38,7 @@ import net.shibboleth.idp.saml.metadata.ScopesContainer;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
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.primitive.LoggerFactory;
@@ -73,14 +74,14 @@ public abstract class AbstractMatchesShibMDScopeMatcher
if (issuerContext == null) {
LOG.warn("{} internal error: no IssueContext found",
getLogPrefix());
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
final RoleDescriptor roleDescriptor = issuerContext.getRoleDescriptor();
final EntityDescriptor entityDescriptor = issuerContext.getEntityDescriptor();
final List<ScopesContainer> roleContainers;
if (roleDescriptor == null) {
LOG.debug("{} No Role Descriptor found");
- roleContainers = Collections.emptyList();
+ roleContainers = CollectionSupport.emptyList();
} else {
roleContainers = roleDescriptor.getObjectMetadata().get(ScopesContainer.class);
}
@@ -88,7 +89,7 @@ public abstract class AbstractMatchesShibMDScopeMatcher
final List<ScopesContainer> entityContainers;
if (entityDescriptor == null) {
LOG.debug("{} No Entity Descriptor found");
- entityContainers = Collections.emptyList();
+ entityContainers = CollectionSupport.emptyList();
} else {
entityContainers= entityDescriptor.getObjectMetadata().get(ScopesContainer.class);
}
@@ -101,7 +102,7 @@ public abstract class AbstractMatchesShibMDScopeMatcher
LOG.debug("{} No <shibmd:Scope> found for {}, no atributes matched",
getLogPrefix(),
entityDescriptor == null? "<unknown>" : entityDescriptor.getID());
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
for (final IdPAttributeValue value : attribute.getValues()) {
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java
index f2af0e47c..6194d28bc 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java
@@ -56,6 +56,7 @@ import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
@@ -187,11 +188,11 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
if (matchIfMetadataSilent) {
log.debug("{} The peer's metadata did not contain requested attribute information"
+ ", returning all the input values", getLogPrefix());
- return Set.copyOf(attribute.getValues());
+ return CollectionSupport.copyToSet(attribute.getValues());
}
log.debug("{} The peer's metadata did not contain requested attribute information"
+ ", returning no values", getLogPrefix());
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
if (attributeName != null) {
@@ -204,13 +205,13 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
if (null == requestedAttribute) {
log.debug("{} Attribute {} not found in metadata", getLogPrefix(), attributeToLog);
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
if (onlyIfRequired && !requestedAttribute.isRequired()) {
log.debug("{} Attribute {} found in metadata, but was not required, values not matched",
getLogPrefix(), attributeToLog);
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
final Set<IdPAttributeValue> values = new LinkedHashSet<>();
@@ -228,17 +229,17 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
// TODO: not sure what the right answer is here
log.debug("{} The peer's metadata did not contain requested attribute information"
+ ", returning all the input values", getLogPrefix());
- return Set.copyOf(attribute.getValues());
+ return CollectionSupport.copyToSet(attribute.getValues());
}
log.debug("{} The peer's metadata did not contain requested attribute information"
+ ", returning no values", getLogPrefix());
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
final Collection<IdPAttribute> requestedAttributeList = requestedAttributes.get(attribute.getId());
if (null == requestedAttributeList) {
log.debug("{} Decoded attribute {} not found in metadata", getLogPrefix(), attribute.getId());
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
final Set<IdPAttributeValue> values = new LinkedHashSet<>();
@@ -342,11 +343,12 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
if (null == requestedValues || requestedValues.isEmpty()) {
log.debug("{} Attribute {} found in metadata and no values specified", getLogPrefix(), attribute.getId());
- return Set.copyOf(attribute.getValues());
+ return CollectionSupport.copyToSet(attribute.getValues());
}
final Set<IdPAttributeValue> result = attribute.getValues().stream().
- filter(v -> requestedValues.contains(v)).collect(Collectors.toUnmodifiableSet());
+ filter(v -> requestedValues.contains(v)).
+ collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableSet())).get();
log.debug("{} Values matched with metadata for Attribute {} : {}", getLogPrefix(), attribute.getId(), result);
return result;
@@ -368,7 +370,7 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
if (requestedValues.isEmpty()) {
log.debug("{} Attribute {} found in metadata and no values specified", getLogPrefix(), attributeToLog);
- return Set.copyOf(attribute.getValues());
+ return CollectionSupport.copyToSet(attribute.getValues());
}
final Set<IdPAttributeValue> result = new LinkedHashSet<>(attribute.getValues().size());
@@ -387,7 +389,7 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
}
log.debug("{} Values matched with metadata for Attribute {} : {}", getLogPrefix(), attributeToLog, result);
- return Set.copyOf(result);
+ return CollectionSupport.copyToSet(result);
}
// Checkstyle: CyclomaticComplexity OFF
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterPolicyRule.java
index 8bd2b3ce8..d1f0c3ba0 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterPolicyRule.java
@@ -20,11 +20,9 @@ package net.shibboleth.idp.attribute.filter.policyrule.filtercontext.impl;
import javax.annotation.Nonnull;
import org.opensaml.profile.context.ProxiedRequesterContext;
-import org.slf4j.Logger;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
import net.shibboleth.idp.attribute.filter.policyrule.impl.AbstractStringPolicyRule;
-import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Compare a proxied attribute requester's entity ID for this resolution with the provided name.
@@ -33,9 +31,6 @@ import net.shibboleth.shared.primitive.LoggerFactory;
*/
public class ProxiedRequesterPolicyRule extends AbstractStringPolicyRule {
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(ProxiedRequesterPolicyRule.class);
-
/**
* Compare the requester from the context with the provided string.
*
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterRegexpPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterRegexpPolicyRule.java
index 4477d43ff..7148e38a8 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterRegexpPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/ProxiedRequesterRegexpPolicyRule.java
@@ -20,11 +20,9 @@ package net.shibboleth.idp.attribute.filter.policyrule.filtercontext.impl;
import javax.annotation.Nonnull;
import org.opensaml.profile.context.ProxiedRequesterContext;
-import org.slf4j.Logger;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
import net.shibboleth.idp.attribute.filter.policyrule.impl.AbstractRegexpPolicyRule;
-import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Compare a proxied attribute requester's entity ID for this resolution with the provided regexp.
@@ -33,9 +31,6 @@ import net.shibboleth.shared.primitive.LoggerFactory;
*/
public class ProxiedRequesterRegexpPolicyRule extends AbstractRegexpPolicyRule {
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(ProxiedRequesterRegexpPolicyRule.class);
-
/**
* Compare the requester from the context with the provided regexp.
*
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRule.java
index d6b68d24a..26aee03e4 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRule.java
@@ -18,8 +18,6 @@
package net.shibboleth.idp.attribute.filter.policyrule.impl;
import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
import java.util.Objects;
import javax.annotation.Nonnull;
@@ -37,6 +35,7 @@ import net.shibboleth.idp.attribute.filter.PolicyRequirementRule;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
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.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.component.UnmodifiableComponent;
@@ -71,7 +70,7 @@ public class ScriptedPolicyRule extends AbstractIdentifiableInitializableCompone
/** Constructor. */
public ScriptedPolicyRule() {
- contextExtenders = Collections.emptyList();
+ contextExtenders = CollectionSupport.emptyList();
}
/**
@@ -98,7 +97,8 @@ public class ScriptedPolicyRule extends AbstractIdentifiableInitializableCompone
*
* @return the script to be evaluated
*/
- @NonnullAfterInit public EvaluableScript getScript() {
+ @Nonnull private EvaluableScript getScript() {
+ assert script != null;
return script;
}
@@ -123,9 +123,9 @@ public class ScriptedPolicyRule extends AbstractIdentifiableInitializableCompone
@Nullable @NonnullElements final Collection<FilterScriptContextExtender> extenders) {
checkSetterPreconditions();
if (extenders != null) {
- contextExtenders = List.copyOf(extenders);
+ contextExtenders = CollectionSupport.copyToList(extenders);
} else {
- contextExtenders = Collections.emptyList();
+ contextExtenders = CollectionSupport.emptyList();
}
}
@@ -162,7 +162,7 @@ public class ScriptedPolicyRule extends AbstractIdentifiableInitializableCompone
throw new ComponentInitializationException("No script has been provided");
}
- scriptEvaluator = new PolicyRuleScriptEvaluator(script);
+ scriptEvaluator = new PolicyRuleScriptEvaluator(getScript());
scriptEvaluator.setCustomObject(customObject);
scriptEvaluator.setContextExtenders(contextExtenders);
@@ -186,7 +186,7 @@ public class ScriptedPolicyRule extends AbstractIdentifiableInitializableCompone
final ScriptedPolicyRule other = (ScriptedPolicyRule) obj;
- return script.equals(other.getScript());
+ return other.getScript().equals(script);
}
/** {@inheritDoc} */
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractRegistrationAuthorityPolicyRule.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractRegistrationAuthorityPolicyRule.java
index ed776f324..272048ffb 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractRegistrationAuthorityPolicyRule.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractRegistrationAuthorityPolicyRule.java
@@ -18,7 +18,6 @@
package net.shibboleth.idp.attribute.filter.policyrule.saml.impl;
import java.util.Collection;
-import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -37,6 +36,7 @@ import net.shibboleth.idp.attribute.filter.policyrule.impl.AbstractPolicyRule;
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.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
@@ -59,7 +59,7 @@ public abstract class AbstractRegistrationAuthorityPolicyRule extends AbstractPo
* Constructor.
*/
public AbstractRegistrationAuthorityPolicyRule() {
- registrars = Collections.emptySet();
+ registrars = CollectionSupport.emptySet();
}
/**
@@ -68,7 +68,7 @@ public abstract class AbstractRegistrationAuthorityPolicyRule extends AbstractPo
* @return the issuers
*/
@Nonnull @NonnullElements @Unmodifiable @NotLive public Set<String> getRegistrars() {
- return Set.copyOf(registrars);
+ return CollectionSupport.copyToSet(registrars);
}
/**
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRuleTest.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRuleTest.java
index 532597234..56e825eb7 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRuleTest.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/impl/ScriptedPolicyRuleTest.java
@@ -160,7 +160,7 @@ public class ScriptedPolicyRuleTest extends AbstractMatcherPolicyRuleTest {
}
@SuppressWarnings("unlikely-arg-type")
- @Test public void testEqualsHashToString() {
+ @Test public void testEqualsHashToString() throws ComponentInitializationException {
final ScriptedPolicyRule rule = newScriptedPolicyRule(trueReturnScript);
rule.toString();
diff --git a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStore.java b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStore.java
index bb52d1e8c..4db815c32 100644
--- a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStore.java
+++ b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStore.java
@@ -40,6 +40,7 @@ import net.shibboleth.shared.codec.Base32Support;
import net.shibboleth.shared.codec.Base64Support;
import net.shibboleth.shared.codec.DecodingException;
import net.shibboleth.shared.codec.EncodingException;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
@@ -96,7 +97,7 @@ public class ComputedPairwiseIdStore extends AbstractInitializableComponent impl
public ComputedPairwiseIdStore() {
algorithm = "SHA";
encoding = Encoding.BASE64;
- exceptionMap = Collections.emptyMap();
+ exceptionMap = CollectionSupport.emptyMap();
}
/**
@@ -212,7 +213,7 @@ public class ComputedPairwiseIdStore extends AbstractInitializableComponent impl
checkSetterPreconditions();
if (map == null) {
- exceptionMap = Collections.emptyMap();
+ exceptionMap = CollectionSupport.emptyMap();
} else {
exceptionMap = new HashMap<>(map.size());
for (final Map.Entry<String,Map<String,String>> entry : map.entrySet()) {
diff --git a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
index 79a73a9ec..e54676673 100644
--- a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
+++ b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
@@ -47,6 +47,7 @@ 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.logic.Constraint;
import net.shibboleth.shared.primitive.DeprecationSupport;
@@ -161,7 +162,7 @@ public class AttributeTranscoderRegistryImpl extends AbstractIdentifiableInitial
}
final Collection<AttributeTranscoder<?>> transcoders = getAttributeTranscoders(mapping);
- for (final AttributeTranscoder<?> transcoder : transcoders) {
+ for (@Nonnull final AttributeTranscoder<?> transcoder : transcoders) {
addMapping(internalId, transcoder, mapping.getMap());
}
} else {
@@ -194,7 +195,7 @@ public class AttributeTranscoderRegistryImpl extends AbstractIdentifiableInitial
if (displayNameRegistry.containsKey(attribute.getId())) {
return displayNameRegistry.get(attribute.getId());
}
- return Collections.emptyMap();
+ return CollectionSupport.emptyMap();
}
/** {@inheritDoc} */
@@ -206,7 +207,7 @@ public class AttributeTranscoderRegistryImpl extends AbstractIdentifiableInitial
if (descriptionRegistry.containsKey(attribute.getId())) {
return descriptionRegistry.get(attribute.getId());
}
- return Collections.emptyMap();
+ return CollectionSupport.emptyMap();
}
/** {@inheritDoc} */
@@ -218,18 +219,18 @@ public class AttributeTranscoderRegistryImpl extends AbstractIdentifiableInitial
final Multimap<Class<?>,TranscodingRule> propertyCollections = transcodingRegistry.get(from.getId());
if (propertyCollections == null) {
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
final Class<?> effectiveType = getEffectiveType(to);
if (effectiveType == null) {
log.warn("Unsupported object type: {}", to.getClass().getName());
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
log.trace("Using rules for effective type {}", effectiveType.getName());
- return List.copyOf(propertyCollections.get(effectiveType));
+ return CollectionSupport.copyToList(propertyCollections.get(effectiveType));
}
/** {@inheritDoc} */
@@ -241,7 +242,7 @@ public class AttributeTranscoderRegistryImpl extends AbstractIdentifiableInitial
final Class<?> effectiveType = getEffectiveType(from.getClass());
if (effectiveType == null) {
log.warn("Unsupported object type: {}", from.getClass().getName());
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
log.trace("Using rules for effective type {}", effectiveType.getName());
@@ -253,12 +254,12 @@ public class AttributeTranscoderRegistryImpl extends AbstractIdentifiableInitial
if (id != null) {
final Multimap<Class<?>,TranscodingRule> propertyCollections = transcodingRegistry.get(id);
- return propertyCollections != null ? List.copyOf(propertyCollections.get(effectiveType))
- : Collections.emptyList();
+ return propertyCollections != null ? CollectionSupport.copyToList(propertyCollections.get(effectiveType))
+ : CollectionSupport.emptyList();
}
log.warn("Object of type {} did not have a canonical name", from.getClass().getName());
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
/**
@@ -273,20 +274,20 @@ public class AttributeTranscoderRegistryImpl extends AbstractIdentifiableInitial
AttributeTranscoder<?> transcoder = rule.get(PROP_TRANSCODER, AttributeTranscoder.class);
if (transcoder != null) {
- return Collections.singletonList(transcoder);
+ return CollectionSupport.singletonList(transcoder);
}
final String beanNames = rule.get(PROP_TRANSCODER, String.class);
if (beanNames == null) {
log.error("{} property is missing or of incorrect type", PROP_TRANSCODER);
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
final List<AttributeTranscoder<?>> transcoders = new ArrayList<>();
final ApplicationContext appContext = getApplicationContext();
if (appContext != null) {
- for (final String id : StringSupport.stringToList(beanNames, " ")) {
+ for (@Nonnull final String id : StringSupport.stringToList(beanNames, " ")) {
try {
transcoder = appContext.getBean(id, AttributeTranscoder.class);
transcoder.initialize();
diff --git a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/TranscodingRuleLoader.java b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/TranscodingRuleLoader.java
index cabcec534..3c59c79e4 100644
--- a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/TranscodingRuleLoader.java
+++ b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/TranscodingRuleLoader.java
@@ -36,6 +36,7 @@ import org.springframework.core.io.FileSystemResource;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.logic.PredicateSupport;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -131,7 +132,8 @@ public class TranscodingRuleLoader {
.map(m -> {
return new TranscodingRule(m);
})
- .collect(Collectors.toList());
+ .collect(CollectionSupport.nonnullCollector(Collectors.toList()))
+ .get();
}
/**
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 127f7ff1c..59c7a3053 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
@@ -20,7 +20,6 @@ package net.shibboleth.idp.attribute.resolver;
import java.time.Duration;
import java.time.Instant;
import java.util.Collection;
-import java.util.Collections;
import java.util.Map;
import java.util.Set;
@@ -36,6 +35,7 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContex
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
@@ -69,7 +69,7 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
/** Constructor. */
public AbstractDataConnector() {
noRetryDelay = Duration.ZERO;
- exportAttributes = Collections.emptySet();
+ exportAttributes = CollectionSupport.emptySet();
}
/**
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 3d6c69539..4899e13d1 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
@@ -17,7 +17,6 @@
package net.shibboleth.idp.attribute.resolver;
-import java.util.Collections;
import java.util.Objects;
import java.util.Set;
import java.util.function.Predicate;
@@ -39,6 +38,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
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;
@@ -70,8 +70,8 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
/** Constructor. */
public AbstractResolverPlugin() {
- attributeDependencies = Collections.emptySet();
- dataConnectorDependencies = Collections.emptySet();
+ attributeDependencies = CollectionSupport.emptySet();
+ dataConnectorDependencies = CollectionSupport.emptySet();
}
/** {@inheritDoc} */
@@ -136,7 +136,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
checkSetterPreconditions();
Constraint.isNotNull(dependencies, "Attribute Dependencies cannot be null");
- attributeDependencies = Set.copyOf(dependencies);
+ attributeDependencies = CollectionSupport.copyToSet(dependencies);
}
/**
@@ -149,7 +149,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
checkSetterPreconditions();
Constraint.isNotNull(dependencies, "DataConnector Dependencies cannot be null");
- dataConnectorDependencies = Set.copyOf(dependencies);
+ dataConnectorDependencies = CollectionSupport.copyToSet(dependencies);
}
@@ -227,8 +227,8 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
/** {@inheritDoc} */
@Override protected void doDestroy() {
activationCondition = Predicates.alwaysFalse();
- attributeDependencies = Collections.emptySet();
- dataConnectorDependencies = Collections.emptySet();
+ attributeDependencies = CollectionSupport.emptySet();
+ dataConnectorDependencies = CollectionSupport.emptySet();
super.doDestroy();
}
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 b0da33305..e3e031128 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,17 +19,16 @@ package net.shibboleth.idp.attribute.resolver;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashSet;
+import java.util.Objects;
import java.util.Set;
import javax.annotation.Nonnull;
-import java.util.Objects;
-
import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.StringSupport;
@@ -56,7 +55,7 @@ public final class ResolverDataConnectorDependency {
dependencyPluginId = Constraint.isNotEmpty(
StringSupport.trimOrNull(pluginId), "Plugin ID cannot be null or empty");
allAttributes = false;
- attributeNames = Collections.emptySet();
+ attributeNames = CollectionSupport.emptySet();
}
/**
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 d4bffa3ec..a2d65972c 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
@@ -18,7 +18,6 @@
package net.shibboleth.idp.attribute.resolver.context;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -87,7 +86,7 @@ public final class AttributeResolutionContext extends BaseContext {
allowCachedResults = true;
requestedAttributeNames = new HashSet<>();
- resolvedAttributes = Collections.emptyMap();
+ resolvedAttributes = CollectionSupport.emptyMap();
}
/**
@@ -291,7 +290,8 @@ public final class AttributeResolutionContext extends BaseContext {
requestedAttributeNames = Constraint.isNotNull(names, "Requested IdPAttribute collection cannot be null")
.stream()
.filter(n -> n != null)
- .collect(Collectors.toCollection(HashSet::new));
+ .collect(CollectionSupport.nonnullCollector(Collectors.toCollection(HashSet::new)))
+ .get();
return this;
}
@@ -318,8 +318,9 @@ public final class AttributeResolutionContext extends BaseContext {
Constraint.isNotNull(attributes, "Null attribute set cannot be inserted into a context");
resolvedAttributes = attributes.
stream().
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, a -> a,
- CollectionSupport.warningMergeFunction("AttrtibuteResolutionContext", true)));
+ collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableMap(IdPAttribute::getId, a -> a,
+ CollectionSupport.warningMergeFunction("AttrtibuteResolutionContext", true)))).
+ get();
return this;
}
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 967145e09..ac086d695 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,7 +17,6 @@
package net.shibboleth.idp.attribute.resolver.dc;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -26,6 +25,7 @@ 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;
import net.shibboleth.shared.logic.Constraint;
/**
@@ -47,7 +47,7 @@ public abstract class AbstractMappingStrategy<T> implements MappingStrategy<T> {
/** Constructor. */
public AbstractMappingStrategy() {
- resultRenamingMap = Collections.emptyMap();
+ resultRenamingMap = CollectionSupport.emptyMap();
}
/**
@@ -56,7 +56,7 @@ 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 Map.copyOf(resultRenamingMap);
+ return CollectionSupport.copyToMap(resultRenamingMap);
}
/**
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 443ee9ea1..44b553eee 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
@@ -21,7 +21,6 @@ import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -38,6 +37,7 @@ 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.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -95,7 +95,7 @@ public class StringResultMappingStrategy extends AbstractMappingStrategy<ResultS
if (attribute.getValues().isEmpty()) {
attribute.setValues(
- Collections.singletonList(StringAttributeValue.valueOf(results.getString(i))));
+ CollectionSupport.singletonList(StringAttributeValue.valueOf(results.getString(i))));
} else {
final List<IdPAttributeValue> values = new ArrayList<>(attribute.getValues());
values.add(StringAttributeValue.valueOf(results.getString(i)));
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DateTimeAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DateTimeAttributeDefinition.java
index 2165c16a5..f04da659c 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DateTimeAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DateTimeAttributeDefinition.java
@@ -41,6 +41,7 @@ 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.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -157,16 +158,17 @@ public class DateTimeAttributeDefinition extends AbstractAttributeDefinition {
getDataConnectorDependencies(),
getId());
- final List<IdPAttributeValue> converted = values.stream()
+ final List<? extends IdPAttributeValue> converted = values.stream()
.map(v -> convert(v))
.filter(Predicates.notNull())
- .collect(Collectors.toUnmodifiableList());
+ .collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList()))
+ .get();
if (!ignoreConversionErrors && converted.size() != values.size()) {
throw new ResolutionException("Unable to convert all inputs to date/time values.");
}
- result.setValues(converted);
+ result.setValues((List<IdPAttributeValue>) converted);
return result;
}
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrincipalNameAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrincipalNameAttributeDefinition.java
index 9fae33fec..c8f83894a 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrincipalNameAttributeDefinition.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrincipalNameAttributeDefinition.java
@@ -17,8 +17,6 @@
package net.shibboleth.idp.attribute.resolver.ad.impl;
-import java.util.Collections;
-
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -28,6 +26,7 @@ import net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition;
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.collection.CollectionSupport;
import net.shibboleth.shared.primitive.StringSupport;
/**
@@ -45,7 +44,7 @@ public class PrincipalNameAttributeDefinition extends AbstractAttributeDefinitio
}
final IdPAttribute attribute = new IdPAttribute(getId());
- attribute.setValues(Collections.singletonList(new StringAttributeValue(principalName)));
+ attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue(principalName)));
return attribute;
}
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
index 811f7908d..87049b8d4 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
@@ -42,6 +42,7 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContex
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;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -91,7 +92,7 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
/** Constructor. */
public ScriptedAttributeDefinition() {
- contextExtenders = Collections.emptyList();
+ contextExtenders = CollectionSupport.emptyList();
}
/**
@@ -143,9 +144,9 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
@Nullable @NonnullElements final Collection<ResolverScriptContextExtender> extenders) {
checkSetterPreconditions();
if (extenders != null) {
- contextExtenders = List.copyOf(extenders);
+ contextExtenders = CollectionSupport.copyToList(extenders);
} else {
- contextExtenders = Collections.emptyList();
+ contextExtenders = CollectionSupport.emptyList();
}
}
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 c3375c14a..a81ff0736 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
@@ -19,7 +19,6 @@ package net.shibboleth.idp.attribute.resolver.ad.mapped.impl;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -43,6 +42,7 @@ 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.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -65,7 +65,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
@Nonnull private final Logger log = LoggerFactory.getLogger(MappedAttributeDefinition.class);
/** Value maps. */
- @Nonnull @NonnullElements private Set<ValueMap> valueMaps = Collections.emptySet();
+ @Nonnull @NonnullElements private Set<ValueMap> valueMaps = CollectionSupport.emptySet();
/** Whether the definition passes thru unmatched values. */
private boolean passThru;
@@ -90,7 +90,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
public void setValueMaps(@Nullable @NonnullElements final Collection<ValueMap> mappings) {
checkSetterPreconditions();
- valueMaps = mappings != null ? Set.copyOf(mappings) : Collections.emptySet();
+ valueMaps = mappings != null ? CollectionSupport.copyToSet(mappings) : CollectionSupport.emptySet();
}
/**
@@ -207,7 +207,8 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
if (null != defaultValue) {
log.debug("Attribute Definition {}: Default value of {} added as the value for this attribute",
getId(), defaultValue);
- resultAttribute.setValues(Collections.singletonList(defaultValue));
+ assert defaultValue != null;
+ resultAttribute.setValues(CollectionSupport.singletonList(defaultValue));
}
} else {
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 3dc006e9a..fbcf3019c 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
@@ -35,6 +35,7 @@ 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.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
@@ -56,7 +57,7 @@ public class ValueMap implements Function<String, Set<StringAttributeValue>> {
/** Constructor. */
public ValueMap() {
- sourceValues = Collections.emptySet();
+ sourceValues = CollectionSupport.emptySet();
}
/**
@@ -85,7 +86,7 @@ public class ValueMap implements Function<String, Set<StringAttributeValue>> {
*/
public void setSourceValues(@Nullable @NonnullElements final Collection<SourceValue> newValues) {
- sourceValues = newValues != null ? Set.copyOf(newValues) : Collections.emptySet();
+ sourceValues = newValues != null ? CollectionSupport.copyToSet(newValues) : CollectionSupport.emptySet();
}
/**
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 eb6747d4d..1af7ba1a5 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
@@ -45,6 +45,7 @@ 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.collection.Pair;
import net.shibboleth.shared.component.AbstractInitializableComponent;
import net.shibboleth.shared.logic.Constraint;
@@ -72,7 +73,7 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
/** Constructor. */
public AbstractHTTPSearchBuilder() {
- headerList = Collections.emptyList();
+ headerList = CollectionSupport.emptyList();
}
/**
@@ -102,7 +103,8 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
map(e-> new Pair<>(
Constraint.isNotNull(StringSupport.trimOrNull(e.getKey()), "header name must be non null"),
Constraint.isNotNull(StringSupport.trimOrNull(e.getValue()), "header value must be non null"))).
- collect(Collectors.toUnmodifiableList());
+ collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList())).
+ get();
}
/**
@@ -164,10 +166,10 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
@Nullable final HttpClientSecurityParameters securityParameters,
@Nonnull final HTTPResponseMappingStrategy mappingStrategy) throws IOException {
- final HttpClientContext clientContext = HttpClientContext.create();
+ @Nonnull HttpClientContext clientContext = HttpClientContext.create();
HttpClientSecuritySupport.marshalSecurityParameters(clientContext, securityParameters, true);
HttpClientSecuritySupport.addDefaultTLSTrustEngineCriteria(clientContext, request);
- final Map<String,IdPAttribute> results = client.execute(request, mappingStrategy, clientContext);
+ @Nonnull final Map<String,IdPAttribute> results = client.execute(request, mappingStrategy, clientContext);
HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, request.getURI().getScheme());
return results;
}
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 4a2dc02f2..b35c1e9d0 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
@@ -21,7 +21,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -45,6 +44,7 @@ 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.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -85,8 +85,8 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
private ScriptedResponseMappingStrategy(@Nonnull final EvaluableScript theScript) {
super(theScript);
- acceptStatuses = Collections.singleton(HttpStatus.SC_OK);
- acceptTypes = Collections.emptySet();
+ acceptStatuses = CollectionSupport.singleton(HttpStatus.SC_OK);
+ acceptTypes = CollectionSupport.emptySet();
}
/**
@@ -95,7 +95,7 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
* @param statuses successful codes
*/
public void setAcceptStatuses(@Nonnull @NonnullElements final Collection<Integer> statuses) {
- acceptStatuses = Set.copyOf(Constraint.isNotNull(statuses, "Statuses cannot be null"));
+ acceptStatuses = CollectionSupport.copyToSet(Constraint.isNotNull(statuses, "Statuses cannot be null"));
}
/**
@@ -104,7 +104,7 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
* @param types types to allow
*/
public void setAcceptTypes(@Nonnull @NonnullElements final Collection<String> types) {
- acceptTypes = Set.copyOf(StringSupport.normalizeStringCollection(
+ acceptTypes = CollectionSupport.copyToSet(StringSupport.normalizeStringCollection(
Constraint.isNotNull(types, "Types cannot be null")));
}
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 8cb0cb6df..e8c708237 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
@@ -17,7 +17,6 @@
package net.shibboleth.idp.attribute.resolver.dc.impl;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -40,6 +39,7 @@ 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.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -188,7 +188,7 @@ public abstract class AbstractSearchDataConnector<T1 extends ExecutableSearch,T2
log.trace("{} Resolved attributes {}", getLogPrefix(), resolvedAttributes);
assert resultsCache != null;
resultsCache.put(cacheKey, resolvedAttributes != null ? resolvedAttributes
- : Collections.<String,IdPAttribute>emptyMap());
+ : CollectionSupport.<String,IdPAttribute>emptyMap());
}
} else {
log.trace("No cache key returned, will not check for cached results");
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 650bfb153..ed8c468a2 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
@@ -43,6 +43,7 @@ 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.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -297,7 +298,7 @@ public class PairwiseIdDataConnector extends AbstractDataConnector {
return null;
}
final IdPAttribute attribute = new IdPAttribute(getGeneratedAttributeId());
- attribute.setValues(Collections.singletonList(StringAttributeValue.valueOf(value)));
+ attribute.setValues(CollectionSupport.singletonList(StringAttributeValue.valueOf(value)));
return Collections.singletonMap(getGeneratedAttributeId(), attribute);
}
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 839a52411..63cc735be 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
@@ -19,7 +19,6 @@ package net.shibboleth.idp.attribute.resolver.dc.impl;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -45,6 +44,7 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContex
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;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -76,7 +76,7 @@ public class ScriptedDataConnector extends AbstractDataConnector {
/** Constructor. */
public ScriptedDataConnector() {
- contextExtenders = Collections.emptyList();
+ contextExtenders = CollectionSupport.emptyList();
}
/**
@@ -128,9 +128,9 @@ public class ScriptedDataConnector extends AbstractDataConnector {
@Nullable @NonnullElements final Collection<ResolverScriptContextExtender> extenders) {
checkSetterPreconditions();
if (extenders != null) {
- contextExtenders = List.copyOf(extenders);
+ contextExtenders = CollectionSupport.copyToList(extenders);
} else {
- contextExtenders = Collections.emptyList();
+ contextExtenders = CollectionSupport.emptyList();
}
}
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 d8944f0aa..80ccb8056 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
@@ -56,6 +56,7 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContex
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.collection.LazyList;
import net.shibboleth.shared.collection.LazyMap;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
@@ -628,7 +629,8 @@ public class AttributeResolverImpl extends AbstractIdentifiableInitializableComp
preRequestedAttributes = attributeDefinitions.entrySet().stream().
filter(e -> e.getValue().isPreRequested()).
map(Entry::getKey).
- collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
+ collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList())).
+ get();
final HashSet<String> dependencyVerifiedPlugins = new HashSet<>();
for (final DataConnector plugin : dataConnectors.values()) {
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParserTest.java
index ca0764cfa..ba82de55c 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParserTest.java
@@ -35,6 +35,7 @@ import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependen
import net.shibboleth.idp.attribute.resolver.dc.impl.PairwiseIdDataConnector;
import net.shibboleth.idp.attribute.resolver.spring.dc.rdbms.impl.RDBMSDataConnectorParserTest;
import net.shibboleth.idp.attribute.resolver.spring.testing.BaseAttributeDefinitionParserTest;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.spring.resource.PreferFileSystemResourceLoader;
import net.shibboleth.shared.spring.util.ApplicationContextBuilder;
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java
index a0241d602..9d3fbd95f 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java
@@ -28,7 +28,6 @@ import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.Map;
import java.util.stream.Collectors;
@@ -54,6 +53,7 @@ import net.shibboleth.idp.attribute.resolver.dc.rdbms.ExecutableStatement;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.StringResultMappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.DataSourceValidator;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.RDBMSDataConnector;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.spring.resource.PreferFileSystemResourceLoader;
import net.shibboleth.shared.spring.util.ApplicationContextBuilder;
import net.shibboleth.shared.testing.DatabaseTestingSupport;
@@ -158,7 +158,7 @@ public class RDBMSDataConnectorParserTest {
builder.setServiceConfigurations(defs.stream().map(s -> loader.getResource(s)).collect(Collectors.toList()));
if (properties != null) {
- builder.setPropertySources(Collections.singletonList(new ResourcePropertySource(properties)));
+ builder.setPropertySources(CollectionSupport.singletonList(new ResourcePropertySource(properties)));
}
final GenericApplicationContext context = builder.build();
diff --git a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/resolver/testing/MockDataConnector.java b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/resolver/testing/MockDataConnector.java
index 93e16c8d2..85ff85bdd 100644
--- a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/resolver/testing/MockDataConnector.java
+++ b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/resolver/testing/MockDataConnector.java
@@ -17,7 +17,6 @@
package net.shibboleth.idp.attribute.resolver.testing;
-import java.util.Collections;
import java.util.Map;
import java.util.Set;
@@ -34,6 +33,7 @@ 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.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
/** A data connector that just returns a static collection of attributes. */
@@ -81,8 +81,8 @@ public class MockDataConnector extends AbstractDataConnector {
@Nullable @NonnullElements Set<ResolverAttributeDefinitionDependency> attrDepends,
@Nullable @NonnullElements Set<ResolverDataConnectorDependency> dcDepends
) throws ComponentInitializationException {
- setAttributeDependencies(attrDepends == null? Collections.emptySet() : attrDepends);
- setDataConnectorDependencies(dcDepends == null? Collections.emptySet() : dcDepends);
+ setAttributeDependencies(attrDepends == null? CollectionSupport.emptySet() : attrDepends);
+ setDataConnectorDependencies(dcDepends == null? CollectionSupport.emptySet() : dcDepends);
setId(id);
values = connectorValues;
initialize();
diff --git a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/resolver/testing/TestSources.java b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/resolver/testing/TestSources.java
index f859eb5b6..4b55a742e 100644
--- a/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/resolver/testing/TestSources.java
+++ b/shib-attribute-testing/src/main/java/net/shibboleth/idp/attribute/resolver/testing/TestSources.java
@@ -19,7 +19,6 @@ package net.shibboleth.idp.attribute.resolver.testing;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -46,6 +45,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NullableElements;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
/** Basic data sources for testing the attribute generators. */
@@ -255,7 +255,7 @@ public final class TestSources {
if (null == attributeId) {
retVal.setAllAttributes(true);
} else {
- retVal.setAttributeNames(Collections.singleton(attributeId));
+ retVal.setAttributeNames(CollectionSupport.singleton(attributeId));
}
return retVal;
}
diff --git a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java
index 042b2cce3..827d09c7b 100644
--- a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java
+++ b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java
@@ -17,7 +17,6 @@
package net.shibboleth.idp.saml.attribute.transcoding;
-import java.util.Collections;
import java.util.List;
import java.util.function.Function;
@@ -43,6 +42,7 @@ import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.saml.xml.SAMLConstants;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.primitive.LoggerFactory;
/**
@@ -84,7 +84,7 @@ public abstract class AbstractSAML1AttributeTranscoder<EncodedType extends IdPAt
try {
// SAML 1 naming should be based on only what needs to be available from the properties alone.
return new NamingFunction().apply(buildAttribute(null, null, AttributeDesignator.class, rule,
- Collections.emptyList()));
+ CollectionSupport.emptyList()));
} catch (final AttributeEncodingException e) {
return null;
}
@@ -164,7 +164,7 @@ public abstract class AbstractSAML1AttributeTranscoder<EncodedType extends IdPAt
/** {@inheritDoc} */
@Override
@Nonnull protected Iterable<XMLObject> getValues(@Nonnull final AttributeDesignator input) {
- return input instanceof Attribute ? ((Attribute) input).getAttributeValues() : Collections.emptyList();
+ return input instanceof Attribute ? ((Attribute) input).getAttributeValues() : CollectionSupport.emptyList();
}
/** A function to produce a "canonical" name for a SAML 1 {@link AttributeDesignator} for transcoding rules. */
diff --git a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
index 42d3067d3..5bd885757 100644
--- a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
+++ b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
@@ -17,22 +17,12 @@
package net.shibboleth.idp.saml.attribute.transcoding;
-import java.util.Collections;
import java.util.List;
import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import net.shibboleth.idp.attribute.AttributeDecodingException;
-import net.shibboleth.idp.attribute.AttributeEncodingException;
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.IdPRequestedAttribute;
-import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
-
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
import org.opensaml.profile.context.ProfileRequestContext;
@@ -42,6 +32,16 @@ import org.opensaml.saml.saml2.metadata.RequestedAttribute;
import com.google.common.base.Strings;
+import net.shibboleth.idp.attribute.AttributeDecodingException;
+import net.shibboleth.idp.attribute.AttributeEncodingException;
+import net.shibboleth.idp.attribute.IdPAttribute;
+import net.shibboleth.idp.attribute.IdPAttributeValue;
+import net.shibboleth.idp.attribute.IdPRequestedAttribute;
+import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
+
/**
* Base class for transcoders that operate on a SAML 2 {@link Attribute} or {@link RequestedAttribute}.
*
@@ -77,7 +77,7 @@ public abstract class AbstractSAML2AttributeTranscoder<EncodedType extends IdPAt
try {
// SAML 2 naming should be based on only what needs to be available from the properties alone.
return new NamingFunction().apply(buildAttribute(null, null, Attribute.class, rule,
- Collections.emptyList()));
+ CollectionSupport.emptyList()));
} catch (final AttributeEncodingException e) {
return null;
}
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/impl/AttributeMappingNodeProcessor.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/impl/AttributeMappingNodeProcessor.java
index d6dc69f24..6e922fbe4 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/impl/AttributeMappingNodeProcessor.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/impl/AttributeMappingNodeProcessor.java
@@ -18,7 +18,6 @@
package net.shibboleth.idp.saml.attribute.impl;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -54,6 +53,7 @@ import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2StringAttributeTranscoder;
import net.shibboleth.shared.annotation.constraint.Live;
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;
import net.shibboleth.shared.logic.ConstraintViolationException;
@@ -182,7 +182,7 @@ public class AttributeMappingNodeProcessor implements MetadataNodeProcessor {
for (final Attribute attr : ea.getAttributes()) {
try {
assert attr != null;
- Collection<TranscodingRule> rulesets = registry.getTranscodingRules(attr);
+ @Nonnull Collection<TranscodingRule> rulesets = registry.getTranscodingRules(attr);
if (rulesets.isEmpty() && Attribute.URI_REFERENCE.equals(attr.getNameFormat())) {
log.trace("Applying default decoding rule for URI-named attribute {}", attr.getName());
final Map<String,Object> rulemap = new HashMap<>();
@@ -190,7 +190,7 @@ public class AttributeMappingNodeProcessor implements MetadataNodeProcessor {
rulemap.put(AttributeTranscoderRegistry.PROP_TRANSCODER, defaultTranscoder);
rulemap.put(SAML2AttributeTranscoder.PROP_NAME, attr.getName());
final TranscodingRule defaultRule = new TranscodingRule(rulemap);
- rulesets = Collections.singletonList(defaultRule);
+ rulesets = CollectionSupport.singletonList(defaultRule);
}
assert rulesets != null;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list