[java-identity-provider] 04/04: IDP-1516 Reduce guava dependence idp-attribute-resolver-impl
Rod Widdowson
rdw at steadingsoftware.com
Wed Oct 30 07:35:29 EDT 2019
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch master
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=b1bd3f062da8bd4bedd1e459e6b1b3df24b19fb9
commit b1bd3f062da8bd4bedd1e459e6b1b3df24b19fb9
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Wed Oct 30 11:22:42 2019 +0000
IDP-1516 Reduce guava dependence idp-attribute-resolver-impl
https://issues.shibboleth.net/jira/browse/IDP-1516
---
.../impl/IdPAttributePrincipalValuesFunction.java | 8 ++--
.../ad/mapped/impl/MappedAttributeDefinition.java | 21 +++------
.../resolver/ad/mapped/impl/ValueMap.java | 12 +----
.../dc/http/impl/AbstractHTTPSearchBuilder.java | 32 ++++++-------
.../http/impl/ScriptedResponseMappingStrategy.java | 1 +
.../resolver/dc/impl/ScriptedDataConnector.java | 1 +
.../resolver/dc/impl/StaticDataConnector.java | 38 +++++++--------
.../resolver/impl/AttributeResolverImpl.java | 55 +++++++++-------------
.../impl/AttributeResolverServiceGaugeSet.java | 7 ++-
.../ad/mapped/impl/MappedAttributeTest.java | 5 +-
.../dc/http/impl/HTTPDataConnectorTest.java | 3 ++
.../resolver/dc/impl/StaticDataConnectorTest.java | 8 ----
.../impl/AttributeResolutionContextTest.java | 7 ---
.../resolver/impl/AttributeResolverImplTest.java | 12 ++---
14 files changed, 80 insertions(+), 130 deletions(-)
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/IdPAttributePrincipalValuesFunction.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/IdPAttributePrincipalValuesFunction.java
index 2068aae..e194014 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/IdPAttributePrincipalValuesFunction.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/IdPAttributePrincipalValuesFunction.java
@@ -24,8 +24,6 @@ import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import com.google.common.base.Strings;
-
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.authn.principal.IdPAttributePrincipal;
@@ -34,6 +32,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
/** Engine to mine values from {@link IdPAttributePrincipal}s. */
public class IdPAttributePrincipalValuesFunction extends AbstractInitializableComponent implements
@@ -48,9 +47,8 @@ public class IdPAttributePrincipalValuesFunction extends AbstractInitializableCo
* @param attrName the attribute name to read values from
*/
public void setAttributeName(@Nonnull @NotEmpty final String attrName) {
- Constraint.isFalse(Strings.isNullOrEmpty(attrName), "Attribute Name cannot be null or empty");
-
- attributeName = attrName;
+ attributeName = Constraint.isNotNull(StringSupport.trimOrNull(attrName),
+ "Attribute Name cannot be null or empty");
}
/** {@inheritDoc} */
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
index ecbeb4a..cf0715a 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
@@ -27,6 +27,11 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Strings;
+
import net.shibboleth.idp.attribute.EmptyAttributeValue;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
@@ -38,20 +43,12 @@ 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.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Predicates;
-import com.google.common.base.Strings;
-import com.google.common.collect.Collections2;
-
/**
* Implementation of Mapped Attributes. <br/>
* An attribute definition that takes the values from previous resolution stages and converts them as it creates the
@@ -88,15 +85,11 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
*
* @param mappings functions used to map an input value to an output value
*/
- public void setValueMaps(@Nullable @NullableElements final Collection<ValueMap> mappings) {
+ public void setValueMaps(@Nullable final Collection<ValueMap> mappings) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
- if (mappings != null) {
- valueMaps = Set.copyOf(Collections2.filter(mappings, Predicates.notNull()));
- } else {
- valueMaps = Collections.emptySet();
- }
+ valueMaps = mappings != null ? Set.copyOf(mappings) : Collections.emptySet();
}
/**
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/ValueMap.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/ValueMap.java
index 003e1fa..ab445d6 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/ValueMap.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/ValueMap.java
@@ -31,13 +31,9 @@ import javax.annotation.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Predicates;
-import com.google.common.collect.Collections2;
-
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
@@ -86,13 +82,9 @@ 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 @NullableElements final Collection<SourceValue> newValues) {
+ public void setSourceValues(@Nullable final Collection<SourceValue> newValues) {
- if (newValues != null) {
- sourceValues = Set.copyOf(Collections2.filter(newValues, Predicates.notNull()));
- } else {
- sourceValues = Collections.emptySet();
- }
+ sourceValues = newValues != null ? Set.copyOf(newValues) : Collections.emptySet();
}
/**
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
index bba795c..aa3e8b8 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
@@ -19,9 +19,9 @@ package net.shibboleth.idp.attribute.resolver.dc.http.impl;
import java.io.IOException;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -34,8 +34,6 @@ import org.apache.http.client.protocol.HttpClientContext;
import org.opensaml.security.httpclient.HttpClientSecurityParameters;
import org.opensaml.security.httpclient.HttpClientSecuritySupport;
-import com.google.common.collect.ImmutableMap;
-
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
@@ -45,6 +43,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElemen
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.utilities.java.support.collection.Pair;
import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -65,14 +64,14 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
ExecutableSearchBuilder<HTTPSearch> {
/** Map of headers to set. */
- @Nonnull @NonnullElements private Map<String,String> headerMap;
+ @Nonnull @NonnullElements @Unmodifiable private List<Pair<String,String>> headerList;
/** HTTP client security parameters. */
@Nullable private HttpClientSecurityParameters httpClientSecurityParameters;
/** Constructor. */
public AbstractHTTPSearchBuilder() {
- headerMap = Collections.emptyMap();
+ headerList = Collections.emptyList();
}
/**
@@ -80,8 +79,8 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
*
* @return map of headers
*/
- @Nonnull @NonnullElements @NotLive @Unmodifiable public Map<String,String> getHeaders() {
- return ImmutableMap.copyOf(headerMap);
+ @Nonnull @NonnullElements @NotLive @Unmodifiable public List<Pair<String,String>> getHeaders() {
+ return headerList;
}
/**
@@ -96,15 +95,14 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
Constraint.isNotNull(headers, "Map of headers cannot be null");
- headerMap = new HashMap<>(headers.size());
- for (final Map.Entry<String,String> entry : headers.entrySet()) {
- final String key = StringSupport.trimOrNull(entry.getKey());
- final String value = StringSupport.trimOrNull(entry.getValue());
- if (key != null && value != null) {
- headerMap.put(key, value);
- }
- }
+ headerList = headers.
+ entrySet().
+ stream().
+ 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.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
}
/**
@@ -142,8 +140,8 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
final HttpUriRequest request = getHttpRequest(resolutionContext, dependencyAttributes);
- for (final Map.Entry<String,String> entry : headerMap.entrySet()) {
- request.setHeader(entry.getKey(), entry.getValue());
+ for (final Pair<String,String> entry : headerList) {
+ request.setHeader(entry.getFirst(), entry.getSecond());
}
// Checkstyle: AnonInnerLength OFF
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
index 688e9a9..8d6ae11 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
@@ -124,6 +124,7 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
}
/** {@inheritDoc} */
+ @SuppressWarnings("unchecked")
public Map<String,IdPAttribute> handleResponse(final HttpResponse response) throws IOException {
log.debug("{} Handling HTTP response", getLogPrefix());
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java
index 67932d3..2f457dc 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java
@@ -205,6 +205,7 @@ public class ScriptedDataConnector extends AbstractDataConnector {
* @return script result
* @throws ResolutionException if the script fails
*/
+ @SuppressWarnings("unchecked")
@Nullable protected Map<String,IdPAttribute> execute(
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnector.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnector.java
index d80650f..8d3b466 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnector.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnector.java
@@ -18,27 +18,27 @@
package net.shibboleth.idp.attribute.resolver.dc.impl;
import java.util.Collection;
-import java.util.HashMap;
+import java.util.Collections;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.resolver.AbstractDataConnector;
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.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.ImmutableMap;
+import net.shibboleth.utilities.java.support.logic.Constraint;
/**
* A {@link net.shibboleth.idp.attribute.resolver.DataConnector} that just returns a static collection of
@@ -51,7 +51,7 @@ public class StaticDataConnector extends AbstractDataConnector {
@Nonnull private final Logger log = LoggerFactory.getLogger(StaticDataConnector.class);
/** Static collection of values returned by this connector. */
- private Map<String, IdPAttribute> attributes;
+ private @NonnullAfterInit @NonnullElements Map<String, IdPAttribute> attributes;
/**
* Get the static values returned by this connector.
@@ -67,24 +67,18 @@ public class StaticDataConnector extends AbstractDataConnector {
*
* @param newValues static values returned by this connector
*/
- public void setValues(@Nullable @NullableElements final Collection<IdPAttribute> newValues) {
+ public void setValues(@Nonnull @NonnullElements final Collection<IdPAttribute> newValues) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
- if (null == newValues) {
- attributes = null;
- return;
- }
-
- final Map<String, IdPAttribute> map = new HashMap<>(newValues.size());
- for (final IdPAttribute attr : newValues) {
- if (null == attr) {
- continue;
- }
- map.put(attr.getId(), attr);
- }
+ Constraint.isNotNull(newValues, "Values must not be null");
- attributes = ImmutableMap.copyOf(map);
+ attributes = newValues.
+ stream().
+ map(e -> Constraint.isNotNull(e, "non null Attribute in connector")).
+ collect(Collectors.collectingAndThen(
+ Collectors.toMap(IdPAttribute::getId, i -> i),
+ Collections::unmodifiableMap));
}
/** {@inheritDoc} */
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
index 6e02ddd..d68750e 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
@@ -42,8 +42,6 @@ import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.ImmutableMap;
-
import net.shibboleth.ext.spring.service.AbstractServiceableComponent;
import net.shibboleth.idp.attribute.EmptyAttributeValue;
import net.shibboleth.idp.attribute.IdPAttribute;
@@ -62,7 +60,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
import net.shibboleth.utilities.java.support.collection.LazyList;
import net.shibboleth.utilities.java.support.collection.LazyMap;
@@ -112,25 +109,21 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
/** Sets the attribute definitions for this resolver.
* @param definitions attribute definitions loaded in to this resolver
*/
- public void setAttributeDefinitions(@Nullable @NullableElements final Collection<AttributeDefinition> definitions) {
+ public void setAttributeDefinitions(@Nonnull @NonnullElements final Collection<AttributeDefinition> definitions) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ Constraint.isNotNull(definitions, "Attribute Defintions should be non-null");
- final Map<String, AttributeDefinition> checkedDefinitions;
- if (definitions != null) {
- checkedDefinitions = new HashMap<>(definitions.size());
- for (final AttributeDefinition definition : definitions) {
- if (definition != null) {
- if (checkedDefinitions.containsKey(definition.getId())) {
- throw new IllegalArgumentException(logPrefix + " Duplicate Attribute Definition with id '"
- + definition.getId() + "'");
- }
- checkedDefinitions.put(definition.getId(), definition);
+ final Map<String, AttributeDefinition> checkedDefinitions = new HashMap<>(definitions.size());
+ for (final AttributeDefinition definition : definitions) {
+ if (definition != null) {
+ if (checkedDefinitions.containsKey(definition.getId())) {
+ throw new IllegalArgumentException(logPrefix + " Duplicate Attribute Definition with id '"
+ + definition.getId() + "'");
}
+ checkedDefinitions.put(definition.getId(), definition);
}
- } else {
- checkedDefinitions = Collections.emptyMap();
}
- attributeDefinitions = ImmutableMap.copyOf(checkedDefinitions);
+ attributeDefinitions = Map.copyOf(checkedDefinitions);
}
/**
@@ -146,25 +139,21 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
/** Sets the data connectors for this resolver.
* @param connectors data connectors loaded in to this resolver
*/
- public void setDataConnectors( @Nullable @NullableElements final Collection<DataConnector> connectors){
+ public void setDataConnectors(@Nonnull @NonnullElements final Collection<DataConnector> connectors){
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ Constraint.isNotNull(connectors, "Attribute Defintions should be non-null");
- final Map<String, DataConnector> checkedConnectors;
- if (connectors != null) {
- checkedConnectors = new HashMap<>(connectors.size());
- for (final DataConnector connector : connectors) {
- if (connector != null) {
- if (checkedConnectors.containsKey(connector.getId())) {
- throw new IllegalArgumentException(logPrefix + " Duplicate Data Connector Definition with id '"
- + connector.getId() + "'");
- }
- checkedConnectors.put(connector.getId(), connector);
+ final Map<String, DataConnector> checkedConnectors = new HashMap<>(connectors.size());
+ for (final DataConnector connector : connectors) {
+ if (connector != null) {
+ if (checkedConnectors.containsKey(connector.getId())) {
+ throw new IllegalArgumentException(logPrefix + " Duplicate Data Connector Definition with id '"
+ + connector.getId() + "'");
}
+ checkedConnectors.put(connector.getId(), connector);
}
- } else {
- checkedConnectors = Collections.emptyMap();
}
- dataConnectors = ImmutableMap.copyOf(checkedConnectors);
+ dataConnectors = Map.copyOf(checkedConnectors);
}
/**
@@ -619,10 +608,8 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
* </p>
*
* @param resolutionContext current resolution context
- * @return a populated Attribute Context, or nothing
*/
- @Nullable protected void finalizePreResolvedAttributes(@Nonnull
- final AttributeResolutionContext resolutionContext) {
+ protected void finalizePreResolvedAttributes(@Nonnull final AttributeResolutionContext resolutionContext) {
Constraint.isNotNull(resolutionContext, "Attribute resolution context cannot be null");
final AttributeResolverWorkContext workContext =
resolutionContext.getSubcontext(AttributeResolverWorkContext.class, false);
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverServiceGaugeSet.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverServiceGaugeSet.java
index fbfcaea..3a42f38 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverServiceGaugeSet.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverServiceGaugeSet.java
@@ -18,6 +18,7 @@ package net.shibboleth.idp.attribute.resolver.impl;
import java.time.Instant;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nonnull;
@@ -29,8 +30,6 @@ import com.codahale.metrics.Gauge;
import com.codahale.metrics.MetricFilter;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.MetricSet;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
import net.shibboleth.idp.attribute.resolver.AttributeResolver;
import net.shibboleth.idp.attribute.resolver.DataConnector;
@@ -63,7 +62,7 @@ public class AttributeResolverServiceGaugeSet extends ReloadableServiceGaugeSet<
MetricRegistry.name(DEFAULT_METRIC_NAME, metricName, "failure"),
new Gauge<Map<String,Instant>>() {
public Map<String,Instant> getValue() {
- final Builder<String,Instant> mapBuilder = ImmutableMap.<String,Instant>builder();
+ final Map<String,Instant> mapBuilder = new HashMap<>();
final ServiceableComponent<AttributeResolver> component =
getService().getServiceableComponent();
if (component != null) {
@@ -89,7 +88,7 @@ public class AttributeResolverServiceGaugeSet extends ReloadableServiceGaugeSet<
component.unpinComponent();
}
}
- return mapBuilder.build();
+ return Map.copyOf(mapBuilder);
}
});
// Checkstyle: AnonInnerLength ON
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeTest.java
index bba88e1..57e7ff1 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeTest.java
@@ -208,9 +208,8 @@ public class MappedAttributeTest {
@Test public void defaultCase() throws Exception {
final AttributeResolutionContext resolutionContext =
ResolverTestSupport.buildResolutionContext(ResolverTestSupport.buildDataConnector("connector1",
- ResolverTestSupport.buildAttribute(ResolverTestSupport.EPE_ATTRIB_ID,
- ResolverTestSupport.EPE1_VALUES), ResolverTestSupport.buildAttribute(
- ResolverTestSupport.EPA_ATTRIB_ID, ResolverTestSupport.EPA3_VALUES)));
+ ResolverTestSupport.buildAttribute(ResolverTestSupport.EPE_ATTRIB_ID, ResolverTestSupport.EPE1_VALUES),
+ ResolverTestSupport.buildAttribute(ResolverTestSupport.EPA_ATTRIB_ID, ResolverTestSupport.EPA3_VALUES)));
final MappedAttributeDefinition definition = new MappedAttributeDefinition();
definition.setId(TEST_ATTRIBUTE_NAME);
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnectorTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnectorTest.java
index cf83ac5..e4fe530 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnectorTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnectorTest.java
@@ -81,9 +81,12 @@ public class HTTPDataConnectorTest {
builder.setTemplateText(TEST_URL);
builder.setVelocityEngine(VelocityEngine.newVelocityEngine());
builder.setHttpClientSecurityParameters(params);
+ builder.setHeaders(Collections.singletonMap("Accept", "test/html"));
builder.initialize();
+
connector.setExecutableSearchBuilder(builder);
+
final ScriptedResponseMappingStrategy mapping =
ScriptedResponseMappingStrategy.resourceScript(
ResourceHelper.of(new ClassPathResource((TestSupport.isJavaV8OrLater() ? SCRIPT_PATH_V8 : SCRIPT_PATH) + "test.js")));
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnectorTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnectorTest.java
index d405872..9381b89 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnectorTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/impl/StaticDataConnectorTest.java
@@ -54,8 +54,6 @@ public class StaticDataConnectorTest {
connector.setId("Static");
assertNull(connector.getAttributes());
- connector.setValues(null);
- assertNull(connector.getAttributes());
try {
connector.initialize();
@@ -68,12 +66,7 @@ public class StaticDataConnectorTest {
connector.setValues(input);
assertNotNull(connector.getAttributes());
- input.add(null);
- connector.setValues(input);
- assertNotNull(connector.getAttributes());
-
input.add(attribute);
- input.add(null);
input.add(new IdPAttribute("thingy"));
connector.setValues(input);
@@ -97,7 +90,6 @@ public class StaticDataConnectorTest {
connector.setId("Static");
List<IdPAttribute> input = new ArrayList<>();
- input.add(null);
connector.setValues(input);
try {
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolutionContextTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolutionContextTest.java
index 2dffdb7..838b319 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolutionContextTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolutionContextTest.java
@@ -79,7 +79,6 @@ public class AttributeResolutionContextTest {
@Test public void setResolvedAttributes() {
AttributeResolutionContext context = new AttributeResolutionContext();
- context.setResolvedIdPAttributes(null);
assertNotNull(context.getResolvedIdPAttributes());
assertTrue(context.getResolvedIdPAttributes().isEmpty());
@@ -88,13 +87,7 @@ public class AttributeResolutionContextTest {
assertNotNull(context.getResolvedIdPAttributes());
assertTrue(context.getResolvedIdPAttributes().isEmpty());
- attributes.add(null);
- context.setResolvedIdPAttributes(attributes);
- assertNotNull(context.getResolvedIdPAttributes());
- assertTrue(context.getResolvedIdPAttributes().isEmpty());
-
attributes.add(new IdPAttribute("foo"));
- attributes.add(null);
attributes.add(new IdPAttribute("bar"));
context.setResolvedIdPAttributes(attributes);
assertNotNull(context.getResolvedIdPAttributes());
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
index 40a77dd..e75560b 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
@@ -44,10 +44,10 @@ import org.testng.annotations.Test;
import net.shibboleth.ext.spring.service.MockApplicationContext;
import net.shibboleth.idp.attribute.EmptyAttributeValue;
import net.shibboleth.idp.attribute.EmptyAttributeValue.EmptyType;
-import net.shibboleth.idp.attribute.context.AttributeContext;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
+import net.shibboleth.idp.attribute.context.AttributeContext;
import net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition;
import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.DataConnector;
@@ -62,7 +62,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContex
import net.shibboleth.idp.attribute.resolver.dc.impl.StaticDataConnector;
import net.shibboleth.idp.saml.impl.TestSources;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
import net.shibboleth.utilities.java.support.collection.LazySet;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.DestroyedComponentException;
@@ -924,12 +923,13 @@ public class AttributeResolverImplTest {
}
public static AttributeResolverImpl newAttributeResolverImpl(@Nonnull @NotEmpty final String resolverId,
- @Nullable @NullableElements final Collection<AttributeDefinition> definitions,
- @Nullable @NullableElements final Collection<DataConnector> connectors) {
+ @Nullable final Collection<AttributeDefinition> definitions,
+ @Nullable final Collection<DataConnector> connectors) {
final AttributeResolverImpl result = new AttributeResolverImpl();
result.setId(resolverId);
- result.setAttributeDefinitions(definitions);
- result.setDataConnectors(connectors);
+
+ result.setAttributeDefinitions(definitions == null ? Collections.EMPTY_LIST : definitions);
+ result.setDataConnectors(connectors == null ? Collections.EMPTY_LIST : connectors);
result.setApplicationContext(new MockApplicationContext());
return result;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list