[java-identity-provider] 18/27: Refactor registry API with setters instead of adders.

Scott Cantor cantor.2 at osu.edu
Fri May 3 14:32:08 EDT 2019


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

scantor pushed a commit to branch feature/IDP-1434
in repository java-identity-provider.

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

commit dad8d3ae9591b1139c2874bd0f688f1eac8291ac
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Fri Apr 26 13:08:49 2019 -0400

    Refactor registry API with setters instead of adders.
---
 .../impl/AttributeTranscoderRegistryImpl.java      | 66 ++++++++++----------
 .../impl/AttributeTranscoderRegistryImplTest.java  | 17 +++---
 .../src/main/resources/conf/attribute-registry.xml | 70 +++++-----------------
 .../impl/SAML1ByteAttributeTranscoderTest.java     | 10 ++--
 .../SAML1ScopedStringAttributeTranscoderTest.java  | 11 ++--
 .../impl/SAML1StringAttributeTranscoderTest.java   | 10 ++--
 .../impl/SAML2ByteAttributeTranscoderTest.java     | 10 ++--
 .../SAML2ScopedStringAttributeTranscoderTest.java  | 10 ++--
 .../impl/SAML2StringAttributeTranscoderTest.java   | 10 ++--
 .../SAML2XMLObjectAttributeTranscoderTest.java     | 10 ++--
 .../impl/AddAttributeStatementToAssertionTest.java | 45 ++++++++++----
 .../impl/AddAttributeStatementToAssertionTest.java | 42 +++++++++----
 12 files changed, 149 insertions(+), 162 deletions(-)

diff --git a/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java b/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
index cf8492d..b55d36c 100644
--- a/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
+++ b/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
@@ -77,27 +77,16 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
     @Override @Nonnull public AttributeTranscoderRegistry getComponent() {
         return this;
     }
-
-    /**
-     * Installs registry of naming functions mapped against the types of objects they support.
-     * 
-     * @param <T> type of object
-     * @param type class of object
-     * @param f naming function to install
-     */
-    public <T> void addToNamingRegistry(@Nonnull final Class<T> type, @Nonnull final Function<T,String> f) {
-        Constraint.isNotNull(type, "Type cannot be null");
-        Constraint.isNotNull(f, "Naming function cannot be null");
-        
-        namingFunctionRegistry.put(type, f);
-    }
     
     /**
      * Installs registry of naming functions mapped against the types of objects they support.
      * 
      * @param registry map of types to naming functions
      */
-    public void addToNamingRegistry(@Nonnull @NonnullElements final Map<Class<?>,Function<?,String>> registry) {
+    public void setNamingRegistry(@Nonnull @NonnullElements final Map<Class<?>,Function<?,String>> registry) {
+        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        
+        namingFunctionRegistry.clear();
         
         if (registry == null) {
             return;
@@ -113,33 +102,41 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
     /**
      * Installs the transcoder mappings en masse.
      * 
-     * <p>Each map entry connects an {@link IdPAttribute} name to the rules for transcoding to/from it.</p>
+     * <p>Each map connects an {@link IdPAttribute} name to the rules for transcoding to/from it.</p>
      * 
-     * @param registry mappings from internal name to transcoding rules
+     * <p>The rules MUST contain at least:</p>
+     * <ul>
+     *  <li>{@link #PROP_ID} - an {@link AttributeTranscoder} instance supporting the type</li>
+     *  <li>{@link #PROP_TRANSCODER} - an {@link AttributeTranscoder} instance supporting the type</li>
+     * </ul>
+     * 
+     * Transcoders will generally require particular properties in their own right to function.
+     * 
+     * @param mappings transcoding rulesets
      */
-    public void addToTranscoderRegistry(
-            @Nonnull @NonnullElements final Map<String,Collection<Map<String,Object>>> registry) {
+    public void setTranscoderRegistry(@Nonnull @NonnullElements final Collection<Map<String,Object>> mappings) {
+        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        
+       transcodingRegistry.clear();
 
-        if (registry == null) {
+        if (mappings == null) {
             return;
         }
         
-        for (final Map.Entry<String,Collection<Map<String,Object>>> entry : registry.entrySet()) {
+        for (final Map<String,Object> mapping : Collections2.filter(mappings, Predicates.notNull())) {
             
-            final String internalId = StringSupport.trimOrNull(entry.getKey());
-            if (internalId != null && entry.getValue() != null && !entry.getValue().isEmpty()) {
+            final Object prop = mapping.get(PROP_ID);
+            final String internalId = StringSupport.trimOrNull(prop instanceof String ? (String) prop : null);
+            if (internalId != null) {
 
-                for (final Map<String,Object> props : Collections2.filter(entry.getValue(), Predicates.notNull())) {
-                    
-                    final Predicate activationCondition = buildActivationCondition(props);
-                    if (activationCondition != null) {
-                        props.put(PROP_CONDITION, activationCondition);
-                    } else {
-                        props.remove(PROP_CONDITION);
-                    }
-                    
-                    addMapping(internalId, props);
+                final Predicate activationCondition = buildActivationCondition(mapping);
+                if (activationCondition != null) {
+                    mapping.put(PROP_CONDITION, activationCondition);
+                } else {
+                    mapping.remove(PROP_CONDITION);
                 }
+                
+                addMapping(internalId, mapping);
             }
         }
     }
@@ -202,7 +199,6 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
      * 
      * <p>The rules MUST contain at least:</p>
      * <ul>
-     *  <li>{@link #PROP_TYPE} - a source/target class for the transcoding rules</li>
      *  <li>{@link #PROP_TRANSCODER} - an {@link AttributeTranscoder} instance supporting the type</li>
      * </ul>
      * 
@@ -238,7 +234,7 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
             
             log.debug("Attribute mapping: {} <-> {} via {}", id, targetName, transcoder.getClass().getSimpleName());
             
-            // Install mapping back to IdPAttribute's name.
+            // Install mapping back to IdPAttribute's trimmed name.
             copy.setProperty(PROP_ID, id);
             
             Multimap<Class<?>,Properties> rulesetsForIdPName = transcodingRegistry.get(id);
diff --git a/idp-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java b/idp-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java
index 7ce9009..fcf1dec 100644
--- a/idp-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java
+++ b/idp-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java
@@ -56,30 +56,33 @@ public class AttributeTranscoderRegistryImplTest {
         registry = new AttributeTranscoderRegistryImpl();
         registry.setId("test");
         
-        registry.addToNamingRegistry(Pair.class, (Pair p) -> "{Pair}" + p.getFirst().toString());
+        registry.setNamingRegistry(Collections.singletonMap(Pair.class, (Pair p) -> "{Pair}" + p.getFirst().toString()));
         
         final PairTranscoder transcoder = new PairTranscoder();
         transcoder.initialize();
         
-        final Map<String,Collection<Map<String,Object>>> mappings = new HashMap<>();
-        
         final Map<String,Object> ruleset1 = new HashMap<>();
+        ruleset1.put(AttributeTranscoderRegistry.PROP_ID, "foo");
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put("name", "bar");
         
         final Map<String,Object> ruleset2 = new HashMap<>();
+        ruleset2.put(AttributeTranscoderRegistry.PROP_ID, "foo");
         ruleset2.put(AttributeTranscoderRegistry.PROP_TRANSCODER, "net.shibboleth.idp.attribute.transcoding.impl.PairTranscoder");
         ruleset2.put("name", "baz");
         
         final Map<String,Object> ruleset3 = new HashMap<>();
+        ruleset3.put(AttributeTranscoderRegistry.PROP_ID, "foo");
         ruleset3.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset3.put(AttributeTranscoderRegistry.PROP_CONDITION, Predicates.alwaysFalse());
         ruleset3.put("name", "ban");
+
+        final Map<String,Object> ruleset4 = new HashMap<>();
+        ruleset4.put(AttributeTranscoderRegistry.PROP_ID, "foo2");
+        ruleset4.put(AttributeTranscoderRegistry.PROP_TRANSCODER, "net.shibboleth.idp.attribute.transcoding.impl.PairTranscoder");
+        ruleset4.put("name", "baz");
         
-        mappings.put("foo", Arrays.asList(ruleset1, ruleset2, ruleset3));
-        mappings.put("foo2", Collections.singletonList(ruleset2));
-        
-        registry.addToTranscoderRegistry(mappings);
+        registry.setTranscoderRegistry(Arrays.asList(ruleset1, ruleset2, ruleset3, ruleset4));
         
         registry.initialize();
     }
diff --git a/idp-conf/src/main/resources/conf/attribute-registry.xml b/idp-conf/src/main/resources/conf/attribute-registry.xml
index d52956d..ef2e1ec 100644
--- a/idp-conf/src/main/resources/conf/attribute-registry.xml
+++ b/idp-conf/src/main/resources/conf/attribute-registry.xml
@@ -13,7 +13,9 @@
        default-destroy-method="destroy">
 
     <bean id="AttributeTranscoderRegistry"
-        class="net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl" />
+        class="net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl"
+        p:namingRegistry-ref="DefaultNamingRegistry"
+        p:transcoderRegistry-ref="DefaultAttributeRegistry" />
 
     <bean id="SAML2StringTranscoder"
         class="net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2StringAttributeTranscoder" />
@@ -33,51 +35,21 @@
     <bean id="SAML1XMLObjectTranscoder"
         class="net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1XMLObjectAttributeTranscoder" />
    
-    <util:map id="SAML2AttributeRegistry">
+    <util:list id="DefaultAttributeRegistry">
     
-        <entry key="uid">
-            <list>
-	            <map>
-					<entry key="transcoder" value-ref="SAML2StringTranscoder" />
-					<entry key="name" value="urn:oid:0.9.2342.19200300.100.1.1" />
-	            </map>
-            </list>
-        </entry>
-            
-    </util:map>
-    
-    <util:map id="SAML1AttributeRegistry">
-
-        <entry key="uid">
-            <list>
-	            <map>
-	                <entry key="transcoder" value-ref="SAML1StringTranscoder" />
-	                <entry key="name" value="urn:mace:dir:attribute-def:uid" />
-	            </map>
-            </list>
-        </entry>
-
-    </util:map>
-    
-    <bean class="org.springframework.beans.factory.config.MethodInvokingBean"
-            p:targetObject-ref="AttributeTranscoderRegistry"
-            p:targetMethod="addToTranscoderRegistry">
-        <property name="arguments">
-            <list>
-                <ref bean="SAML2AttributeRegistry" />
-            </list>
-        </property>
-    </bean>
+        <map>
+            <entry key="id" value="uid" />
+            <entry key="transcoder" value-ref="SAML2StringTranscoder" />
+            <entry key="name" value="urn:oid:0.9.2342.19200300.100.1.1" />
+        </map>
+        
+        <map>
+            <entry key="id" value="uid" />
+            <entry key="transcoder" value-ref="SAML1StringTranscoder" />
+            <entry key="name" value="urn:mace:dir:attribute-def:uid" />
+        </map>
 
-    <bean class="org.springframework.beans.factory.config.MethodInvokingBean"
-            p:targetObject-ref="AttributeTranscoderRegistry"
-            p:targetMethod="addToTranscoderRegistry">
-        <property name="arguments">
-            <list>
-                <ref bean="SAML1AttributeRegistry" />
-            </list>
-        </property>
-    </bean>
+    </util:list>
     
     <util:map id="DefaultNamingRegistry">
         <entry key="#{T(org.opensaml.saml.saml2.core.Attribute)}">
@@ -88,14 +60,4 @@
         </entry>
     </util:map>
     
-    <bean class="org.springframework.beans.factory.config.MethodInvokingBean"
-            p:targetObject-ref="AttributeTranscoderRegistry"
-            p:targetMethod="addToNamingRegistry">
-        <property name="arguments">
-            <list>
-                <ref bean="DefaultNamingRegistry" />
-            </list>
-        </property>
-    </bean>
-    
 </beans>
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java
index 770a60d..2fcc55f 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java
@@ -89,19 +89,17 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final SAML1ByteAttributeTranscoder transcoder = new SAML1ByteAttributeTranscoder();
         transcoder.initialize();
         
-        registry.addToNamingRegistry(transcoder.getEncodedType(), new AbstractSAML1AttributeTranscoder.NamingFunction());
-        
-        final Map<String,Collection<Map<String,Object>>> mappings = new HashMap<>();
+        registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
+                new AbstractSAML1AttributeTranscoder.NamingFunction()));
         
         final Map<String,Object> ruleset1 = new HashMap<>();
+        ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
         
-        mappings.put(ATTR_NAME, Collections.singletonList(ruleset1));
-        
-        registry.addToTranscoderRegistry(mappings);
+        registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
         registry.initialize();
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java
index 23f226c..9fd54a3 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java
@@ -96,22 +96,19 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final SAML1ScopedStringAttributeTranscoder transcoder = new SAML1ScopedStringAttributeTranscoder();
         transcoder.initialize();
         
-        registry.addToNamingRegistry(transcoder.getEncodedType(), new AbstractSAML1AttributeTranscoder.NamingFunction());
-                
-        final Map<String,Collection<Map<String,Object>>> mappings = new HashMap<>();
+        registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
+                new AbstractSAML1AttributeTranscoder.NamingFunction()));
         
         final Map<String,Object> ruleset1 = new HashMap<>();
+        ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
-        ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
         ruleset1.put(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER, DELIMITER);
         ruleset1.put(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE, "attribute");
         
-        mappings.put(ATTR_NAME, Collections.singletonList(ruleset1));
-        
-        registry.addToTranscoderRegistry(mappings);
+        registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
         registry.initialize();
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java
index 88a3841..2ff0260 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java
@@ -86,19 +86,17 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final SAML1StringAttributeTranscoder transcoder = new SAML1StringAttributeTranscoder();
         transcoder.initialize();
         
-        registry.addToNamingRegistry(transcoder.getEncodedType(), new AbstractSAML1AttributeTranscoder.NamingFunction());
-        
-        final Map<String,Collection<Map<String,Object>>> mappings = new HashMap<>();
+        registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
+                new AbstractSAML1AttributeTranscoder.NamingFunction()));
         
         final Map<String,Object> ruleset1 = new HashMap<>();
+        ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
         
-        mappings.put(ATTR_NAME, Collections.singletonList(ruleset1));
-        
-        registry.addToTranscoderRegistry(mappings);
+        registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
         registry.initialize();
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
index 2536976..3dbd713 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
@@ -90,20 +90,18 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final SAML2ByteAttributeTranscoder transcoder = new SAML2ByteAttributeTranscoder();
         transcoder.initialize();
         
-        registry.addToNamingRegistry(transcoder.getEncodedType(), new AbstractSAML2AttributeTranscoder.NamingFunction());
-        
-        final Map<String,Collection<Map<String,Object>>> mappings = new HashMap<>();
+        registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
+                new AbstractSAML2AttributeTranscoder.NamingFunction()));
         
         final Map<String,Object> ruleset1 = new HashMap<>();
+        ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
         ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         
-        mappings.put(ATTR_NAME, Collections.singletonList(ruleset1));
-        
-        registry.addToTranscoderRegistry(mappings);
+        registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
         registry.initialize();
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
index aaf9833..85fe737 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
@@ -90,11 +90,11 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final SAML2ScopedStringAttributeTranscoder transcoder = new SAML2ScopedStringAttributeTranscoder();
         transcoder.initialize();
         
-        registry.addToNamingRegistry(transcoder.getEncodedType(), new AbstractSAML2AttributeTranscoder.NamingFunction());
-                
-        final Map<String,Collection<Map<String,Object>>> mappings = new HashMap<>();
+        registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
+                new AbstractSAML2AttributeTranscoder.NamingFunction()));
         
         final Map<String,Object> ruleset1 = new HashMap<>();
+        ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
@@ -103,9 +103,7 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         ruleset1.put(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER, DELIMITER);
         ruleset1.put(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE, "inline");
         
-        mappings.put(ATTR_NAME, Collections.singletonList(ruleset1));
-        
-        registry.addToTranscoderRegistry(mappings);
+        registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
         registry.initialize();
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
index e81b92a..123fb73 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
@@ -87,20 +87,18 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final SAML2StringAttributeTranscoder transcoder = new SAML2StringAttributeTranscoder();
         transcoder.initialize();
         
-        registry.addToNamingRegistry(transcoder.getEncodedType(), new AbstractSAML2AttributeTranscoder.NamingFunction());
-        
-        final Map<String,Collection<Map<String,Object>>> mappings = new HashMap<>();
+        registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
+                new AbstractSAML2AttributeTranscoder.NamingFunction()));
         
         final Map<String,Object> ruleset1 = new HashMap<>();
+        ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
         ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         
-        mappings.put(ATTR_NAME, Collections.singletonList(ruleset1));
-        
-        registry.addToTranscoderRegistry(mappings);
+        registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
         registry.initialize();
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
index 0e532c2..5e55665 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
@@ -94,20 +94,18 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final SAML2XMLObjectAttributeTranscoder transcoder = new SAML2XMLObjectAttributeTranscoder();
         transcoder.initialize();
         
-        registry.addToNamingRegistry(transcoder.getEncodedType(), new AbstractSAML2AttributeTranscoder.NamingFunction());
-        
-        final Map<String,Collection<Map<String,Object>>> mappings = new HashMap<>();
+        registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
+                new AbstractSAML2AttributeTranscoder.NamingFunction()));
         
         final Map<String,Object> ruleset1 = new HashMap<>();
+        ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
         ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
         ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         
-        mappings.put(ATTR_NAME, Collections.singletonList(ruleset1));
-        
-        registry.addToTranscoderRegistry(mappings);
+        registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
         registry.initialize();
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
index 7d19bc3..ea36df9 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
@@ -18,7 +18,6 @@
 package net.shibboleth.idp.saml.saml1.profile.impl;
 
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -97,34 +96,34 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         
         registry = new AttributeTranscoderRegistryImpl();
         registry.setId("test");
-        registry.initialize();
         
-        registry.addToNamingRegistry(AttributeDesignator.class, new AbstractSAML1AttributeTranscoder.NamingFunction());
+        registry.setNamingRegistry(Collections.singletonMap(AttributeDesignator.class,
+                new AbstractSAML1AttributeTranscoder.NamingFunction()));
 
         final SAML1StringAttributeTranscoder transcoder = new SAML1StringAttributeTranscoder();
         transcoder.initialize();
         
-        final Map<String,Collection<Map<String,Object>>> rulesets = new HashMap<>();
-        
         final Map<String,Object> rule1_1 = new HashMap<>();
+        rule1_1.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule1_1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule1_1.put(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule1_1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
 
         final Map<String,Object> rule1_2 = new HashMap<>();
+        rule1_2.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule1_2.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule1_2.put(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_ALTNAME_1);
         rule1_2.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
 
         final Map<String,Object> rule2_1 = new HashMap<>();
+        rule2_1.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_2);
         rule2_1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule2_1.put(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_NAME_2);
         rule2_1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
 
-        rulesets.put(MY_NAME_1, Arrays.asList(rule1_1, rule1_2));
-        rulesets.put(MY_NAME_2, Collections.singletonList(rule2_1));
-
-        registry.addToTranscoderRegistry(rulesets);
+        registry.setTranscoderRegistry(Arrays.asList(rule1_1, rule1_2, rule2_1));
+        
+        registry.initialize();
         
         action = new AddAttributeStatementToAssertion();
         action.setTranscoderRegistry(new RegistryService(registry));
@@ -170,15 +169,26 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
 
     /** Test that the action ignores attribute encoding errors. */
     @Test public void testIgnoreAttributeEncodingErrors() throws Exception {
+
+        final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
+        localregistry.setId("test");
+        
+        localregistry.setNamingRegistry(Collections.singletonMap(AttributeDesignator.class,
+                new AbstractSAML1AttributeTranscoder.NamingFunction()));
+        
         final MockSAML1StringAttributeTranscoder transcoder = new MockSAML1StringAttributeTranscoder();
         transcoder.initialize();
-
+        
         final Map<String,Object> rule = new HashMap<>();
+        rule.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule.put(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
         
-        registry.addToTranscoderRegistry(Collections.singletonMap(MY_NAME_1, Collections.singletonList(rule)));
+        localregistry.setTranscoderRegistry(Collections.singletonList(rule));
+        localregistry.initialize();
+        
+        action.setTranscoderRegistry(new RegistryService(localregistry));
 
         final IdPAttribute attribute = new IdPAttribute(MY_NAME_1);
         attribute.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));
@@ -195,15 +205,26 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
 
     /** Test that the action returns the correct transition when an attribute encoding error occurs. */
     @Test public void failOnAttributeEncodingErrors() throws Exception {
+        
+        final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
+        localregistry.setId("test");
+        
+        localregistry.setNamingRegistry(Collections.singletonMap(AttributeDesignator.class,
+                new AbstractSAML1AttributeTranscoder.NamingFunction()));
+
         final MockSAML1StringAttributeTranscoder transcoder = new MockSAML1StringAttributeTranscoder();
         transcoder.initialize();
 
         final Map<String,Object> rule = new HashMap<>();
+        rule.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule.put(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
         
-        registry.addToTranscoderRegistry(Collections.singletonMap(MY_NAME_1, Collections.singletonList(rule)));
+        localregistry.setTranscoderRegistry(Collections.singletonList(rule));
+        localregistry.initialize();
+        
+        action.setTranscoderRegistry(new RegistryService(localregistry));
 
         final IdPAttribute attribute = new IdPAttribute(MY_NAME_1);
         attribute.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
index 5843eb1..51b2bb3 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
@@ -18,7 +18,6 @@
 package net.shibboleth.idp.saml.saml2.profile.impl;
 
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -96,34 +95,33 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         
         registry = new AttributeTranscoderRegistryImpl();
         registry.setId("test");
-        registry.initialize();
         
-        registry.addToNamingRegistry(Attribute.class, new AbstractSAML2AttributeTranscoder.NamingFunction());
+        registry.setNamingRegistry(Collections.singletonMap(Attribute.class,
+                new AbstractSAML2AttributeTranscoder.NamingFunction()));
 
         final SAML2StringAttributeTranscoder transcoder = new SAML2StringAttributeTranscoder();
         transcoder.initialize();
         
-        final Map<String,Collection<Map<String,Object>>> rulesets = new HashMap<>();
-        
         final Map<String,Object> rule1_1 = new HashMap<>();
+        rule1_1.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule1_1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule1_1.put(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule1_1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
 
         final Map<String,Object> rule1_2 = new HashMap<>();
+        rule1_2.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule1_2.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule1_2.put(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_ALTNAME_1);
         rule1_2.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
 
         final Map<String,Object> rule2_1 = new HashMap<>();
+        rule2_1.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_2);
         rule2_1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule2_1.put(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_NAME_2);
         rule2_1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
 
-        rulesets.put(MY_NAME_1, Arrays.asList(rule1_1, rule1_2));
-        rulesets.put(MY_NAME_2, Collections.singletonList(rule2_1));
-
-        registry.addToTranscoderRegistry(rulesets);
+        registry.setTranscoderRegistry(Arrays.asList(rule1_1, rule1_2, rule2_1));
+        registry.initialize();
         
         action = new AddAttributeStatementToAssertion();
         action.setTranscoderRegistry(new RegistryService(registry));
@@ -169,15 +167,26 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
 
     /** Test that the action ignores attribute encoding errors. */
     @Test public void testIgnoreAttributeEncodingErrors() throws Exception {
+        
+        final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
+        localregistry.setId("test");
+        
+        localregistry.setNamingRegistry(Collections.singletonMap(Attribute.class,
+                new AbstractSAML2AttributeTranscoder.NamingFunction()));
+        
         final MockSAML2StringAttributeTranscoder transcoder = new MockSAML2StringAttributeTranscoder();
         transcoder.initialize();
 
         final Map<String,Object> rule = new HashMap<>();
         rule.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
+        rule.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule.put(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
         
-        registry.addToTranscoderRegistry(Collections.singletonMap(MY_NAME_1, Collections.singletonList(rule)));
+        localregistry.setTranscoderRegistry(Collections.singletonList(rule));
+        localregistry.initialize();
+        
+        action.setTranscoderRegistry(new RegistryService(localregistry));
 
         final IdPAttribute attribute = new IdPAttribute(MY_NAME_1);
         attribute.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));
@@ -194,15 +203,26 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
 
     /** Test that the action returns the correct transition when an attribute encoding error occurs. */
     @Test public void failOnAttributeEncodingErrors() throws Exception {
+        
+        final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
+        localregistry.setId("test");
+        
+        localregistry.setNamingRegistry(Collections.singletonMap(Attribute.class,
+                new AbstractSAML2AttributeTranscoder.NamingFunction()));
+
         final MockSAML2StringAttributeTranscoder transcoder = new MockSAML2StringAttributeTranscoder();
         transcoder.initialize();
 
         final Map<String,Object> rule = new HashMap<>();
+        rule.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule.put(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
         
-        registry.addToTranscoderRegistry(Collections.singletonMap(MY_NAME_1, Collections.singletonList(rule)));
+        localregistry.setTranscoderRegistry(Collections.singletonList(rule));
+        localregistry.initialize();
+        
+        action.setTranscoderRegistry(new RegistryService(localregistry));
 
         final IdPAttribute attribute = new IdPAttribute(MY_NAME_1);
         attribute.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));

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


More information about the commits mailing list