[java-identity-provider] branch master updated: IDP-1516 Reduce guava dependence.
Rod Widdowson
rdw at steadingsoftware.com
Wed Oct 30 11:40:42 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=71167bd123eedb3049ebf95812318f7153908065
The following commit(s) were added to refs/heads/master by this push:
new 71167bd IDP-1516 Reduce guava dependence.
71167bd is described below
commit 71167bd123eedb3049ebf95812318f7153908065
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Wed Oct 30 15:39:05 2019 +0000
IDP-1516 Reduce guava dependence.
https://issues.shibboleth.net/jira/browse/IDP-1516
Fix a lot of annotations. Streamline a lot of Collection -> Map
conversions. Convert several gratuitous @Nullable @NonnnullElements
to @Nonnull @NonnullElements anootaions (with precisely one mainline
fix needed)
---
.../net/shibboleth/idp/attribute/IdPAttribute.java | 13 +++-----
.../idp/attribute/context/AttributeContext.java | 39 +++++++++-------------
.../idp/attribute/AttributeContextTest.java | 3 --
.../attribute/resolver/AbstractResolverPlugin.java | 20 +++++------
.../context/AttributeResolutionContext.java | 29 +++++++---------
.../resolver/AbstractResolverPluginTest.java | 2 --
.../idp/attribute/resolver/MockDataConnector.java | 5 +--
.../ad/mapped/impl/MappedAttributeDefinition.java | 2 +-
.../resolver/ad/mapped/impl/ValueMap.java | 2 +-
.../dc/http/impl/AbstractHTTPSearchBuilder.java | 2 +-
.../idp/profile/impl/FilterAttributes.java | 3 +-
11 files changed, 49 insertions(+), 71 deletions(-)
diff --git a/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/IdPAttribute.java b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/IdPAttribute.java
index 76474d5..231a43f 100644
--- a/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/IdPAttribute.java
+++ b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/IdPAttribute.java
@@ -171,13 +171,10 @@ public class IdPAttribute implements Comparable<IdPAttribute>, Cloneable {
* @return the unmodifiable, non null-containing output.
*/
@SuppressWarnings("unchecked")
- @Nonnull @Unmodifiable private Map<Locale, String> checkedNamesFrom(@Nonnull final Map<Locale, String> inputMap) {
+ @Nonnull @Unmodifiable private final Map<Locale, String> checkedNamesFrom(@Nonnull @NonnullElements
+ final Map<Locale, String> inputMap) {
- if (inputMap.isEmpty()) {
- return Collections.emptyMap();
- }
- return Map.ofEntries((Entry<Locale, String>[])
- inputMap.
+ return Map.ofEntries(inputMap.
entrySet().
stream().
map(filterEntry).
@@ -189,7 +186,7 @@ public class IdPAttribute implements Comparable<IdPAttribute>, Cloneable {
*
* @param newNames the new names for this attribute
*/
- public void setDisplayNames(@Nonnull final Map<Locale, String> newNames) {
+ public void setDisplayNames(@Nonnull @NonnullElements final Map<Locale, String> newNames) {
displayNames = checkedNamesFrom(
Constraint.isNotNull(newNames, "Display Names should not be null"));
}
@@ -208,7 +205,7 @@ public class IdPAttribute implements Comparable<IdPAttribute>, Cloneable {
*
* @param newDescriptions the new descriptions for this attribute
*/
- public void setDisplayDescriptions(@Nonnull final Map<Locale, String> newDescriptions) {
+ public void setDisplayDescriptions(@Nonnull @NonnullElements final Map<Locale, String> newDescriptions) {
displayDescriptions = checkedNamesFrom(
Constraint.isNotNull(newDescriptions, "Display Descriptions should not be null"));
}
diff --git a/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/context/AttributeContext.java b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/context/AttributeContext.java
index 3c31bdc..3f16bb4 100644
--- a/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/context/AttributeContext.java
+++ b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/context/AttributeContext.java
@@ -21,6 +21,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -71,18 +72,14 @@ public final class AttributeContext extends BaseContext {
*
* @param newAttributes the attributes
*/
- public void setIdPAttributes(@Nullable final Collection<IdPAttribute> newAttributes) {
- if (newAttributes == null || newAttributes.isEmpty()) {
- attributes = Collections.emptyMap();
- return;
- }
-
- final HashMap<String,IdPAttribute> checkedAttributes = new HashMap<>(newAttributes.size());
- for (final IdPAttribute attribute : newAttributes) {
- checkedAttributes.put(attribute.getId(), Constraint.isNotNull(attribute, "Cannot set null attributes"));
- }
+ public void setIdPAttributes(@Nonnull @NonnullElements final Collection<IdPAttribute> newAttributes) {
+ Constraint.isNotNull(newAttributes, "Attributes inserted into AttributeContext should not be null");
- attributes = Map.copyOf(checkedAttributes);
+ attributes = newAttributes.
+ stream().
+ collect(Collectors.collectingAndThen(
+ Collectors.toMap(IdPAttribute::getId, a -> a),
+ Collections::unmodifiableMap));
}
@@ -104,20 +101,16 @@ public final class AttributeContext extends BaseContext {
*
* @param newAttributes the attributes
*/
- public void setUnfilteredIdPAttributes(@Nullable final Collection<IdPAttribute> newAttributes) {
+ public void setUnfilteredIdPAttributes(@Nonnull @NonnullElements final Collection<IdPAttribute> newAttributes) {
+ Constraint.isNotNull(newAttributes, "Attributes inserted into AttributeContext should not be null");
if (null != unfilteredAttributes) {
log.error("Unfiltered attributes have already been set in this flow.");
}
- if (newAttributes == null || newAttributes.isEmpty()) {
- unfilteredAttributes = Collections.emptyMap();
- return;
- }
-
- final HashMap<String,IdPAttribute> checkedAttributes = new HashMap<>(newAttributes.size());
- for (final IdPAttribute attribute : newAttributes) {
- checkedAttributes.put(attribute.getId(), Constraint.isNotNull(attribute, "non null Attribute"));
- }
-
- unfilteredAttributes = Map.copyOf(checkedAttributes);
+
+ unfilteredAttributes = newAttributes.
+ stream().
+ collect(Collectors.collectingAndThen(
+ Collectors.toMap(IdPAttribute::getId, a -> a),
+ Collections::unmodifiableMap));
}
}
\ No newline at end of file
diff --git a/idp-attribute-api/src/test/java/net/shibboleth/idp/attribute/AttributeContextTest.java b/idp-attribute-api/src/test/java/net/shibboleth/idp/attribute/AttributeContextTest.java
index 24e50c6..16a006b 100644
--- a/idp-attribute-api/src/test/java/net/shibboleth/idp/attribute/AttributeContextTest.java
+++ b/idp-attribute-api/src/test/java/net/shibboleth/idp/attribute/AttributeContextTest.java
@@ -49,9 +49,6 @@ public class AttributeContextTest {
context.setIdPAttributes(Arrays.asList(new IdPAttribute("foo"), new IdPAttribute("bar")));
contextAttributes(context, 2);
- context.setIdPAttributes(null);
- contextAttributes(context, 0);
-
context.setIdPAttributes(Collections.emptySet());
contextAttributes(context, 0);
}
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
index d6b9adb..26ce79c 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
@@ -162,15 +162,13 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
*
* @param dependencies unmodifiable list of dependencies for this plugin
*/
- public void setAttributeDependencies(@Nullable final Set<ResolverAttributeDefinitionDependency> dependencies) {
+ public void setAttributeDependencies(@Nonnull @NonnullElements
+ final Set<ResolverAttributeDefinitionDependency> dependencies) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ Constraint.isNotNull(dependencies, "Attribute Dependencies cannot be null");
- if (dependencies != null) {
- attributeDependencies = Set.copyOf(dependencies);
- } else {
- attributeDependencies = Collections.emptySet();
- }
+ attributeDependencies = Set.copyOf(dependencies);
}
/**
@@ -178,15 +176,13 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
*
* @param dependencies unmodifiable list of dependencies for this plugin
*/
- public void setDataConnectorDependencies(@Nullable final Set<ResolverDataConnectorDependency> dependencies) {
+ public void setDataConnectorDependencies(@Nonnull @NonnullElements
+ final Set<ResolverDataConnectorDependency> dependencies) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ Constraint.isNotNull(dependencies, "DataConnector Dependencies cannot be null");
- if (dependencies != null) {
- dataConnectorDependencies = Set.copyOf(dependencies);
- } else {
- dataConnectorDependencies = Collections.emptySet();
- }
+ dataConnectorDependencies = Set.copyOf(dependencies);
}
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolutionContext.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolutionContext.java
index ad456d5..e280570 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolutionContext.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolutionContext.java
@@ -19,14 +19,18 @@ package net.shibboleth.idp.attribute.resolver.context;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe;
+import org.opensaml.messaging.context.BaseContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.resolver.AttributeResolver;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
@@ -34,17 +38,12 @@ import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
import net.shibboleth.utilities.java.support.annotation.constraint.Live;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-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;
import net.shibboleth.utilities.java.support.service.ReloadableService;
import net.shibboleth.utilities.java.support.service.ServiceableComponent;
-import org.opensaml.messaging.context.BaseContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
/** A context supplying input to the {@link net.shibboleth.idp.attribute.resolver.AttributeResolver} interface. */
@NotThreadSafe
public final class AttributeResolutionContext extends BaseContext {
@@ -301,18 +300,14 @@ public final class AttributeResolutionContext extends BaseContext {
* @return this context
*/
@Nullable public AttributeResolutionContext setResolvedIdPAttributes(
- @Nullable final Collection<IdPAttribute> attributes) {
-
- final Map<String,IdPAttribute> copy = new HashMap<>(attributes.size());
-
- if (attributes != null) {
- for (final IdPAttribute attribute : attributes) {
- copy.put(attribute.getId(), Constraint.isNotNull(attribute, "Resolved Attributes Cannot be null"));
- }
- }
-
- resolvedAttributes = Map.copyOf(copy);
+ @Nonnull @NonnullElements final Collection<IdPAttribute> attributes) {
+ Constraint.isNotNull(attributes, "Null attribute set cannot be inserted into a context");
+ resolvedAttributes = attributes.
+ stream().
+ collect(Collectors.collectingAndThen(
+ Collectors.toMap(IdPAttribute::getId, a -> a),
+ Collections::unmodifiableMap));
return this;
}
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java
index 1ef1ad9..ffae1f9 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java
@@ -92,8 +92,6 @@ public class AbstractResolverPluginTest {
@Test public void dependencies() {
MockBaseAttributeResolver plugin = new MockBaseAttributeResolver("foo", "bar");
- plugin.setAttributeDependencies(null);
- plugin.setDataConnectorDependencies(null);
Assert.assertNotNull(plugin.getAttributeDependencies());
Assert.assertTrue(plugin.getAttributeDependencies().isEmpty());
Assert.assertNotNull(plugin.getDataConnectorDependencies());
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/MockDataConnector.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/MockDataConnector.java
index 8c0c4e3..b6a20e4 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/MockDataConnector.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/MockDataConnector.java
@@ -17,6 +17,7 @@
package net.shibboleth.idp.attribute.resolver;
+import java.util.Collections;
import java.util.Map;
import java.util.Set;
@@ -62,8 +63,8 @@ public class MockDataConnector extends AbstractDataConnector {
Set<ResolverAttributeDefinitionDependency> attrDepends,
Set<ResolverDataConnectorDependency> dcDepends
) throws ComponentInitializationException {
- setAttributeDependencies(attrDepends);
- setDataConnectorDependencies(dcDepends);
+ setAttributeDependencies(attrDepends == null? Collections.emptySet() : attrDepends);
+ setDataConnectorDependencies(dcDepends == null? Collections.emptySet() : dcDepends);
setId(id);
values = connectorValues;
initialize();
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 cf0715a..32b83a1 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
@@ -85,7 +85,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
*
* @param mappings functions used to map an input value to an output value
*/
- public void setValueMaps(@Nullable final Collection<ValueMap> mappings) {
+ public void setValueMaps(@Nullable @NonnullElements final Collection<ValueMap> mappings) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
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 ab445d6..fe338f6 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
@@ -82,7 +82,7 @@ public class ValueMap implements Function<String, Set<StringAttributeValue>> {
*
* @param newValues functions used to map an input value to an output value
*/
- public void setSourceValues(@Nullable final Collection<SourceValue> newValues) {
+ public void setSourceValues(@Nullable @NonnullElements final Collection<SourceValue> newValues) {
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 aa3e8b8..69f0e02 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
@@ -96,7 +96,7 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
Constraint.isNotNull(headers, "Map of headers cannot be null");
- headerList = headers.
+ headerList = headers.
entrySet().
stream().
map(e-> new Pair<>(
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
index 0210953..5ce1cd5 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
@@ -17,6 +17,7 @@
package net.shibboleth.idp.profile.impl;
+import java.util.Collections;
import java.util.function.Function;
import javax.annotation.Nonnull;
@@ -383,7 +384,7 @@ public class FilterAttributes extends AbstractProfileAction {
log.error("{} Error encountered while filtering attributes", getLogPrefix(), e);
if (maskFailures) {
log.warn("Filter error masked, clearing resolved attributes");
- attributeContext.setIdPAttributes(null);
+ attributeContext.setIdPAttributes(Collections.emptySet());
} else {
ActionSupport.buildEvent(profileRequestContext, IdPEventIds.UNABLE_FILTER_ATTRIBS);
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list