[java-identity-provider] branch feature/IDP-1434 updated: Refactor transcoders with marker interfaces to hold property constants.

Scott Cantor cantor.2 at osu.edu
Mon May 6 19:21:08 EDT 2019


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

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

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

The following commit(s) were added to refs/heads/feature/IDP-1434 by this push:
       new  9c30c83   Refactor transcoders with marker interfaces to hold property constants.
9c30c83 is described below

commit 9c30c83081ac79033d64787ad9c6eb351b8a7ea0
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon May 6 19:21:04 2019 -0400

    Refactor transcoders with marker interfaces to hold property constants.
---
 .../enc/BaseSAML1AttributeEncoderParser.java       |  9 ++---
 .../enc/BaseSAML2AttributeEncoderParser.java       | 11 +++---
 .../spring/BaseEncoderDefinitionParserTest.java    |  2 +-
 .../enc/SAML1Base64AttributeEncoderParserTest.java | 11 +++---
 ...AML1ScopedStringAttributeEncoderParserTest.java | 11 +++---
 .../enc/SAML1StringAttributeEncoderParserTest.java | 11 +++---
 .../SAML1XMLObjectAttributeEncoderParserTest.java  | 11 +++---
 .../enc/SAML2Base64AttributeEncoderParserTest.java | 15 ++++----
 ...AML2ScopedStringAttributeEncoderParserTest.java | 15 ++++----
 .../enc/SAML2StringAttributeEncoderParserTest.java | 15 ++++----
 .../SAML2XMLObjectAttributeEncoderParserTest.java  | 15 ++++----
 .../AbstractSAML1AttributeTranscoder.java          |  9 ++---
 .../AbstractSAML2AttributeTranscoder.java          |  9 +----
 .../AbstractSAMLAttributeTranscoder.java           | 10 ++----
 .../transcoding/SAML1AttributeTranscoder.java      | 39 ++++++++++++++++++++
 .../transcoding/SAML2AttributeTranscoder.java      | 42 ++++++++++++++++++++++
 .../transcoding/SAMLAttributeTranscoder.java       | 40 +++++++++++++++++++++
 .../impl/BaseAddAttributeStatementToAssertion.java |  5 +--
 .../impl/SAML1ByteAttributeTranscoderTest.java     |  9 ++---
 .../SAML1ScopedStringAttributeTranscoderTest.java  |  9 ++---
 .../impl/SAML1StringAttributeTranscoderTest.java   |  9 ++---
 .../impl/SAML2ByteAttributeTranscoderTest.java     | 11 +++---
 .../SAML2ScopedStringAttributeTranscoderTest.java  | 11 +++---
 .../impl/SAML2StringAttributeTranscoderTest.java   | 11 +++---
 .../SAML2XMLObjectAttributeTranscoderTest.java     | 11 +++---
 .../impl/AddAttributeStatementToAssertionTest.java | 22 ++++++------
 .../impl/AddAttributeStatementToAssertionTest.java | 22 ++++++------
 27 files changed, 261 insertions(+), 134 deletions(-)

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 0467f23..132f2a6 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
@@ -21,7 +21,8 @@ import java.util.Map;
 
 import javax.annotation.Nonnull;
 
-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.primitive.StringSupport;
 
 import org.springframework.beans.factory.BeanDefinitionStoreException;
@@ -40,14 +41,14 @@ public abstract class BaseSAML1AttributeEncoderParser extends BaseAttributeEncod
             @Nonnull final Map<String,Object> rule) {
         
         if (config.hasAttributeNS(null, "name")) {
-            rule.put(AbstractSAML1AttributeTranscoder.PROP_NAME,
+            rule.put(SAMLAttributeTranscoder.PROP_NAME,
                     StringSupport.trimOrNull(config.getAttributeNS(null, "name")));
         } else {
             throw new BeanDefinitionStoreException("Missing 'name' attribute, cannot create transcoder rule");
         }
 
         if (config.hasAttributeNS(null, "namespace")) {
-            rule.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE,
+            rule.put(SAML1AttributeTranscoder.PROP_NAMESPACE,
                     StringSupport.trimOrNull(config.getAttributeNS(null, "namespace")));
         }
 
@@ -56,7 +57,7 @@ public abstract class BaseSAML1AttributeEncoderParser extends BaseAttributeEncod
             final BeanDefinitionBuilder booleanBuilder =
                 BeanDefinitionBuilder.rootBeanDefinition(Boolean.class, "valueOf");
             booleanBuilder.addConstructorArgValue(value);
-            rule.put(AbstractSAML1AttributeTranscoder.PROP_ENCODE_TYPE,booleanBuilder.getBeanDefinition());
+            rule.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE,booleanBuilder.getBeanDefinition());
         }
     }
     
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 1d987df..ced8e4b 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
@@ -21,7 +21,8 @@ import java.util.Map;
 
 import javax.annotation.Nonnull;
 
-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.primitive.StringSupport;
 
 import org.springframework.beans.factory.BeanDefinitionStoreException;
@@ -40,19 +41,19 @@ public abstract class BaseSAML2AttributeEncoderParser extends BaseAttributeEncod
             @Nonnull final Map<String,Object> rule) {
 
         if (config.hasAttributeNS(null, "name")) {
-            rule.put(AbstractSAML2AttributeTranscoder.PROP_NAME,
+            rule.put(SAMLAttributeTranscoder.PROP_NAME,
                     StringSupport.trimOrNull(config.getAttributeNS(null, "name")));
         } else {
             throw new BeanDefinitionStoreException("Missing 'name' attribute, cannot create transcoder rule");
         }
 
         if (config.hasAttributeNS(null, "nameFormat")) {
-            rule.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT,
+            rule.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT,
                     StringSupport.trimOrNull(config.getAttributeNS(null, "nameFormat")));
         }
         
         if (config.hasAttributeNS(null, "friendlyName")) {
-            rule.put(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME,
+            rule.put(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME,
                     StringSupport.trimOrNull(config.getAttributeNS(null, "friendlyName")));
         }
         
@@ -62,7 +63,7 @@ public abstract class BaseSAML2AttributeEncoderParser extends BaseAttributeEncod
                 BeanDefinitionBuilder.rootBeanDefinition(Boolean.class, "valueOf");
             booleanBuilder.addConstructorArgValue(value);
                 
-            rule.put(AbstractSAML2AttributeTranscoder.PROP_ENCODE_TYPE,booleanBuilder.getBeanDefinition());
+            rule.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE,booleanBuilder.getBeanDefinition());
         }
     }
 }
\ 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 43f2a9f..44e0c05 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,7 @@
 
 package net.shibboleth.idp.attribute.resolver.spring;
 
-import static net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE;
+import static net.shibboleth.idp.saml.attribute.transcoding.SAMLAttributeTranscoder.PROP_ENCODE_TYPE;
 import static org.testng.Assert.assertTrue;
 
 import java.util.Collection;
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 141ca27..5df39f6 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,8 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1Base64AttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-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.SAML1ByteAttributeTranscoder;
 
 /**
@@ -49,8 +50,8 @@ public class SAML1Base64AttributeEncoderParserTest extends BaseEncoderDefinition
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1ByteAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "SAML1_BASE64_ATTRIBUTE_NAME");
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_BASE64_ATTRIBUTE_NAME_SPACE");
+        assertEquals(rule.get(SAMLAttributeTranscoder.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);
     }
@@ -64,8 +65,8 @@ public class SAML1Base64AttributeEncoderParserTest extends BaseEncoderDefinition
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1ByteAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "Base64_ATTRIBUTE");
-        assertNull(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE));
+        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);
     }
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 7759822..06de6e4 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,8 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1ScopedStringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-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.SAML1ScopedStringAttributeTranscoder;
 
 /**
@@ -49,8 +50,8 @@ public class SAML1ScopedStringAttributeEncoderParserTest extends BaseEncoderDefi
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1ScopedStringAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "SAML1_SCOPED_ATTRIBUTE_NAME");
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_SCOPED_ATTRIBUTE_NAME_FORMAT");
+        assertEquals(rule.get(SAMLAttributeTranscoder.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), "#@#");
@@ -67,8 +68,8 @@ public class SAML1ScopedStringAttributeEncoderParserTest extends BaseEncoderDefi
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1ScopedStringAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "saml1_scoped_name");
-        assertNull(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE));
+        assertEquals(rule.get(SAMLAttributeTranscoder.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));
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 28aad0b..86cc6ca 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
@@ -32,7 +32,8 @@ 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.AbstractSAML1AttributeTranscoder;
+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;
 
 /**
@@ -49,8 +50,8 @@ public class SAML1StringAttributeEncoderParserTest extends BaseEncoderDefinition
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1StringAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "SAML1_STRING_ATTRIBUTE_NAME");
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_STRING_ATTRIBUTE_NAME_SPACE");
+        assertEquals(rule.get(SAMLAttributeTranscoder.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, encodeType!=null ? encodeType : true);
     }
@@ -64,8 +65,8 @@ public class SAML1StringAttributeEncoderParserTest extends BaseEncoderDefinition
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1StringAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "ATTRIBUTE");
-        assertNull(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE));
+        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "ATTRIBUTE");
+        assertNull(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
         checkEncodeType(rule, true);
     }
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 762af65..89b54ec 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
@@ -32,7 +32,8 @@ 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.AbstractSAML1AttributeTranscoder;
+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;
 
 /**
@@ -49,8 +50,8 @@ public class SAML1XMLObjectAttributeEncoderParserTest extends BaseEncoderDefinit
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1XMLObjectAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "SAML1_XMLObject_ATTRIBUTE_NAME");
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_XMLObject_ATTRIBUTE_NAME_SPACE");
+        assertEquals(rule.get(SAMLAttributeTranscoder.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);
 }
@@ -63,8 +64,8 @@ public class SAML1XMLObjectAttributeEncoderParserTest extends BaseEncoderDefinit
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1XMLObjectAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "XMLObject_ATTRIBUTE");
-        assertNull(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE));
+        assertEquals(rule.get(SAMLAttributeTranscoder.PROP_NAME), "XMLObject_ATTRIBUTE");
+        assertNull(rule.get(SAML1AttributeTranscoder.PROP_NAMESPACE));
         assertFalse(((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
         checkEncodeType(rule, true);
     }
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 28df56f..300bdfc 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,8 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2Base64AttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-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.SAML2ByteAttributeTranscoder;
 
 /**
@@ -49,9 +50,9 @@ public class SAML2Base64AttributeEncoderParserTest extends BaseEncoderDefinition
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2ByteAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "Saml2Base64_ATTRIBUTE_NAME");
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT), "Saml2Base64_ATTRIBUTE_NAME_FORMAT");
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "Saml2Base64_ATTRIBUTE_FRIENDLY_NAME");
+        assertEquals(rule.get(SAMLAttributeTranscoder.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, encodeType!=null ? encodeType : true);
     }
@@ -64,9 +65,9 @@ public class SAML2Base64AttributeEncoderParserTest extends BaseEncoderDefinition
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2ByteAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "Base64Name");
-        assertNull(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT));
-        assertNull(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME));
+        assertEquals(rule.get(SAMLAttributeTranscoder.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);
     }
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 321331f..9a89f00 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,8 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2ScopedStringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-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.SAML2ScopedStringAttributeTranscoder;
 
 /**
@@ -49,9 +50,9 @@ public class SAML2ScopedStringAttributeEncoderParserTest extends BaseEncoderDefi
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2ScopedStringAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "ATTRIBUTE_NAME");
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT), "ATTRIBUTE_NAME_FORMAT");
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "ATTRIBUTE_FRIENDLY_NAME");
+        assertEquals(rule.get(SAMLAttributeTranscoder.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), "###");
@@ -67,9 +68,9 @@ public class SAML2ScopedStringAttributeEncoderParserTest extends BaseEncoderDefi
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2ScopedStringAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "name");
-        assertNull(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT));
-        assertNull(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME));
+        assertEquals(rule.get(SAMLAttributeTranscoder.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));
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 8d2f2c0..f2aa97e 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,8 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2StringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-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;
 
 /**
@@ -49,9 +50,9 @@ public class SAML2StringAttributeEncoderParserTest extends BaseEncoderDefinition
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2StringAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "Saml2String_ATTRIBUTE_NAME");
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT), "Saml2String_ATTRIBUTE_NAME_FORMAT");
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "Saml2String_ATTRIBUTE_FRIENDLY_NAME");
+        assertEquals(rule.get(SAMLAttributeTranscoder.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);
     }
@@ -64,9 +65,9 @@ public class SAML2StringAttributeEncoderParserTest extends BaseEncoderDefinition
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2StringAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "Saml2StringName");
-        assertNull(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT));
-        assertNull(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME));
+        assertEquals(rule.get(SAMLAttributeTranscoder.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);
     }
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 94975df..545c861 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,8 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2XMLObjectAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-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.SAML2XMLObjectAttributeTranscoder;
 
 /**
@@ -49,9 +50,9 @@ public class SAML2XMLObjectAttributeEncoderParserTest extends BaseEncoderDefinit
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2XMLObjectAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "Saml2XmlObject_ATTRIBUTE_NAME");
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT), "Saml2XmlObject_ATTRIBUTE_NAME_FORMAT");
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "Saml2XmlObject_ATTRIBUTE_FRIENDLY_NAME");
+        assertEquals(rule.get(SAMLAttributeTranscoder.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);
     }
@@ -64,9 +65,9 @@ public class SAML2XMLObjectAttributeEncoderParserTest extends BaseEncoderDefinit
         final Map<String,Object> rule = rules.iterator().next();
 
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML2XMLObjectAttributeTranscoder);
-        assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "XmlObjectName");
-        assertNull(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT));
-        assertNull(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME));
+        assertEquals(rule.get(SAMLAttributeTranscoder.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);
     }
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java
index 9038330..8c3ab08 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java
@@ -33,7 +33,6 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.xml.SAMLConstants;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
@@ -51,11 +50,9 @@ import com.google.common.base.Strings;
  * 
  * @param <EncodedType> the type of data that can be handled by the transcoder
  */
-public abstract class AbstractSAML1AttributeTranscoder<EncodedType extends IdPAttributeValue> extends
-        AbstractSAMLAttributeTranscoder<AttributeDesignator,EncodedType> {
-
-    /** The namespace of the attribute name. */
-    @Nonnull @NotEmpty public static final String PROP_NAMESPACE = "namespace";
+public abstract class AbstractSAML1AttributeTranscoder<EncodedType extends IdPAttributeValue>
+        extends AbstractSAMLAttributeTranscoder<AttributeDesignator,EncodedType>
+        implements SAML1AttributeTranscoder<EncodedType> {
 
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractSAML1AttributeTranscoder.class);
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
index 49482f4..e999039 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.IdPRequestedAttribute;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
@@ -49,13 +48,7 @@ import com.google.common.base.Strings;
  * @param <EncodedType> the type of data that can be handled by the transcoder
  */
 public abstract class AbstractSAML2AttributeTranscoder<EncodedType extends IdPAttributeValue> extends
-        AbstractSAMLAttributeTranscoder<Attribute,EncodedType> {
-
-    /** A friendly, human readable, name for the attribute. */
-    @Nonnull @NotEmpty public static final String PROP_FRIENDLY_NAME = "friendlyName";
-
-    /** The format of the attribute name. */
-    @Nonnull @NotEmpty public static final String PROP_NAME_FORMAT = "nameFormat";
+        AbstractSAMLAttributeTranscoder<Attribute,EncodedType> implements SAML2AttributeTranscoder<EncodedType> {
     
     /** Builder used to construct {@link Attribute} objects. */
     @Nonnull private final SAMLObjectBuilder<Attribute> attributeBuilder;
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 33f15c6..19fec60 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
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.transcoding.AbstractAttributeTranscoder;
 import net.shibboleth.idp.saml.xmlobject.ScopedValue;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
 
 import org.opensaml.core.xml.XMLObject;
@@ -55,13 +54,8 @@ 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> {
-
-    /** The attribute name. */
-    @Nonnull @NotEmpty public static final String PROP_NAME = "name";
-
-    /** Whether to encode the xsi:type. */
-    @Nonnull @NotEmpty public static final String PROP_ENCODE_TYPE = "encodeType";
+        EncodedType extends IdPAttributeValue> extends AbstractAttributeTranscoder<AttributeType>
+        implements SAMLAttributeTranscoder<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
new file mode 100644
index 0000000..0749595
--- /dev/null
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML1AttributeTranscoder.java
@@ -0,0 +1,39 @@
+/*
+ * 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.IdPAttributeValue;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
+import org.opensaml.saml.saml1.core.Attribute;
+import org.opensaml.saml.saml1.core.AttributeDesignator;
+
+/**
+ * Marker interface for transcoders that operate on a SAML 1 {@link Attribute} or {@link AttributeDesignator}.
+ * 
+ * @param <EncodedType> the type of data that can be handled by the transcoder
+ */
+public interface SAML1AttributeTranscoder<EncodedType extends IdPAttributeValue> extends
+        SAMLAttributeTranscoder<AttributeDesignator> {
+
+    /** The namespace of the attribute name. */
+    @Nonnull @NotEmpty static final String PROP_NAMESPACE = "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
new file mode 100644
index 0000000..c36df8d
--- /dev/null
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAML2AttributeTranscoder.java
@@ -0,0 +1,42 @@
+/*
+ * 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.IdPAttributeValue;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
+import org.opensaml.saml.saml2.core.Attribute;
+import org.opensaml.saml.saml2.metadata.RequestedAttribute;
+
+/**
+ * Marker interface for transcoders that operate on a SAML 2 {@link Attribute} or {@link RequestedAttribute}.
+ * 
+ * @param <EncodedType> the type of data that can be handled by the transcoder
+ */
+public interface SAML2AttributeTranscoder<EncodedType extends IdPAttributeValue> extends
+        SAMLAttributeTranscoder<Attribute> {
+
+    /** A friendly, human readable, name for the attribute. */
+    @Nonnull @NotEmpty static final String PROP_FRIENDLY_NAME = "friendlyName";
+
+    /** The format of the attribute name. */
+    @Nonnull @NotEmpty static final String PROP_NAME_FORMAT = "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
new file mode 100644
index 0000000..80a4404
--- /dev/null
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLAttributeTranscoder.java
@@ -0,0 +1,40 @@
+/*
+ * 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/profile/impl/BaseAddAttributeStatementToAssertion.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/BaseAddAttributeStatementToAssertion.java
index 7c386e9..e281a8a 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/BaseAddAttributeStatementToAssertion.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/BaseAddAttributeStatementToAssertion.java
@@ -38,6 +38,7 @@ import net.shibboleth.idp.profile.context.navigate.ResponderIdLookupFunction;
 import org.opensaml.profile.action.ActionSupport;
 import org.opensaml.profile.action.EventIds;
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.saml.common.SAMLObject;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.Live;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
@@ -66,7 +67,7 @@ import org.slf4j.LoggerFactory;
  * @event {@link EventIds#INVALID_MSG_CTX}
  * @event {@link EventIds#INVALID_PROFILE_CTX}
  */
-public abstract class BaseAddAttributeStatementToAssertion<T> extends AbstractProfileAction {
+public abstract class BaseAddAttributeStatementToAssertion<T extends SAMLObject> extends AbstractProfileAction {
 
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(BaseAddAttributeStatementToAssertion.class);
@@ -326,7 +327,7 @@ public abstract class BaseAddAttributeStatementToAssertion<T> extends AbstractPr
         
         for (final Properties rules : transcodingRules) {
             try {
-                final AttributeTranscoder<T> transcoder = TranscoderSupport.getTranscoder(rules);
+                final AttributeTranscoder<T> transcoder = TranscoderSupport.<T>getTranscoder(rules);
                 final T encodedAttribute = transcoder.encode(profileRequestContext, attribute, to, rules);
                 if (encodedAttribute != null) {
                     results.add(encodedAttribute);
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 2fcc55f..7764a6c 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
@@ -37,7 +37,8 @@ import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder;
+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;
 
@@ -95,9 +96,9 @@ 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(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
-        ruleset1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
         
         registry.setTranscoderRegistry(Collections.singletonList(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 9fd54a3..2f1536e 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
@@ -36,7 +36,8 @@ import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder;
+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;
 
@@ -102,9 +103,9 @@ 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(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
-        ruleset1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAMLAttributeTranscoder.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 2ff0260..88d2fbe 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
@@ -36,7 +36,8 @@ import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder;
+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;
@@ -92,9 +93,9 @@ 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(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
-        ruleset1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML1AttributeTranscoder.PROP_NAMESPACE, ATTR_NAMESPACE);
         
         registry.setTranscoderRegistry(Collections.singletonList(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 3dbd713..962d91c 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
@@ -37,7 +37,8 @@ import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder;
+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;
 
@@ -96,10 +97,10 @@ 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(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
-        ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
-        ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         
         registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
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 85fe737..8e7f786 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
@@ -36,7 +36,8 @@ import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder;
+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;
@@ -96,10 +97,10 @@ 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(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
-        ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
-        ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAMLAttributeTranscoder.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);
         ruleset1.put(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE, "inline");
         
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 123fb73..34244fe 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
@@ -36,7 +36,8 @@ import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder;
+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;
@@ -93,10 +94,10 @@ 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(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
-        ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
-        ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         
         registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
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 2cc5d81..67742bb 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
@@ -38,7 +38,8 @@ import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
-import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder;
+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;
 
@@ -100,10 +101,10 @@ 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(AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
-        ruleset1.put(AbstractSAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
-        ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
-        ruleset1.put(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_ENCODE_TYPE, true);
+        ruleset1.put(SAMLAttributeTranscoder.PROP_NAME, ATTR_NAME);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, ATTR_NAMEFORMAT);
+        ruleset1.put(SAML2AttributeTranscoder.PROP_FRIENDLY_NAME, ATTR_FRIENDLYNAME);
         
         registry.setTranscoderRegistry(Collections.singletonList(ruleset1));
         
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 ea36df9..5ea95d2 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
@@ -38,6 +38,8 @@ import net.shibboleth.idp.profile.RequestContextBuilder;
 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;
@@ -106,20 +108,20 @@ 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(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_NAME_1);
-        rule1_1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
+        rule1_1.put(SAMLAttributeTranscoder.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(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_ALTNAME_1);
-        rule1_2.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
+        rule1_2.put(SAMLAttributeTranscoder.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(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_NAME_2);
-        rule2_1.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
+        rule2_1.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_2);
+        rule2_1.put(SAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
 
         registry.setTranscoderRegistry(Arrays.asList(rule1_1, rule1_2, rule2_1));
         
@@ -182,8 +184,8 @@ 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(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_NAME_1);
-        rule.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
+        rule.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule.put(SAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
         
         localregistry.setTranscoderRegistry(Collections.singletonList(rule));
         localregistry.initialize();
@@ -218,8 +220,8 @@ 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(AbstractSAML1AttributeTranscoder.PROP_NAME, MY_NAME_1);
-        rule.put(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
+        rule.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule.put(SAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
         
         localregistry.setTranscoderRegistry(Collections.singletonList(rule));
         localregistry.initialize();
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 51b2bb3..7a2ca86 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
@@ -38,6 +38,8 @@ import net.shibboleth.idp.profile.RequestContextBuilder;
 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;
@@ -105,20 +107,20 @@ 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(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_NAME_1);
-        rule1_1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
+        rule1_1.put(SAMLAttributeTranscoder.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(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_ALTNAME_1);
-        rule1_2.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
+        rule1_2.put(SAMLAttributeTranscoder.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(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_NAME_2);
-        rule2_1.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
+        rule2_1.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_2);
+        rule2_1.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
 
         registry.setTranscoderRegistry(Arrays.asList(rule1_1, rule1_2, rule2_1));
         registry.initialize();
@@ -180,8 +182,8 @@ 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(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_NAME_1);
-        rule.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
+        rule.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
         
         localregistry.setTranscoderRegistry(Collections.singletonList(rule));
         localregistry.initialize();
@@ -216,8 +218,8 @@ 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(AbstractSAML2AttributeTranscoder.PROP_NAME, MY_NAME_1);
-        rule.put(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
+        rule.put(SAMLAttributeTranscoder.PROP_NAME, MY_NAME_1);
+        rule.put(SAML2AttributeTranscoder.PROP_NAME_FORMAT, MY_NAMESPACE);
         
         localregistry.setTranscoderRegistry(Collections.singletonList(rule));
         localregistry.initialize();

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


More information about the commits mailing list