[java-shib-attribute] branch main updated: IDP-2375 - Aliased decoded IdPAttributes are lost during subsequent use

Scott Cantor cantor.2 at osu.edu
Tue Apr 22 15:04:48 UTC 2025


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

scantor 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=3c0c460e68e41f9539e205e08826351bb5da362a

The following commit(s) were added to refs/heads/main by this push:
     new 3c0c460e6 IDP-2375 - Aliased decoded IdPAttributes are lost during subsequent use
3c0c460e6 is described below

commit 3c0c460e68e41f9539e205e08826351bb5da362a
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Apr 22 11:04:45 2025 -0400

    IDP-2375 - Aliased decoded IdPAttributes are lost during subsequent use
    
    https://shibboleth.atlassian.net/browse/IDP-2375
    
    Fix some null issues.
---
 .../idp/attribute/context/AttributeContext.java    | 42 +++++++++++++++++-----
 .../filter/context/AttributeFilterContext.java     | 27 ++++++++++----
 2 files changed, 54 insertions(+), 15 deletions(-)

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 8082bb385..e2588d4cf 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
@@ -15,7 +15,6 @@
 package net.shibboleth.idp.attribute.context;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
 
 import javax.annotation.Nonnull;
@@ -69,11 +68,14 @@ public final class AttributeContext extends BaseContext {
      * @param newAttributes the attributes
      * 
      * @return this context
+     * 
+     * @deprecated
      */
     @Deprecated(since = "5.2.0", forRemoval = true)
     @Nonnull public AttributeContext setIdPAttributes(@Nullable final Collection<IdPAttribute> newAttributes) {
 
-        DeprecationSupport.warn(ObjectType.METHOD, "setIdPAttributes(Collection)", "AttributeContext", "setIdPAttributes(Map)");
+        DeprecationSupport.warn(ObjectType.METHOD,
+                "setIdPAttributes(Collection)", "AttributeContext", "setIdPAttributes(Map)");
         return setIdPAttributes(IdPAttributeSupport.toMapMergeDuplicates(newAttributes));
     }
 
@@ -83,11 +85,16 @@ public final class AttributeContext extends BaseContext {
      * @param newAttributes the attributes
      *
      * @return this context
+     * 
+     * @since 5.2.0
      */
     @Nonnull public AttributeContext setIdPAttributes(@Nullable final Map<String, IdPAttribute> newAttributes) {
 
-        attributes = Collections.unmodifiableMap(newAttributes);
-        
+        if (newAttributes != null) {
+            attributes = CollectionSupport.copyToMap(newAttributes);
+        } else {
+            attributes = CollectionSupport.emptyMap();
+        }
         return this;
     }
 
@@ -107,17 +114,36 @@ public final class AttributeContext extends BaseContext {
      * @param newAttributes the attributes
      * 
      * @return this context
+     * 
+     * @deprecated
      */
     @Deprecated(since = "5.2.0", forRemoval = true)
-    @Nonnull public AttributeContext setUnfilteredIdPAttributes(@Nullable final Collection<IdPAttribute> newAttributes) {
+    @Nonnull public AttributeContext setUnfilteredIdPAttributes(
+            @Nullable final Collection<IdPAttribute> newAttributes) {
 
-        DeprecationSupport.warn(ObjectType.METHOD, "setUnfilteredIdPAttributes(Collection)", "AttributeContext", "setUnfilteredIdPAttributes(Map)");
+        DeprecationSupport.warn(ObjectType.METHOD,
+                "setUnfilteredIdPAttributes(Collection)", "AttributeContext", "setUnfilteredIdPAttributes(Map)");
 
         return setUnfilteredIdPAttributes(IdPAttributeSupport.toMapMergeDuplicates(newAttributes));
     }
 
-    @Nonnull public AttributeContext setUnfilteredIdPAttributes(@Nullable final Map<String, IdPAttribute> newAttributes) {
-        unfilteredAttributes = Collections.unmodifiableMap(newAttributes);
+    /**
+     * Sets the unfiltered attributes tracked by this context.
+     * 
+     * @param newAttributes the attributes
+     * 
+     * @return this context
+     * 
+     * @since 5.2.0
+     */
+    @Nonnull public AttributeContext setUnfilteredIdPAttributes(
+            @Nullable final Map<String, IdPAttribute> newAttributes) {
+        
+        if (newAttributes != null) {
+            unfilteredAttributes = CollectionSupport.copyToMap(newAttributes);
+        } else {
+            unfilteredAttributes = CollectionSupport.emptyMap();
+        }
         return this;
     }
 
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 26fd84f98..03e946eaa 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
@@ -15,7 +15,6 @@
 package net.shibboleth.idp.attribute.filter.context;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
 import java.util.function.Function;
 
@@ -224,13 +223,18 @@ public final class AttributeFilterContext extends BaseContext {
      *
      * @param attributes attributes which are to be filtered
      *
-     * @return this context;
+     * @return this context
+     * 
+     * @deprecated
      */
     @Deprecated(since = "5.2.0", forRemoval = true)
     @Nonnull public AttributeFilterContext setPrefilteredIdPAttributes(
             @Nullable final Collection<IdPAttribute> attributes) {
 
-        DeprecationSupport.warn(ObjectType.METHOD, "setPrefilteredIdPAttributes(Collection)", "AttributeFilterContext", "setPrefilteredIdPAttributes(Map)");
+        DeprecationSupport.warn(ObjectType.METHOD,
+                "setPrefilteredIdPAttributes(Collection)",
+                "AttributeFilterContext",
+                "setPrefilteredIdPAttributes(Map)");
 
         return setPrefilteredIdPAttributes(IdPAttributeSupport.toMapMergeDuplicates(attributes));
     }
@@ -240,12 +244,18 @@ public final class AttributeFilterContext extends BaseContext {
      *
      * @param attributes attributes which are to be filtered
      *
-     * @return this context;
+     * @return this context
+     * 
+     * @since 5.2.0
      */
     @Nonnull public AttributeFilterContext setPrefilteredIdPAttributes(
             @Nullable final Map<String, IdPAttribute> attributes) {
 
-        prefilteredAttributes = Collections.unmodifiableMap(attributes);
+        if (attributes != null) {
+            prefilteredAttributes = CollectionSupport.copyToMap(attributes);
+        } else {
+            prefilteredAttributes = CollectionSupport.emptyMap();
+        }
 
         return this;
     }
@@ -265,12 +275,15 @@ public final class AttributeFilterContext extends BaseContext {
      * @param attributes attributes that have been filtered
      *
      * @return this context
+     * 
+     * @deprecated
      */
     @Deprecated(since = "5.2.0", forRemoval = true)
     @Nonnull public AttributeFilterContext setFilteredIdPAttributes(
             @Nullable final Collection<IdPAttribute> attributes) {
 
-        DeprecationSupport.warn(ObjectType.METHOD, "setFilteredIdPAttributes(Collection)", "AttributeFilterContext", "setFilteredIdPAttributes(Map)");
+        DeprecationSupport.warn(ObjectType.METHOD,
+                "setFilteredIdPAttributes(Collection)", "AttributeFilterContext", "setFilteredIdPAttributes(Map)");
 
         return setFilteredIdPAttributes(IdPAttributeSupport.toMapMergeDuplicates(attributes));
     }
@@ -288,7 +301,7 @@ public final class AttributeFilterContext extends BaseContext {
         if (attributes == null) {
             filteredAttributes = CollectionSupport.emptyMap();
         } else {
-            filteredAttributes = Collections.unmodifiableMap(attributes);
+            filteredAttributes = CollectionSupport.copyToMap(attributes);
         }
 
         return this;

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


More information about the commits mailing list