[java-identity-provider] branch master updated: IDP-1434 - Redesign Attribute encoding/decoding as a service

Scott Cantor cantor.2 at osu.edu
Tue Jun 4 21:00:47 EDT 2019


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

scantor 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=c63eba0ea19058fa43e2ba1b77e8f0043d79127a

The following commit(s) were added to refs/heads/master by this push:
       new  c63eba0   IDP-1434 - Redesign Attribute encoding/decoding as a service
c63eba0 is described below

commit c63eba0ea19058fa43e2ba1b77e8f0043d79127a
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Jun 4 21:00:42 2019 -0400

    IDP-1434 - Redesign Attribute encoding/decoding as a service
    
    https://issues.shibboleth.net/jira/browse/IDP-1434
    
    Combine rules for different protocols using property prefixes.
---
 .../transcoding/AttributeTranscoderRegistry.java   |  3 -
 .../impl/AttributeTranscoderRegistryImpl.java      | 52 ++++++---------
 .../impl/AttributeTranscoderRegistryImplTest.java  |  6 +-
 .../enc/BaseSAML1AttributeEncoderParser.java       |  5 +-
 .../enc/BaseSAML2AttributeEncoderParser.java       |  5 +-
 .../spring/BaseEncoderDefinitionParserTest.java    |  5 +-
 .../enc/SAML1Base64AttributeEncoderParserTest.java |  7 +-
 ...AML1ScopedStringAttributeEncoderParserTest.java |  9 ++-
 .../enc/SAML1StringAttributeEncoderParserTest.java |  9 ++-
 .../SAML1XMLObjectAttributeEncoderParserTest.java  |  9 ++-
 .../enc/SAML2Base64AttributeEncoderParserTest.java |  9 ++-
 ...AML2ScopedStringAttributeEncoderParserTest.java |  9 ++-
 .../enc/SAML2StringAttributeEncoderParserTest.java |  9 ++-
 .../SAML2XMLObjectAttributeEncoderParserTest.java  |  9 ++-
 .../idp/cas/attribute/CASAttributeTranscoder.java  |  2 +-
 .../impl/CASScopedStringAttributeTranscoder.java   |  2 +-
 .../main/resources/attributes/default-rules.xml    | 77 ++++++++++++++++++++++
 .../src/main/resources/attributes/saml1-rules.xml  | 61 -----------------
 .../src/main/resources/attributes/saml2-rules.xml  | 61 -----------------
 idp-conf/src/main/resources/conf/services.xml      |  3 +-
 .../system/conf/attribute-registry-system.xml      | 13 ++++
 .../AbstractSAMLAttributeTranscoder.java           |  3 +-
 .../transcoding/SAML1AttributeTranscoder.java      | 11 +++-
 .../transcoding/SAML2AttributeTranscoder.java      | 13 +++-
 .../transcoding/SAMLAttributeTranscoder.java       | 40 -----------
 .../impl/SAML1ScopedStringAttributeTranscoder.java |  6 +-
 .../impl/SAML1XMLObjectAttributeTranscoder.java    |  2 +-
 .../impl/SAML2ScopedStringAttributeTranscoder.java |  6 +-
 .../impl/SAML2XMLObjectAttributeTranscoder.java    |  2 +-
 .../impl/SAML1ByteAttributeTranscoderTest.java     |  5 +-
 .../SAML1ScopedStringAttributeTranscoderTest.java  |  5 +-
 .../impl/SAML1StringAttributeTranscoderTest.java   |  5 +-
 .../impl/SAML2ByteAttributeTranscoderTest.java     |  5 +-
 .../SAML2ScopedStringAttributeTranscoderTest.java  |  5 +-
 .../impl/SAML2StringAttributeTranscoderTest.java   |  5 +-
 .../SAML2XMLObjectAttributeTranscoderTest.java     |  5 +-
 .../impl/AddAttributeStatementToAssertionTest.java | 11 ++--
 .../impl/AddAttributeStatementToAssertionTest.java | 11 ++--
 .../idp/saml/impl/metadata/rules/subjectid.txt     |  4 +-
 .../idp/saml/impl/metadata/rules/zorkmids.txt      |  6 +-
 .../idp/saml/impl/profile/saml1Mapper.xml          | 20 +++---
 .../idp/saml/impl/profile/saml2Mapper.xml          | 14 ++--
 42 files changed, 226 insertions(+), 323 deletions(-)

diff --git a/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/AttributeTranscoderRegistry.java b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/AttributeTranscoderRegistry.java
index 072d5e3..d7c72a7 100644
--- a/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/AttributeTranscoderRegistry.java
+++ b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/AttributeTranscoderRegistry.java
@@ -42,9 +42,6 @@ public interface AttributeTranscoderRegistry extends IdentifiedComponent {
 
     /** Property name for accessing {@link AttributeTranscoder} object to use. */
     @Nonnull @NotEmpty static final String PROP_TRANSCODER = "transcoder";
-
-    /** Property name for identifying an {@link AttributeTranscoder} class to build. */
-    @Nonnull @NotEmpty static final String PROP_TRANSCODER_CLASS = "transcoderClass";
     
     /** Property name for accessing an activation condition object to apply. */
     @Nonnull @NotEmpty static final String PROP_CONDITION = "activationCondition";
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 937c6b4..c537c06 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
@@ -17,10 +17,11 @@
 
 package net.shibboleth.idp.attribute.transcoding.impl;
 
-import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
 import java.util.function.Predicate;
@@ -38,7 +39,6 @@ import net.shibboleth.idp.profile.logic.RelyingPartyIdPredicate;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
@@ -58,9 +58,6 @@ import com.google.common.collect.Multimap;
 public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponent<AttributeTranscoderRegistry>
         implements AttributeTranscoderRegistry {
 
-    /** Bean name for identifying an {@link AttributeTranscoder} object to install. */
-    @Nonnull @NotEmpty static final String PROP_TRANSCODER_BEAN = "transcoderBean";
-    
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AttributeTranscoderRegistryImpl.class);
     
@@ -137,12 +134,9 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
                     mapping.getMap().remove(PROP_CONDITION);
                 }
                 
-                final AttributeTranscoder transcoder = buildAttributeTranscoder(mapping);
-                if (transcoder != null) {
-                    mapping.getMap().put(PROP_TRANSCODER, transcoder);
+                final Collection<AttributeTranscoder> transcoders = getAttributeTranscoders(mapping);
+                for (final AttributeTranscoder transcoder : transcoders) {
                     addMapping(internalId, transcoder, mapping.getMap());
-                } else {
-                    log.warn("Unable to locate or build an AttributeTranscoder in rule for {}", internalId);
                 }
             }
         }
@@ -202,46 +196,39 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
     }
     
     /**
-     * Get the appropriate {@link AttributeTranscoder} to use.
+     * Get the appropriate {@link AttributeTranscoder} objects to use.
      * 
      * @param rule transcoding rule
      * 
-     * @return a transcoder to install under the ruleset's {@link #PROP_TRANSCODER}
+     * @return transcoders to install under a copy of each ruleset's {@link #PROP_TRANSCODER} property
      */
-    @Nullable private AttributeTranscoder buildAttributeTranscoder(@Nonnull final TranscodingRule rule) {
+    @Nonnull @NonnullElements private Collection<AttributeTranscoder> getAttributeTranscoders(
+            @Nonnull final TranscodingRule rule) {
         
         AttributeTranscoder transcoder = rule.get(PROP_TRANSCODER, AttributeTranscoder.class);
         if (transcoder != null) {
-            return transcoder;
+            return Collections.singletonList(transcoder);
         }
         
-        final String type = rule.get(PROP_TRANSCODER_CLASS, String.class);
-        if (type != null) {
-            try {
-                transcoder = (AttributeTranscoder) Class.forName(type).getDeclaredConstructor().newInstance();
-                transcoder.initialize();
-                return transcoder;
-            } catch (final InstantiationException | IllegalAccessException | IllegalArgumentException
-                    | InvocationTargetException | NoSuchMethodException | SecurityException
-                    | ClassNotFoundException | ComponentInitializationException e) {
-                log.warn("Unable to create AttributeTranscoder of specified type {}", type, e);
-                return null;
-            }
+        final String beanNames = rule.get(PROP_TRANSCODER, String.class);
+        if (beanNames == null) {
+            log.error("{} property is missing or of incorrect type", PROP_TRANSCODER);
+            return Collections.emptyList();
         }
+
+        final List<AttributeTranscoder> transcoders = new ArrayList<>();
         
-        final String id = rule.get(PROP_TRANSCODER_BEAN, String.class);
-        if (id != null) {
+        for (final String id :StringSupport.stringToList(beanNames, " ")) {
             try {
                 transcoder = getApplicationContext().getBean(id, AttributeTranscoder.class);
                 transcoder.initialize();
-                return transcoder;
+                transcoders.add(transcoder);
             } catch (final Exception e) {
                 log.warn("Unable to locate AttributeTranscoder bean named {}", id, e);
-                return null;
             }
         }
-
-        return null;
+        
+        return transcoders;
     }
     
     /**
@@ -256,6 +243,7 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
 
         
         final TranscodingRule copy = new TranscodingRule(ruleset);
+        copy.getMap().put(PROP_TRANSCODER, transcoder);
 
         final Class<?> type = transcoder.getEncodedType();
         final String targetName = transcoder.getEncodedName(copy);
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 8fb78f5..e6a419e 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
@@ -73,8 +73,7 @@ public class AttributeTranscoderRegistryImplTest {
         
         final Map<String,Object> ruleset2 = new HashMap<>();
         ruleset2.put(AttributeTranscoderRegistry.PROP_ID, "foo");
-        ruleset2.put(AttributeTranscoderRegistry.PROP_TRANSCODER_CLASS,
-                "net.shibboleth.idp.attribute.transcoding.impl.PairTranscoder");
+        ruleset2.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset2.put("name", "baz");
         
         final Map<String,Object> ruleset3 = new HashMap<>();
@@ -85,8 +84,7 @@ public class AttributeTranscoderRegistryImplTest {
 
         final Map<String,Object> ruleset4 = new HashMap<>();
         ruleset4.put(AttributeTranscoderRegistry.PROP_ID, "foo2");
-        ruleset4.put(AttributeTranscoderRegistry.PROP_TRANSCODER_CLASS,
-                "net.shibboleth.idp.attribute.transcoding.impl.PairTranscoder");
+        ruleset4.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset4.put("name", "baz");
         
         registry.setTranscoderRegistry(Arrays.asList(
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML1AttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML1AttributeEncoderParser.java
index 95af88e..bb96db7 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML1AttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML1AttributeEncoderParser.java
@@ -27,7 +27,6 @@ import org.w3c.dom.Element;
 
 import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /**
@@ -41,7 +40,7 @@ public abstract class BaseSAML1AttributeEncoderParser extends BaseAttributeEncod
             @Nonnull final Map<String,Object> rule) {
         
         if (config.hasAttributeNS(null, "name")) {
-            rule.put(SAMLAttributeTranscoder.PROP_NAME,
+            rule.put(SAML1AttributeTranscoder.PROP_NAME,
                     StringSupport.trimOrNull(config.getAttributeNS(null, "name")));
         } else {
             throw new BeanDefinitionStoreException("Missing 'name' attribute, cannot create transcoder rule");
@@ -54,7 +53,7 @@ public abstract class BaseSAML1AttributeEncoderParser extends BaseAttributeEncod
 
         final String value = StringSupport.trimOrNull(config.getAttributeNS(null, "encodeType"));
         if (value != null) {
-            rule.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE,SpringSupport.getStringValueAsBoolean(value));
+            rule.put(SAML1AttributeTranscoder.PROP_ENCODE_TYPE,SpringSupport.getStringValueAsBoolean(value));
         }
     }
     
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML2AttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML2AttributeEncoderParser.java
index 2410a8a..b8760ee 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML2AttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML2AttributeEncoderParser.java
@@ -27,7 +27,6 @@ import org.w3c.dom.Element;
 
 import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /**
@@ -41,7 +40,7 @@ public abstract class BaseSAML2AttributeEncoderParser extends BaseAttributeEncod
             @Nonnull final Map<String,Object> rule) {
 
         if (config.hasAttributeNS(null, "name")) {
-            rule.put(SAMLAttributeTranscoder.PROP_NAME,
+            rule.put(SAML2AttributeTranscoder.PROP_NAME,
                     StringSupport.trimOrNull(config.getAttributeNS(null, "name")));
         } else {
             throw new BeanDefinitionStoreException("Missing 'name' attribute, cannot create transcoder rule");
@@ -59,7 +58,7 @@ public abstract class BaseSAML2AttributeEncoderParser extends BaseAttributeEncod
         
         final String value = StringSupport.trimOrNull(config.getAttributeNS(null, "encodeType"));
         if (value != null) {
-            rule.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE,SpringSupport.getStringValueAsBoolean(value));
+            rule.put(SAML2AttributeTranscoder.PROP_ENCODE_TYPE,SpringSupport.getStringValueAsBoolean(value));
         }
     }
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseEncoderDefinitionParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseEncoderDefinitionParserTest.java
index f6a0437..64859f2 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseEncoderDefinitionParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseEncoderDefinitionParserTest.java
@@ -17,7 +17,6 @@
 
 package net.shibboleth.idp.attribute.resolver.spring;
 
-import static net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder.PROP_ENCODE_TYPE;
 import static org.testng.Assert.assertTrue;
 
 import java.util.Map;
@@ -80,8 +79,8 @@ public abstract class BaseEncoderDefinitionParserTest extends BaseAttributeDefin
 
     }
 
-    static protected void checkEncodeType(final Map<String,Object> rule, boolean expectedValue) {
-        final Object encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.TRUE);
+    static protected void checkEncodeType(final Map<String,Object> rule, final String propName, boolean expectedValue) {
+        final Object encodeType = rule.getOrDefault(propName, Boolean.TRUE);
         if (encodeType instanceof Boolean) {
             assertTrue(encodeType.equals(expectedValue));
         } else {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1Base64AttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1Base64AttributeEncoderParserTest.java
index cacbd1e..efb526d 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1Base64AttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1Base64AttributeEncoderParserTest.java
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserT
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1Base64AttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1ByteAttributeTranscoder;
 
 /**
@@ -46,10 +45,10 @@ public class SAML1Base64AttributeEncoderParserTest extends BaseEncoderDefinition
                 getAttributeTranscoderRule("resolver/saml1Base64.xml", activation, encodeType).getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1ByteAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "SAML1_BASE64_ATTRIBUTE_NAME");
+        assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAME), "SAML1_BASE64_ATTRIBUTE_NAME");
         assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_BASE64_ATTRIBUTE_NAME_SPACE");
         assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, encodeType==null ? false: encodeType);
+        checkEncodeType(rule, SAML1AttributeTranscoder.PROP_ENCODE_TYPE, encodeType==null ? false : encodeType);
     }
 
     
@@ -60,7 +59,7 @@ public class SAML1Base64AttributeEncoderParserTest extends BaseEncoderDefinition
         assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAME), "Base64_ATTRIBUTE");
         assertNull(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML1AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1ScopedStringAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1ScopedStringAttributeEncoderParserTest.java
index cbbcb5a..7590d28 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1ScopedStringAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1ScopedStringAttributeEncoderParserTest.java
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserT
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1ScopedStringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1ScopedStringAttributeTranscoder;
 
 /**
@@ -46,13 +45,13 @@ public class SAML1ScopedStringAttributeEncoderParserTest extends BaseEncoderDefi
                 getAttributeTranscoderRule("resolver/saml1Scoped.xml", activation, encodeType).getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1ScopedStringAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "SAML1_SCOPED_ATTRIBUTE_NAME");
+        assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAME), "SAML1_SCOPED_ATTRIBUTE_NAME");
         assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_SCOPED_ATTRIBUTE_NAME_FORMAT");
         assertEquals(rule.get(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE), "attribute");
         assertEquals(rule.get(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_ATTR_NAME), "saml1ScopeAttrib");
         assertEquals(rule.get(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER), "#@#");
         assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, encodeType!=null ? encodeType : false);
+        checkEncodeType(rule, SAML1AttributeTranscoder.PROP_ENCODE_TYPE, encodeType!=null ? encodeType : false);
 }
 
     
@@ -60,13 +59,13 @@ public class SAML1ScopedStringAttributeEncoderParserTest extends BaseEncoderDefi
         final Map<String,Object> rule = getAttributeTranscoderRule("resolver/saml1ScopedDefault.xml").getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1ScopedStringAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "saml1_scoped_name");
+        assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAME), "saml1_scoped_name");
         assertNull(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE));
         assertNull(rule.get(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE));
         assertNull(rule.get(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_ATTR_NAME));
         assertNull(rule.get(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML1AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringAttributeEncoderParserTest.java
index ee124ba..13ae3ec 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringAttributeEncoderParserTest.java
@@ -31,7 +31,6 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1StringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1StringAttributeTranscoder;
 
@@ -46,10 +45,10 @@ public class SAML1StringAttributeEncoderParserTest extends BaseEncoderDefinition
                 getAttributeTranscoderRule("resolver/saml1String.xml", activation, encodeType).getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1StringAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "SAML1_STRING_ATTRIBUTE_NAME");
+        assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAME), "SAML1_STRING_ATTRIBUTE_NAME");
         assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_STRING_ATTRIBUTE_NAME_SPACE");
         assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML1AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
 
     
@@ -57,10 +56,10 @@ public class SAML1StringAttributeEncoderParserTest extends BaseEncoderDefinition
         final Map<String,Object> rule = getAttributeTranscoderRule("resolver/saml1StringDefault.xml").getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1StringAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "ATTRIBUTE");
+        assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAME), "ATTRIBUTE");
         assertNull(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML1AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1XMLObjectAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1XMLObjectAttributeEncoderParserTest.java
index 7f9f62a..ad45036 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1XMLObjectAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1XMLObjectAttributeEncoderParserTest.java
@@ -31,7 +31,6 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1XMLObjectAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1XMLObjectAttributeTranscoder;
 
@@ -46,20 +45,20 @@ public class SAML1XMLObjectAttributeEncoderParserTest extends BaseEncoderDefinit
                 getAttributeTranscoderRule("resolver/saml1XmlObject.xml", activation, encodeType).getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1XMLObjectAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "SAML1_XMLObject_ATTRIBUTE_NAME");
+        assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAME), "SAML1_XMLObject_ATTRIBUTE_NAME");
         assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_XMLObject_ATTRIBUTE_NAME_SPACE");
         assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, encodeType!=null ? encodeType : true);
+        checkEncodeType(rule, SAML1AttributeTranscoder.PROP_ENCODE_TYPE, encodeType!=null ? encodeType : true);
 }
     
     @Test public void defaultCase() {
         final Map<String,Object> rule = getAttributeTranscoderRule("resolver/saml1XmlObjectDefault.xml").getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1XMLObjectAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "XMLObject_ATTRIBUTE");
+        assertEquals(rule.get(SAML1AttributeTranscoder.PROP_NAME), "XMLObject_ATTRIBUTE");
         assertNull(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML1AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2Base64AttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2Base64AttributeEncoderParserTest.java
index 17c6e54..98744f5 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2Base64AttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2Base64AttributeEncoderParserTest.java
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserT
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2Base64AttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2ByteAttributeTranscoder;
 
 /**
@@ -46,22 +45,22 @@ public class SAML2Base64AttributeEncoderParserTest extends BaseEncoderDefinition
                 getAttributeTranscoderRule("resolver/saml2Base64.xml", activation, encodeType).getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2ByteAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "Saml2Base64_ATTRIBUTE_NAME");
+        assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME), "Saml2Base64_ATTRIBUTE_NAME");
         assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME_FORMAT), "Saml2Base64_ATTRIBUTE_NAME_FORMAT");
         assertEquals(rule.get(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "Saml2Base64_ATTRIBUTE_FRIENDLY_NAME");
         assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML2AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
     
     @Test public void defaultCase() {
         final Map<String,Object> rule = getAttributeTranscoderRule("resolver/saml2Base64Default.xml").getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2ByteAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "Base64Name");
+        assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME), "Base64Name");
         assertNull(rule.get(SAML2AttributeTranscoder.PROP_NAME_FORMAT));
         assertNull(rule.get(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML2AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2ScopedStringAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2ScopedStringAttributeEncoderParserTest.java
index 1741af2..76e5214 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2ScopedStringAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2ScopedStringAttributeEncoderParserTest.java
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserT
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2ScopedStringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2ScopedStringAttributeTranscoder;
 
 /**
@@ -46,28 +45,28 @@ public class SAML2ScopedStringAttributeEncoderParserTest extends BaseEncoderDefi
                 getAttributeTranscoderRule("resolver/saml2Scoped.xml", activation, encodeType).getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2ScopedStringAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "ATTRIBUTE_NAME");
+        assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME), "ATTRIBUTE_NAME");
         assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME_FORMAT), "ATTRIBUTE_NAME_FORMAT");
         assertEquals(rule.get(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "ATTRIBUTE_FRIENDLY_NAME");
         assertEquals(rule.get(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE), "attribute");
         assertEquals(rule.get(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_ATTR_NAME), "scopeAttrib");
         assertEquals(rule.get(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER), "###");
         assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, encodeType!=null ? encodeType : false);
+        checkEncodeType(rule, SAML2AttributeTranscoder.PROP_ENCODE_TYPE, encodeType!=null ? encodeType : false);
     }
     
     @Test public void defaultCase() {
         final Map<String,Object> rule = getAttributeTranscoderRule("resolver/saml2ScopedDefault.xml").getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2ScopedStringAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "name");
+        assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME), "name");
         assertNull(rule.get(SAML2AttributeTranscoder.PROP_NAME_FORMAT));
         assertNull(rule.get(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME));
         assertNull(rule.get(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE));
         assertNull(rule.get(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_ATTR_NAME));
         assertNull(rule.get(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML2AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringAttributeEncoderParserTest.java
index 67cb02c..9b2692a 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringAttributeEncoderParserTest.java
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserT
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2StringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2StringAttributeTranscoder;
 
 /**
@@ -46,22 +45,22 @@ public class SAML2StringAttributeEncoderParserTest extends BaseEncoderDefinition
                 getAttributeTranscoderRule("resolver/saml2String.xml", activation, encodeType).getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2StringAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "Saml2String_ATTRIBUTE_NAME");
+        assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME), "Saml2String_ATTRIBUTE_NAME");
         assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME_FORMAT), "Saml2String_ATTRIBUTE_NAME_FORMAT");
         assertEquals(rule.get(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "Saml2String_ATTRIBUTE_FRIENDLY_NAME");
         assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, encodeType!=null ? encodeType : false);
+        checkEncodeType(rule, SAML2AttributeTranscoder.PROP_ENCODE_TYPE, encodeType!=null ? encodeType : false);
     }
     
     @Test public void defaultCase() {
         final Map<String,Object> rule = getAttributeTranscoderRule("resolver/saml2StringDefault.xml").getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2StringAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "Saml2StringName");
+        assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME), "Saml2StringName");
         assertNull(rule.get(SAML2AttributeTranscoder.PROP_NAME_FORMAT));
         assertNull(rule.get(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML2AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2XMLObjectAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2XMLObjectAttributeEncoderParserTest.java
index 513cc6a..c777d1e 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2XMLObjectAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2XMLObjectAttributeEncoderParserTest.java
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserT
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2XMLObjectAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2XMLObjectAttributeTranscoder;
 
 /**
@@ -46,22 +45,22 @@ public class SAML2XMLObjectAttributeEncoderParserTest extends BaseEncoderDefinit
                 getAttributeTranscoderRule("resolver/saml2XmlObject.xml", activation, encodeType).getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2XMLObjectAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "Saml2XmlObject_ATTRIBUTE_NAME");
+        assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME), "Saml2XmlObject_ATTRIBUTE_NAME");
         assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME_FORMAT), "Saml2XmlObject_ATTRIBUTE_NAME_FORMAT");
         assertEquals(rule.get(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "Saml2XmlObject_ATTRIBUTE_FRIENDLY_NAME");
         assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, encodeType!=null ? encodeType : true);
+        checkEncodeType(rule, SAML2AttributeTranscoder.PROP_ENCODE_TYPE, encodeType!=null ? encodeType : true);
     }
 
     @Test public void defaultCase() {
         final Map<String,Object> rule = getAttributeTranscoderRule("resolver/saml2XmlObjectDefault.xml").getMap();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2XMLObjectAttributeTranscoder);
-        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "XmlObjectName");
+        assertEquals(rule.get(SAML2AttributeTranscoder.PROP_NAME), "XmlObjectName");
         assertNull(rule.get(SAML2AttributeTranscoder.PROP_NAME_FORMAT));
         assertNull(rule.get(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        checkEncodeType(rule, SAML2AttributeTranscoder.PROP_ENCODE_TYPE, true);
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
diff --git a/idp-cas-api/src/main/java/net/shibboleth/idp/cas/attribute/CASAttributeTranscoder.java b/idp-cas-api/src/main/java/net/shibboleth/idp/cas/attribute/CASAttributeTranscoder.java
index 7d69678..7c218b6 100644
--- a/idp-cas-api/src/main/java/net/shibboleth/idp/cas/attribute/CASAttributeTranscoder.java
+++ b/idp-cas-api/src/main/java/net/shibboleth/idp/cas/attribute/CASAttributeTranscoder.java
@@ -28,6 +28,6 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 public interface CASAttributeTranscoder extends AttributeTranscoder<Attribute> {
 
     /** The attribute name. */
-    @Nonnull @NotEmpty static final String PROP_NAME = "name";
+    @Nonnull @NotEmpty static final String PROP_NAME = "cas.name";
 
 }
\ No newline at end of file
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoder.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoder.java
index 2447dbf..e203b12 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoder.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoder.java
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
 public class CASScopedStringAttributeTranscoder extends AbstractCASAttributeTranscoder<ScopedStringAttributeValue> {
 
     /** Scope delimiter. */
-    @Nonnull @NotEmpty public static final String PROP_SCOPE_DELIMITER = "scopeDelimiter";
+    @Nonnull @NotEmpty public static final String PROP_SCOPE_DELIMITER = "cas.scopeDelimiter";
     
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(CASScopedStringAttributeTranscoder.class);
diff --git a/idp-conf/src/main/resources/attributes/default-rules.xml b/idp-conf/src/main/resources/attributes/default-rules.xml
new file mode 100644
index 0000000..38cc30b
--- /dev/null
+++ b/idp-conf/src/main/resources/attributes/default-rules.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xmlns:c="http://www.springframework.org/schema/c"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
+                           
+       default-init-method="initialize"
+       default-destroy-method="destroy">
+
+    <!-- Default Attribute transcoding rules. -->
+
+    <bean parent="shibboleth.TranscodingRule">
+        <constructor-arg>
+            <bean parent="shibboleth.TranscodingProperties">
+                <property name="sourceMap">
+                    <map merge="true">
+                        <entry key="id" value="uid" />
+                        <entry key="transcoder" value="SAML2StringTranscoder SAML1StringTranscoder" />
+                        <entry key="saml2.name" value="urn:oid:0.9.2342.19200300.100.1.1" />
+                        <entry key="saml1.name" value="urn:mace:dir:attribute-def:uid" />
+                    </map>
+                </property>
+            </bean>
+        </constructor-arg>
+    </bean>
+
+    <bean parent="shibboleth.TranscodingRule">
+        <constructor-arg>
+            <bean parent="shibboleth.TranscodingProperties">
+                <property name="sourceMap">
+                    <map merge="true">
+                        <entry key="id" value="mail" />
+                        <entry key="transcoder" value="SAML2StringTranscoder SAML1StringTranscoder" />
+                        <entry key="saml2.name" value="urn:oid:0.9.2342.19200300.100.1.3" />
+                        <entry key="saml1.name" value="urn:mace:dir:attribute-def:mail" />
+                    </map>
+                </property>
+            </bean>
+        </constructor-arg>
+    </bean>
+
+    <bean parent="shibboleth.TranscodingRule">
+        <constructor-arg>
+            <bean parent="shibboleth.TranscodingProperties">
+                <property name="sourceMap">
+                    <map merge="true">
+                        <entry key="id" value="eduPersonPrincipalName" />
+                        <entry key="transcoder" value="SAML2ScopedStringTranscoder SAML1ScopedStringTranscoder" />
+                        <entry key="saml2.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" />
+                        <entry key="saml1.name" value="urn:mace:dir:attribute-def:eduPersonPrincipalName" />
+                    </map>
+                </property>
+            </bean>
+        </constructor-arg>
+    </bean>
+
+    <bean parent="shibboleth.TranscodingRule">
+        <constructor-arg>
+            <bean parent="shibboleth.TranscodingProperties">
+                <property name="sourceMap">
+                    <map merge="true">
+                        <entry key="id" value="eduPersonScopedAffiliation" />
+                        <entry key="transcoder" value="SAML2ScopedStringTranscoder SAML1ScopedStringTranscoder" />
+                        <entry key="saml2.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" />
+                        <entry key="saml1.name" value="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" />
+                    </map>
+                </property>
+            </bean>
+        </constructor-arg>
+    </bean>
+    
+</beans>
diff --git a/idp-conf/src/main/resources/attributes/saml1-rules.xml b/idp-conf/src/main/resources/attributes/saml1-rules.xml
deleted file mode 100644
index 9f04672..0000000
--- a/idp-conf/src/main/resources/attributes/saml1-rules.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:context="http://www.springframework.org/schema/context"
-       xmlns:util="http://www.springframework.org/schema/util"
-       xmlns:p="http://www.springframework.org/schema/p"
-       xmlns:c="http://www.springframework.org/schema/c"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
-                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
-                           
-       default-init-method="initialize"
-       default-destroy-method="destroy">
-
-    <!-- Default SAML 1 Attribute transcoding rules. -->
-
-    <bean parent="shibboleth.TranscodingRule">
-        <constructor-arg>
-            <map>
-                <entry key="id" value="uid" />
-                <entry key="transcoder" value-ref="SAML1StringTranscoder" />
-                <entry key="name" value="urn:mace:dir:attribute-def:uid" />
-                <entry key="encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
-            </map>
-        </constructor-arg>
-    </bean>
-
-    <bean parent="shibboleth.TranscodingRule">
-        <constructor-arg>
-            <map>
-                <entry key="id" value="mail" />
-                <entry key="transcoder" value-ref="SAML1StringTranscoder" />
-                <entry key="name" value="urn:mace:dir:attribute-def:mail" />
-                <entry key="encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
-            </map>
-        </constructor-arg>
-    </bean>
-
-    <bean parent="shibboleth.TranscodingRule">
-        <constructor-arg>
-            <map>
-                <entry key="id" value="eduPersonPrincipalName" />
-                <entry key="transcoder" value-ref="SAML1ScopedStringTranscoder" />
-                <entry key="name" value="urn:mace:dir:attribute-def:eduPersonPrincipalName" />
-                <entry key="encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
-            </map>
-        </constructor-arg>
-    </bean>
-
-    <bean parent="shibboleth.TranscodingRule">
-        <constructor-arg>
-            <map>
-                <entry key="id" value="eduPersonScopedAffiliation" />
-                <entry key="transcoder" value-ref="SAML1ScopedStringTranscoder" />
-                <entry key="name" value="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" />
-                <entry key="encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
-            </map>
-        </constructor-arg>
-    </bean>
-    
-</beans>
diff --git a/idp-conf/src/main/resources/attributes/saml2-rules.xml b/idp-conf/src/main/resources/attributes/saml2-rules.xml
deleted file mode 100644
index 0081038..0000000
--- a/idp-conf/src/main/resources/attributes/saml2-rules.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:context="http://www.springframework.org/schema/context"
-       xmlns:util="http://www.springframework.org/schema/util"
-       xmlns:p="http://www.springframework.org/schema/p"
-       xmlns:c="http://www.springframework.org/schema/c"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
-                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
-                           
-       default-init-method="initialize"
-       default-destroy-method="destroy">
-
-    <!-- Default SAML 2 Attribute transcoding rules. -->
-
-    <bean parent="shibboleth.TranscodingRule">
-        <constructor-arg>
-            <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" />
-                <entry key="encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
-            </map>
-        </constructor-arg>
-    </bean>
-
-    <bean parent="shibboleth.TranscodingRule">
-        <constructor-arg>
-            <map>
-                <entry key="id" value="mail" />
-                <entry key="transcoder" value-ref="SAML2StringTranscoder" />
-                <entry key="name" value="urn:oid:0.9.2342.19200300.100.1.3" />
-                <entry key="encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
-            </map>
-        </constructor-arg>
-    </bean>
-
-    <bean parent="shibboleth.TranscodingRule">
-        <constructor-arg>
-            <map>
-                <entry key="id" value="eduPersonPrincipalName" />
-                <entry key="transcoder" value-ref="SAML2ScopedStringTranscoder" />
-                <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" />
-                <entry key="encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
-            </map>
-        </constructor-arg>
-    </bean>
-
-    <bean parent="shibboleth.TranscodingRule">
-        <constructor-arg>
-            <map>
-                <entry key="id" value="eduPersonScopedAffiliation" />
-                <entry key="transcoder" value-ref="SAML2ScopedStringTranscoder" />
-                <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" />
-                <entry key="encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
-            </map>
-        </constructor-arg>
-    </bean>
-    
-</beans>
diff --git a/idp-conf/src/main/resources/conf/services.xml b/idp-conf/src/main/resources/conf/services.xml
index ae3b6f3..8e6d9bf 100644
--- a/idp-conf/src/main/resources/conf/services.xml
+++ b/idp-conf/src/main/resources/conf/services.xml
@@ -73,8 +73,7 @@
     <util:list id ="shibboleth.AttributeRegistryResources">
         <value>%{idp.home}/conf/attribute-registry.xml</value>
         <value>%{idp.home}/system/conf/attribute-registry-system.xml</value>
-        <value>%{idp.home}/attributes/saml2-rules.xml</value>
-        <value>%{idp.home}/attributes/saml1-rules.xml</value>
+        <value>%{idp.home}/attributes/default-rules.xml</value>
     </util:list>
 
     <!-- This set of resources uses only AttributeEncoders for compatibility. -->
diff --git a/idp-conf/src/main/resources/system/conf/attribute-registry-system.xml b/idp-conf/src/main/resources/system/conf/attribute-registry-system.xml
index ddde56a..9890b2a 100644
--- a/idp-conf/src/main/resources/system/conf/attribute-registry-system.xml
+++ b/idp-conf/src/main/resources/system/conf/attribute-registry-system.xml
@@ -53,4 +53,17 @@
     <bean id="shibboleth.TranscodingRuleLoader"
         class="net.shibboleth.idp.attribute.transcoding.impl.TranscodingRuleLoader" abstract="true" />
     
+    <util:map id="shibboleth.DefaultTranscodingProperties">
+    </util:map>
+
+    <bean id="shibboleth.TranscodingProperties" lazy-init="true"
+            class="org.springframework.beans.factory.config.MapFactoryBean">
+        <property name="sourceMap">
+            <map>
+                <entry key="saml1.encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
+                <entry key="saml2.encodeType" value="%{idp.service.attribute.registry.encodeType:true}" />
+            </map>
+        </property>
+    </bean>
+    
 </beans>
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAMLAttributeTranscoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAMLAttributeTranscoder.java
index 84fbecb..6d24b77 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAMLAttributeTranscoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAMLAttributeTranscoder.java
@@ -54,8 +54,7 @@ import org.slf4j.LoggerFactory;
  * @param <EncodedType> the type of data that can be handled by the transcoder
  */
 public abstract class AbstractSAMLAttributeTranscoder<AttributeType extends SAMLObject,
-        EncodedType extends IdPAttributeValue> extends AbstractAttributeTranscoder<AttributeType>
-        implements SAMLAttributeTranscoder<AttributeType> {
+        EncodedType extends IdPAttributeValue> extends AbstractAttributeTranscoder<AttributeType> {
 
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractSAMLAttributeTranscoder.class);
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML1AttributeTranscoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML1AttributeTranscoder.java
index 0749595..3aa21f1 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML1AttributeTranscoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML1AttributeTranscoder.java
@@ -20,6 +20,7 @@ package net.shibboleth.idp.saml.attribute.transcoding;
 import javax.annotation.Nonnull;
 
 import net.shibboleth.idp.attribute.IdPAttributeValue;
+import net.shibboleth.idp.attribute.transcoding.AttributeTranscoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 
 import org.opensaml.saml.saml1.core.Attribute;
@@ -31,9 +32,15 @@ import org.opensaml.saml.saml1.core.AttributeDesignator;
  * @param <EncodedType> the type of data that can be handled by the transcoder
  */
 public interface SAML1AttributeTranscoder<EncodedType extends IdPAttributeValue> extends
-        SAMLAttributeTranscoder<AttributeDesignator> {
+        AttributeTranscoder<AttributeDesignator> {
+
+    /** The attribute name. */
+    @Nonnull @NotEmpty static final String PROP_NAME = "saml1.name";
+
+    /** Whether to encode the xsi:type. */
+    @Nonnull @NotEmpty static final String PROP_ENCODE_TYPE = "saml1.encodeType";
 
     /** The namespace of the attribute name. */
-    @Nonnull @NotEmpty static final String PROP_NAMESPACE = "namespace";
+    @Nonnull @NotEmpty static final String PROP_NAMESPACE = "saml1.namespace";
 
 }
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML2AttributeTranscoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML2AttributeTranscoder.java
index c36df8d..adf257e 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML2AttributeTranscoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML2AttributeTranscoder.java
@@ -20,6 +20,7 @@ package net.shibboleth.idp.saml.attribute.transcoding;
 import javax.annotation.Nonnull;
 
 import net.shibboleth.idp.attribute.IdPAttributeValue;
+import net.shibboleth.idp.attribute.transcoding.AttributeTranscoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 
 import org.opensaml.saml.saml2.core.Attribute;
@@ -31,12 +32,18 @@ import org.opensaml.saml.saml2.metadata.RequestedAttribute;
  * @param <EncodedType> the type of data that can be handled by the transcoder
  */
 public interface SAML2AttributeTranscoder<EncodedType extends IdPAttributeValue> extends
-        SAMLAttributeTranscoder<Attribute> {
+        AttributeTranscoder<Attribute> {
+
+    /** The attribute name. */
+    @Nonnull @NotEmpty static final String PROP_NAME = "saml2.name";
+
+    /** Whether to encode the xsi:type. */
+    @Nonnull @NotEmpty static final String PROP_ENCODE_TYPE = "saml2.encodeType";
 
     /** A friendly, human readable, name for the attribute. */
-    @Nonnull @NotEmpty static final String PROP_FRIENDLY_NAME = "friendlyName";
+    @Nonnull @NotEmpty static final String PROP_FRIENDLY_NAME = "saml2.friendlyName";
 
     /** The format of the attribute name. */
-    @Nonnull @NotEmpty static final String PROP_NAME_FORMAT = "nameFormat";
+    @Nonnull @NotEmpty static final String PROP_NAME_FORMAT = "saml2.nameFormat";
 
 }
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLAttributeTranscoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLAttributeTranscoder.java
deleted file mode 100644
index 80a4404..0000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLAttributeTranscoder.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.attribute.transcoding;
-
-import javax.annotation.Nonnull;
-
-import net.shibboleth.idp.attribute.transcoding.AttributeTranscoder;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-
-import org.opensaml.saml.common.SAMLObject;
-
-/**
- * Marker interface for transcoders that support SAML objects.
- * 
- * @param <AttributeType> type of object produced
- */
-public interface SAMLAttributeTranscoder<AttributeType extends SAMLObject> extends AttributeTranscoder<AttributeType> {
-
-    /** The attribute name. */
-    @Nonnull @NotEmpty static final String PROP_NAME = "name";
-
-    /** Whether to encode the xsi:type. */
-    @Nonnull @NotEmpty static final String PROP_ENCODE_TYPE = "encodeType";
-
-}
\ No newline at end of file
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoder.java
index 883f9ba..2e10d5e 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoder.java
@@ -45,13 +45,13 @@ import org.slf4j.LoggerFactory;
 public class SAML1ScopedStringAttributeTranscoder extends AbstractSAML1AttributeTranscoder<ScopedStringAttributeValue> {
 
     /** One of "inline" or "attribute", controlling the style of XML encoding. */
-    @Nonnull @NotEmpty public static final String PROP_SCOPE_TYPE = "scopeType";
+    @Nonnull @NotEmpty public static final String PROP_SCOPE_TYPE = "saml1.scopeType";
 
     /** Name of XML attribute when scopeType property is "attribute". */
-    @Nonnull @NotEmpty public static final String PROP_SCOPE_ATTR_NAME = "scopeAttributeName";
+    @Nonnull @NotEmpty public static final String PROP_SCOPE_ATTR_NAME = "saml1.scopeAttributeName";
 
     /** Scope delimiter when scopeType property is "inline". */
-    @Nonnull @NotEmpty public static final String PROP_SCOPE_DELIMITER = "scopeDelimiter";
+    @Nonnull @NotEmpty public static final String PROP_SCOPE_DELIMITER = "saml1.scopeDelimiter";
 
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(SAML1ScopedStringAttributeTranscoder.class);
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1XMLObjectAttributeTranscoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1XMLObjectAttributeTranscoder.java
index 26f8664..86ba78a 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1XMLObjectAttributeTranscoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1XMLObjectAttributeTranscoder.java
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
 public class SAML1XMLObjectAttributeTranscoder extends AbstractSAML1AttributeTranscoder<XMLObjectAttributeValue> {
 
     /** Property indicating whether to decode the AttributeValue element itself, or its child element. */
-    @Nonnull @NotEmpty public static final String PROP_INCLUDE_ATTR_VALUE = "includeAttributeValue";
+    @Nonnull @NotEmpty public static final String PROP_INCLUDE_ATTR_VALUE = "saml1.includeAttributeValue";
     
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(SAML1XMLObjectAttributeTranscoder.class);
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoder.java
index 6169c33..2e7739f 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoder.java
@@ -45,13 +45,13 @@ import org.slf4j.LoggerFactory;
 public class SAML2ScopedStringAttributeTranscoder extends AbstractSAML2AttributeTranscoder<ScopedStringAttributeValue> {
 
     /** One of "inline" or "attribute", controlling the style of XML encoding. */
-    @Nonnull @NotEmpty public static final String PROP_SCOPE_TYPE = "scopeType";
+    @Nonnull @NotEmpty public static final String PROP_SCOPE_TYPE = "saml2.scopeType";
 
     /** Name of XML attribute when scopeType property is "attribute". */
-    @Nonnull @NotEmpty public static final String PROP_SCOPE_ATTR_NAME = "scopeAttributeName";
+    @Nonnull @NotEmpty public static final String PROP_SCOPE_ATTR_NAME = "saml2.scopeAttributeName";
 
     /** Scope delimiter when scopeType property is "inline". */
-    @Nonnull @NotEmpty public static final String PROP_SCOPE_DELIMITER = "scopeDelimiter";
+    @Nonnull @NotEmpty public static final String PROP_SCOPE_DELIMITER = "saml2.scopeDelimiter";
 
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(SAML2ScopedStringAttributeTranscoder.class);
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoder.java
index 5416587..300ad1a 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoder.java
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
 public class SAML2XMLObjectAttributeTranscoder extends AbstractSAML2AttributeTranscoder<XMLObjectAttributeValue> {
 
     /** Property indicating whether to decode the AttributeValue element itself, or its child element. */
-    @Nonnull @NotEmpty public static final String PROP_INCLUDE_ATTR_VALUE = "includeAttributeValue";
+    @Nonnull @NotEmpty public static final String PROP_INCLUDE_ATTR_VALUE = "saml2.includeAttributeValue";
     
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(SAML2XMLObjectAttributeTranscoder.class);
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 05b33e6..1557f61 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
@@ -38,7 +38,6 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.utilities.java.support.codec.Base64Support;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
@@ -96,8 +95,8 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Map<String,Object> ruleset1 = new HashMap<>();
         ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML1AttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAML1AttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(SAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
         
         registry.setTranscoderRegistry(Collections.singletonList(new TranscodingRule(ruleset1)));
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 6fafe80..e5dc7fb 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
@@ -37,7 +37,6 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.xmlobject.ScopedValue;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
@@ -103,8 +102,8 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Map<String,Object> ruleset1 = new HashMap<>();
         ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML1AttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAML1AttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(SAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
         ruleset1.put(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER, DELIMITER);
         ruleset1.put(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE, "attribute");
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 6944576..e69b763 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
@@ -37,7 +37,6 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import org.opensaml.core.OpenSAMLInitBaseTestCase;
@@ -93,8 +92,8 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Map<String,Object> ruleset1 = new HashMap<>();
         ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML1AttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAML1AttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(SAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
         
         registry.setTranscoderRegistry(Collections.singletonList(new TranscodingRule(ruleset1)));
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 1dfca7b..67026d8 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
@@ -53,7 +53,6 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.utilities.java.support.codec.Base64Support;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
@@ -97,8 +96,8 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Map<String,Object> ruleset1 = new HashMap<>();
         ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
         ruleset1.put(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         
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 9d95629..6743451 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
@@ -37,7 +37,6 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import org.opensaml.core.OpenSAMLInitBaseTestCase;
@@ -97,8 +96,8 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Map<String,Object> ruleset1 = new HashMap<>();
         ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
         ruleset1.put(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         ruleset1.put(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER, DELIMITER);
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 2b25b02..15c6275 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
@@ -37,7 +37,6 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import org.opensaml.core.OpenSAMLInitBaseTestCase;
@@ -94,8 +93,8 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Map<String,Object> ruleset1 = new HashMap<>();
         ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
         ruleset1.put(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         
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 fadc774..6d862bd 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
@@ -39,7 +39,6 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAMLEncoderSupport;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
@@ -101,8 +100,8 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Map<String,Object> ruleset1 = new HashMap<>();
         ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
         ruleset1.put(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         
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 11697ee..1734348 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
@@ -39,7 +39,6 @@ import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1StringAttributeTranscoder;
 import net.shibboleth.idp.saml.saml1.profile.SAML1ActionTestingSupport;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
@@ -107,19 +106,19 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         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(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule1_1.put(SAML1AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule1_1.put(SAML1AttributeTranscoder.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(SAMLAttributeTranscoder.PROP_NAME, MY_ALTNAME_1);
+        rule1_2.put(SAML1AttributeTranscoder.PROP_NAME, MY_ALTNAME_1);
         rule1_2.put(SAML1AttributeTranscoder.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(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_2);
+        rule2_1.put(SAML1AttributeTranscoder.PROP_NAME, MY_NAME_2);
         rule2_1.put(SAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
 
         registry.setTranscoderRegistry(Arrays.asList(
@@ -186,7 +185,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         final Map<String,Object> rule = new HashMap<>();
         rule.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        rule.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule.put(SAML1AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule.put(SAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
         
         localregistry.setTranscoderRegistry(Collections.singletonList(new TranscodingRule(rule)));
@@ -222,7 +221,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         final Map<String,Object> rule = new HashMap<>();
         rule.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        rule.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule.put(SAML1AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule.put(SAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
         
         localregistry.setTranscoderRegistry(Collections.singletonList(new TranscodingRule(rule)));
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 c512c5b..f0e62c5 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
@@ -39,7 +39,6 @@ import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2StringAttributeTranscoder;
 import net.shibboleth.idp.saml.saml2.profile.SAML2ActionTestingSupport;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
@@ -106,19 +105,19 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         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(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule1_1.put(SAML2AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule1_1.put(SAML2AttributeTranscoder.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(SAMLAttributeTranscoder.PROP_NAME, MY_ALTNAME_1);
+        rule1_2.put(SAML2AttributeTranscoder.PROP_NAME, MY_ALTNAME_1);
         rule1_2.put(SAML2AttributeTranscoder.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(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_2);
+        rule2_1.put(SAML2AttributeTranscoder.PROP_NAME, MY_NAME_2);
         rule2_1.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
 
         registry.setTranscoderRegistry(Arrays.asList(
@@ -184,7 +183,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         final Map<String,Object> rule = new HashMap<>();
         rule.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         rule.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
-        rule.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule.put(SAML2AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
         
         localregistry.setTranscoderRegistry(Collections.singletonList(new TranscodingRule(rule)));
@@ -220,7 +219,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         final Map<String,Object> rule = new HashMap<>();
         rule.put(AttributeTranscoderRegistry.PROP_ID, MY_NAME_1);
         rule.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
-        rule.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule.put(SAML2AttributeTranscoder.PROP_NAME, MY_NAME_1);
         rule.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
         
         localregistry.setTranscoderRegistry(Collections.singletonList(new TranscodingRule(rule)));
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/rules/subjectid.txt b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/rules/subjectid.txt
index 2ec37fc..17d1ceb 100644
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/rules/subjectid.txt
+++ b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/rules/subjectid.txt
@@ -1,3 +1,3 @@
 id = subject-id-req
-transcoderBean = SAML2StringTranscoder
-name = urn:oasis:names:tc:SAML:profiles:subject-id:req
+transcoder = SAML2StringTranscoder
+saml2.name = urn:oasis:names:tc:SAML:profiles:subject-id:req
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/rules/zorkmids.txt b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/rules/zorkmids.txt
index fec7321..1b25004 100644
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/rules/zorkmids.txt
+++ b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/rules/zorkmids.txt
@@ -1,4 +1,4 @@
 id = zorkmids
-transcoderBean = SAML2StringTranscoder
-name = zorkmids
-nameFormat = urn:oasis:names:tc:SAML:2.0:attrname-format:basic
+transcoder = SAML2StringTranscoder
+saml2.name = zorkmids
+saml2.nameFormat = urn:oasis:names:tc:SAML:2.0:attrname-format:basic
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml1Mapper.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml1Mapper.xml
index 6a2351d..fc1f0de 100644
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml1Mapper.xml
+++ b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml1Mapper.xml
@@ -26,8 +26,8 @@
 		        <map>
 		            <entry key="id" value="eduPersonAssurance" />
 		            <entry key="transcoder" value-ref="SAML1StringTranscoder" />
-		            <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" />
-		            <entry key="namespace" value="basic" />
+		            <entry key="saml1.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" />
+		            <entry key="saml1.namespace" value="basic" />
 		        </map>
             </constructor-arg>
         </bean>
@@ -37,8 +37,8 @@
 		        <map>
 		            <entry key="id" value="eduPersonAssurance" />
 		            <entry key="transcoder" value-ref="SAML1StringTranscoder" />
-		            <entry key="name" value="http://example.org/name/for/Attribute" />
-		            <entry key="namespace" value="basic" />
+		            <entry key="saml1.name" value="http://example.org/name/for/Attribute" />
+		            <entry key="saml1.namespace" value="basic" />
 		        </map>
             </constructor-arg>
         </bean>
@@ -48,8 +48,8 @@
 		        <map>
 		            <entry key="id" value="otherPersonAssurance" />
 		            <entry key="transcoder" value-ref="SAML1StringTranscoder" />
-		            <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" />
-		            <entry key="namespace" value="basic" />
+		            <entry key="saml1.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" />
+		            <entry key="saml1.namespace" value="basic" />
 		        </map>
             </constructor-arg>
         </bean>
@@ -59,8 +59,8 @@
 		        <map>
 		            <entry key="id" value="eduPersonScopedAffiliation" />
 		            <entry key="transcoder" value-ref="SAML1ScopedStringTranscoder" />
-		            <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" />
-		            <entry key="namespace" value="basic" />
+		            <entry key="saml1.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" />
+		            <entry key="saml1.namespace" value="basic" />
 		        </map>
             </constructor-arg>
         </bean>
@@ -70,8 +70,8 @@
 		        <map>
 		            <entry key="id" value="eduPersonTargetedID" />
 		            <entry key="transcoder" value-ref="SAML1ScopedStringTranscoder" />
-		            <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" />
-		            <entry key="namespace" value="basic" />
+		            <entry key="saml1.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" />
+		            <entry key="saml1.namespace" value="basic" />
 		        </map>
             </constructor-arg>
         </bean>
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml2Mapper.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml2Mapper.xml
index d7543da..6d1ee6f 100644
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml2Mapper.xml
+++ b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml2Mapper.xml
@@ -28,7 +28,7 @@
 		        <map>
 		            <entry key="id" value="eduPersonAssurance" />
 		            <entry key="transcoder" value-ref="SAML2StringTranscoder" />
-		            <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" />
+		            <entry key="saml2.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" />
 		        </map>
             </constructor-arg>
         </bean>
@@ -38,8 +38,8 @@
 		        <map>
 		            <entry key="id" value="eduPersonAssurance" />
 		            <entry key="transcoder" value-ref="SAML2StringTranscoder" />
-		            <entry key="name" value="http://example.org/name/for/Attribute" />
-		            <entry key="nameFormat" value="http://example.org/Format" />
+		            <entry key="saml2.name" value="http://example.org/name/for/Attribute" />
+		            <entry key="saml2.nameFormat" value="http://example.org/Format" />
 		        </map>
             </constructor-arg>
         </bean>
@@ -49,7 +49,7 @@
 		        <map>
 		            <entry key="id" value="otherPersonAssurance" />
 		            <entry key="transcoder" value-ref="SAML2StringTranscoder" />
-		            <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" />
+		            <entry key="saml2.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" />
 		        </map>
             </constructor-arg>
         </bean>
@@ -59,8 +59,8 @@
 		        <map>
 		            <entry key="id" value="eduPersonScopedAffiliation" />
 		            <entry key="transcoder" value-ref="SAML2ScopedStringTranscoder" />
-		            <entry key="scopeDelimiter" value="#" />
-		            <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" />
+		            <entry key="saml2.scopeDelimiter" value="#" />
+		            <entry key="saml2.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" />
 		        </map>
             </constructor-arg>
         </bean>
@@ -70,7 +70,7 @@
 		        <map>
 		            <entry key="id" value="eduPersonTargetedID" />
 		            <entry key="transcoder" value-ref="SAML2XMLObjectTranscoder" />
-		            <entry key="name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" />
+		            <entry key="saml2.name" value="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" />
 		        </map>
             </constructor-arg>
         </bean>

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


More information about the commits mailing list