[java-identity-provider] 01/01: IDP-1795 Add deprecation warning for non lists passed to an IdPAttribute

Rod Widdowson rdw at steadingsoftware.com
Tue Apr 13 13:37:27 UTC 2021


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch dev/IDP-1795
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=844f1d6ef573ede46646986b108f3d5fd2f6bd58

commit 844f1d6ef573ede46646986b108f3d5fd2f6bd58
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Apr 13 14:19:10 2021 +0100

    IDP-1795  Add deprecation warning for non lists passed to an IdPAttribute
    
    https://issues.shibboleth.net/jira/browse/IDP-1795
    
    Also clean up some more tests
---
 .../src/main/java/net/shibboleth/idp/attribute/IdPAttribute.java    | 4 ++++
 .../shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java   | 2 +-
 .../attribute/filter/matcher/impl/MockValuePredicateMatcher.java    | 1 -
 .../idp/attribute/filter/matcher/impl/ScriptedMatcherTest.java      | 5 +++--
 .../matcher/saml/impl/MappedAttributeInMetadataMatcherTest.java     | 6 +++---
 .../filtercontext/impl/NumOfAttributeValuesPolicyRuleTest.java      | 4 ++--
 .../idp/attribute/resolver/ad/impl/ScriptedIdPAttributeImpl.java    | 2 +-
 7 files changed, 14 insertions(+), 10 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 4eaaf6aee..f6333fa45 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
@@ -226,6 +226,10 @@ public class IdPAttribute implements Comparable<IdPAttribute>, Cloneable {
      */
     public void setValues(@Nullable @NullableElements final Collection<IdPAttributeValue> newValues) {
         if (newValues != null) {
+            if (!(newValues instanceof List)) {
+                DeprecationSupport.warnOnce(ObjectType.METHOD, "Passing a Collection to IdpAttribute#setValues()",
+                        null, "List");
+            }
             values = newValues.stream().
                      map(e -> e==null? new EmptyAttributeValue(EmptyType.NULL_VALUE) :e).
                      collect(Collectors.toUnmodifiableList());
diff --git a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
index 56b05a354..33afbd089 100644
--- a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
+++ b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
@@ -127,7 +127,7 @@ public class AttributeFilterImpl extends AbstractServiceableComponent<AttributeF
                     } catch (final CloneNotSupportedException e) {
                         throw new AttributeFilterException(e);
                     }
-                    filteredAttribute.setValues(filteredAttributeValues);
+                    filteredAttribute.setValues(List.copyOf(filteredAttributeValues));
                     filterContext.getFilteredIdPAttributes().put(filteredAttribute.getId(), filteredAttribute);
                 }
             }
diff --git a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/impl/MockValuePredicateMatcher.java b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/impl/MockValuePredicateMatcher.java
index 9061207e5..66a81ed12 100644
--- a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/impl/MockValuePredicateMatcher.java
+++ b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/impl/MockValuePredicateMatcher.java
@@ -20,7 +20,6 @@ package net.shibboleth.idp.attribute.filter.matcher.impl;
 import java.util.function.Predicate;
 
 import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.filter.matcher.impl.AbstractMatcher;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 @SuppressWarnings("javadoc")
diff --git a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcherTest.java b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcherTest.java
index 41a87e848..4e5af78cf 100644
--- a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcherTest.java
+++ b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/impl/ScriptedMatcherTest.java
@@ -25,8 +25,9 @@ import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 
+import java.util.ArrayList;
 import java.util.Collections;
-import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Set;
 
 import javax.security.auth.Subject;
@@ -305,7 +306,7 @@ public class ScriptedMatcherTest extends AbstractMatcherPolicyRuleTest {
 
         final IdPAttribute newAttr = attribute.clone();
 
-        final Set<IdPAttributeValue> s = new LinkedHashSet<>(2);
+        final List<IdPAttributeValue> s = new ArrayList<>(2);
         s.add(new StringAttributeValue(ProfileRequestContext.class.getName()));
         s.add(new StringAttributeValue("BAR"));
         s.add(new StringAttributeValue("FOO"));
diff --git a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/MappedAttributeInMetadataMatcherTest.java b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/MappedAttributeInMetadataMatcherTest.java
index 635b8eaa7..64d1b6bab 100644
--- a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/MappedAttributeInMetadataMatcherTest.java
+++ b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/MappedAttributeInMetadataMatcherTest.java
@@ -180,7 +180,7 @@ public class MappedAttributeInMetadataMatcherTest extends OpenSAMLInitBaseTestCa
 
         IdPRequestedAttribute required = new IdPRequestedAttribute("attr");
         required.setRequired(true);
-        required.setValues(Collections.singleton(DataSources.STRING_VALUE));
+        required.setValues(Collections.singletonList(DataSources.STRING_VALUE));
 
         AttributeFilterContext context = makeContext(required);
 
@@ -206,11 +206,11 @@ public class MappedAttributeInMetadataMatcherTest extends OpenSAMLInitBaseTestCa
 
         IdPRequestedAttribute req1 = new IdPRequestedAttribute("attr");
         req1.setRequired(true);
-        req1.setValues(Collections.singleton(DataSources.STRING_VALUE));
+        req1.setValues(Collections.singletonList(DataSources.STRING_VALUE));
 
         IdPRequestedAttribute req2 = new IdPRequestedAttribute("attr");
         req2.setRequired(true);
-        req2.setValues(Collections.singleton(DataSources.NON_MATCH_STRING_VALUE));
+        req2.setValues(Collections.singletonList(DataSources.NON_MATCH_STRING_VALUE));
 
         final AttributeFilterContext context = new AttributeFilterContext();
 
diff --git a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/NumOfAttributeValuesPolicyRuleTest.java b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/NumOfAttributeValuesPolicyRuleTest.java
index 7a725c12f..57454d64d 100644
--- a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/NumOfAttributeValuesPolicyRuleTest.java
+++ b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/filtercontext/impl/NumOfAttributeValuesPolicyRuleTest.java
@@ -20,8 +20,8 @@ package net.shibboleth.idp.attribute.filter.policyrule.filtercontext.impl;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
 
+import java.util.ArrayList;
 import java.util.Collections;
-import java.util.LinkedHashSet;
 
 import org.testng.annotations.Test;
 
@@ -111,7 +111,7 @@ public class NumOfAttributeValuesPolicyRuleTest {
 
     private AttributeFilterContext manufactureWith(String name, int howMany) {
         final IdPAttribute attr = new IdPAttribute(name);
-        final LinkedHashSet<IdPAttributeValue> hs = new LinkedHashSet<>(howMany);
+        final ArrayList<IdPAttributeValue> hs = new ArrayList<>(howMany);
         
         for (int i = 0; i < howMany; i++) {
             hs.add(new StringAttributeValue(Integer.toString(i)));
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedIdPAttributeImpl.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedIdPAttributeImpl.java
index 75f28b593..54141b80d 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedIdPAttributeImpl.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedIdPAttributeImpl.java
@@ -66,7 +66,7 @@ public class ScriptedIdPAttributeImpl implements ScriptedIdPAttribute {
      * called.
      * </p>
      */
-    private Collection<Object> attributeValues;
+    private List<Object> attributeValues;
 
     /** The prefix for logging. Derived from the definition's logPrefix and the attribute ID. */
     private final String logPrefix;

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list