[java-identity-provider] branch master updated: IDP-1647 Preemptively avoid duplicate values in Unmodifiable maps
Rod Widdowson
rdw at steadingsoftware.com
Mon Jul 27 09:38:12 UTC 2020
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=ab67be5bef630df6daf2a32a013c253f4f6a0655
The following commit(s) were added to refs/heads/master by this push:
new ab67be5be IDP-1647 Preemptively avoid duplicate values in Unmodifiable maps
ab67be5be is described below
commit ab67be5bef630df6daf2a32a013c253f4f6a0655
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon Jul 27 10:35:37 2020 +0100
IDP-1647 Preemptively avoid duplicate values in Unmodifiable maps
https://issues.shibboleth.net/jira/browse/IDP-1647
In all cases our uses of the API aboid this, but many APIs are
public so future proof ourselves.
---
.../net/shibboleth/idp/attribute/context/AttributeContext.java | 9 +++++++--
.../idp/attribute/filter/context/AttributeFilterContext.java | 8 ++++++--
.../attribute/resolver/context/AttributeResolutionContext.java | 4 +++-
.../idp/attribute/resolver/dc/impl/StaticDataConnector.java | 5 ++++-
.../net/shibboleth/idp/installer/ant/impl/V4InstallTask.java | 5 ++++-
5 files changed, 24 insertions(+), 7 deletions(-)
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 612632f91..93ba16a96 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
@@ -32,6 +32,7 @@ import net.shibboleth.idp.attribute.IdPAttribute;
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.Unmodifiable;
+import net.shibboleth.utilities.java.support.collection.CollectionSupport;
/**
* A {@link BaseContext} that tracks a set of attributes. Usually the tracked attributes are about a particular user and
@@ -71,7 +72,9 @@ public final class AttributeContext extends BaseContext {
if (newAttributes != null) {
attributes = newAttributes.
stream().
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, a -> a));
+ collect(Collectors.toUnmodifiableMap(IdPAttribute::getId,
+ a -> a,
+ CollectionSupport.warningMergeFunction("AttrtibuteContext", true)));
} else {
attributes = Collections.emptyMap();
}
@@ -96,7 +99,9 @@ public final class AttributeContext extends BaseContext {
if (null != unfilteredAttributes) {
unfilteredAttributes = newAttributes.
stream().
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, a -> a));
+ collect(Collectors.toUnmodifiableMap(IdPAttribute::getId,
+ a -> a,
+ CollectionSupport.warningMergeFunction("AttrtibuteContextUnfiltered", true)));
} else {
unfilteredAttributes = Collections.emptyMap();
}
diff --git a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java
index 35a021431..891a00ff4 100644
--- a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java
+++ b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java
@@ -41,6 +41,7 @@ import net.shibboleth.idp.attribute.filter.AttributeFilterException;
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.Unmodifiable;
+import net.shibboleth.utilities.java.support.collection.CollectionSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.service.ReloadableService;
import net.shibboleth.utilities.java.support.service.ServiceableComponent;
@@ -163,7 +164,8 @@ public final class AttributeFilterContext extends BaseContext {
if (attributes != null) {
prefilteredAttributes = attributes.
stream().
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, e -> e));
+ collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, e -> e,
+ CollectionSupport.warningMergeFunction("AttrtibuteFilterContextPrefiltered", true)));
} else {
prefilteredAttributes = Collections.emptyMap();
}
@@ -193,7 +195,9 @@ public final class AttributeFilterContext extends BaseContext {
if (attributes != null) {
filteredAttributes = attributes.
stream().
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, e -> e));
+ collect(Collectors.toUnmodifiableMap(IdPAttribute::getId,
+ e -> e,
+ CollectionSupport.warningMergeFunction("AttrtibuteFilterContextFiltered", true)));
} else {
filteredAttributes = Collections.emptyMap();
}
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 4eaaa9e55..0a3a56776 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
@@ -40,6 +40,7 @@ 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.Unmodifiable;
+import net.shibboleth.utilities.java.support.collection.CollectionSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
import net.shibboleth.utilities.java.support.service.ReloadableService;
@@ -308,7 +309,8 @@ 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));
+ collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, a -> a,
+ CollectionSupport.warningMergeFunction("AttrtibuteResolutionContext", true)));
return this;
}
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 845d704ba..0edd9ff14 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
@@ -35,6 +35,7 @@ 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.collection.CollectionSupport;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -75,7 +76,9 @@ public class StaticDataConnector extends AbstractDataConnector {
attributes = newValues.
stream().
map(e -> Constraint.isNotNull(e, "non null Attribute in connector")).
- collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, i -> i));
+ collect(Collectors.toUnmodifiableMap(IdPAttribute::getId,
+ i -> i,
+ CollectionSupport.warningMergeFunction("StaticDataConnector " + getId(), true)));
}
/** {@inheritDoc} */
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/ant/impl/V4InstallTask.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/ant/impl/V4InstallTask.java
index 558596e8c..e11912e58 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/ant/impl/V4InstallTask.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/ant/impl/V4InstallTask.java
@@ -33,6 +33,7 @@ import net.shibboleth.idp.installer.InstallerPropertiesImpl;
import net.shibboleth.idp.installer.V4Install;
import net.shibboleth.idp.installer.impl.CurrentInstallStateImpl;
import net.shibboleth.idp.installer.metadata.impl.MetadataGeneratorImpl;
+import net.shibboleth.utilities.java.support.collection.CollectionSupport;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
@@ -76,7 +77,9 @@ public class V4InstallTask extends Task {
stream().
filter(e -> System.getProperty(e.getKey()) == null).
filter(e -> e.getValue() instanceof String).
- collect(Collectors.toUnmodifiableMap(Entry::getKey, e-> (String) e.getValue())));
+ collect(Collectors.toUnmodifiableMap(Entry::getKey,
+ e-> (String) e.getValue(),
+ CollectionSupport.warningMergeFunction("InstallerProperties", true))));
final CurrentInstallStateImpl is;
ip.initialize();
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list