[java-identity-provider] branch master updated: IDP-1177 - Centralize deprecation warnings through dedicated function

Scott Cantor cantor.2 at osu.edu
Sat Jun 3 16:20:32 EDT 2017


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=00a2cc517e53e174a83070f4adefce6ee367980b

The following commit(s) were added to refs/heads/master by this push:
       new  00a2cc5   IDP-1177 - Centralize deprecation warnings through dedicated function
00a2cc5 is described below

commit 00a2cc517e53e174a83070f4adefce6ee367980b
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Sat Jun 3 16:20:29 2017 -0400

    IDP-1177 - Centralize deprecation warnings through dedicated function
    
    https://issues.shibboleth.net/jira/browse/IDP-1177
    
    Replace and add to deprecation warnings throughout resolver config.
---
 .../spring/impl/AbstractWarningFilterParser.java   |  8 ++--
 .../spring/ad/BaseAttributeDefinitionParser.java   | 31 +++-----------
 ... AbstractWarningAttributeDefinitionParser.java} | 45 ++++++++++-----------
 .../ContextDerivedAttributeDefinitionParser.java   | 10 ++++-
 ...CryptoTransientIdAttributeDefinitionParser.java |  8 +++-
 .../impl/PrescopedAttributeDefinitionParser.java   |  9 ++++-
 ...henticationMethodAttributeDefinitionParser.java |  9 ++++-
 .../PrincipalNameAttributeDefinitionParser.java    |  9 ++++-
 .../impl/RegexSplitAttributeDefinitionParser.java  |  9 ++++-
 ...ML1NameIdentifierAttributeDefinitionParser.java |  9 ++++-
 .../impl/SAML2NameIDAttributeDefinitionParser.java |  9 ++++-
 .../ad/impl/ScopedAttributeDefinitionParser.java   |  9 ++++-
 .../ad/impl/ScriptedAttributeDefinitionParser.java |  9 ++++-
 .../ad/impl/SimpleAttributeDefinitionParser.java   |  9 ++++-
 .../SubjectDerivedAttributeDefinitionParser.java   | 10 ++++-
 .../ad/impl/TemplateAttributeDefinitionParser.java |  9 ++++-
 .../impl/TransientIdAttributeDefinitionParser.java |  8 +++-
 .../spring/dc/AbstractDataConnectorParser.java     | 24 +----------
 .../impl/AbstractWarningDataConnectorParser.java   | 47 ++++++++++------------
 .../dc/impl/BaseComputedIDDataConnectorParser.java | 33 ++++++---------
 .../dc/impl/ComputedIDDataConnectorParser.java     |  6 +++
 .../spring/dc/impl/ScriptDataConnectorParser.java  | 11 +++--
 .../spring/dc/impl/StaticDataConnectorParser.java  | 10 ++++-
 .../dc/impl/StoredIDDataConnectorParser.java       |  7 ++++
 .../dc/ldap/impl/LDAPDataConnectorParser.java      | 10 ++++-
 .../dc/rdbms/impl/RDBMSDataConnectorParser.java    | 10 ++++-
 .../spring/enc/BaseAttributeEncoderParser.java     | 25 ------------
 .../AbstractWarningAttributeEncoderParser.java     | 45 +++++++++------------
 ...bstractWarningScopedAttributeEncoderParser.java | 45 +++++++++------------
 .../enc/impl/AttributeEncoderNamespaceHandler.java |  1 +
 .../impl/SAML1Base64AttributeEncoderParser.java    |  9 ++++-
 .../SAML1ScopedStringAttributeEncoderParser.java   |  9 ++++-
 .../impl/SAML1StringAttributeEncoderParser.java    |  9 ++++-
 .../SAML1StringNameIdentifierEncoderParser.java    | 24 +++++++++++
 .../impl/SAML1XMLObjectAttributeEncoderParser.java |  9 ++++-
 .../impl/SAML2Base64AttributeEncoderParser.java    |  9 ++++-
 .../SAML2ScopedStringAttributeEncoderParser.java   |  9 ++++-
 .../impl/SAML2StringAttributeEncoderParser.java    | 10 ++++-
 .../enc/impl/SAML2StringNameIDEncoderParser.java   | 24 +++++++++++
 .../impl/SAML2XMLObjectAttributeEncoderParser.java |  9 ++++-
 .../impl/AttributeResolverNamespaceHandler.java    |  3 +-
 .../spring/impl/InputDataConnectorParser.java      |  6 ++-
 ...toTransientIdAttributeDefinitionParserTest.java |  1 +
 .../TransientIdAttributeDefinitionParserTest.java  |  1 +
 ...SAML1StringNameIdentifierEncoderParserTest.java | 16 ++++++++
 .../enc/SAML2StringNameIDEncoderParserTest.java    |  1 +
 .../enc/saml1StringNameIdentifierConditional.xml   | 15 +++++++
 .../AbstractSAML1NameIdentifierEncoder.java        |  6 ++-
 .../encoding/AbstractSAML2NameIDEncoder.java       |  6 ++-
 .../encoding/AbstractSAMLAttributeEncoder.java     |  4 +-
 .../nameid/NameIdentifierAttributeEncoder.java     |  2 +
 .../SAML1NameIdentifierAttributeEncoder.java       |  2 +
 .../saml/nameid/SAML2NameIDAttributeEncoder.java   |  2 +
 .../impl/SAML1StringNameIdentifierEncoder.java     |  2 +
 .../encoding/impl/SAML2StringNameIDEncoder.java    |  2 +
 .../impl/TransientIdAttributeDefinition.java       |  2 +
 .../nameid/impl/LegacyNameIdentifierGenerator.java |  2 +
 .../impl/LegacySAML1NameIdentifierGenerator.java   |  2 +
 .../nameid/impl/LegacySAML2NameIDGenerator.java    |  2 +
 59 files changed, 426 insertions(+), 256 deletions(-)

diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java
index 0e56d4d..20c0534 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java
+++ b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java
@@ -32,9 +32,7 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 /**
- * A special case version of {@link BaseFilterParser} which warns if the non legacy name is used.
- * 
- * Initially it will warn once per namespace.
+ * A special case version of {@link BaseFilterParser} which warns if the legacy name is used.
  */
 public abstract class AbstractWarningFilterParser extends BaseFilterParser {
 
@@ -53,9 +51,9 @@ public abstract class AbstractWarningFilterParser extends BaseFilterParser {
     }
 
     /**
-     * Helper function to assist rewrite from old to new prefix.
+     * Helper function to assist rewrite from old to new QName.
      * 
-     * @return the "new" type.
+     * @return the "new" type
      */
     protected abstract QName getAFPName();
 
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
index d20c951..d668d25 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.resolver.spring.impl.InputDataConnectorParse
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.xml.AttributeSupport;
-import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
 
 import org.slf4j.Logger;
@@ -58,11 +57,6 @@ public abstract class BaseAttributeDefinitionParser extends BaseResolverPluginPa
     @Nonnull public static final QName ATTRIBUTE_ENCODER_ELEMENT_NAME =
             new QName(AttributeResolverNamespaceHandler.NAMESPACE, "AttributeEncoder");
 
-    /**
-     * Whether we have ever warned because of ad: content.
-     */
-    private static boolean warned;
-
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(BaseAttributeDefinitionParser.class);
 
@@ -72,23 +66,6 @@ public abstract class BaseAttributeDefinitionParser extends BaseResolverPluginPa
             @Nonnull final BeanDefinitionBuilder builder) {
         super.doParse(config, parserContext, builder);
 
-        final QName suppliedQname = DOMTypeSupport.getXSIType(config);
-        
-        if (!AttributeResolverNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
-            if (!warned) {
-                warned = true;
-                log.warn("{} Configuration contains at least one element in the deprecated '{}' namespace.",
-                         getLogPrefix(), AttributeResolverNamespaceHandler.NAMESPACE);
-            }
-            if (log.isDebugEnabled()) {
-                final QName otherQname =
-                        new QName(AttributeResolverNamespaceHandler.NAMESPACE,suppliedQname.getLocalPart(), "ad:");
-            log.debug("{} Deprecated Namespace element '{}' in {}, consider using '{}'",
-                    getLogPrefix(), suppliedQname.toString(),
-                    parserContext.getReaderContext().getResource().getDescription(), otherQname.toString());
-            }
-        } 
-        
         final List<Element> displayNames =
                 ElementSupport.getChildElements(config, new QName(AttributeResolverNamespaceHandler.NAMESPACE,
                         "DisplayName"));
@@ -164,10 +141,12 @@ public abstract class BaseAttributeDefinitionParser extends BaseResolverPluginPa
     }
 
     /**
-     * Ask the specific parser of it needs attributeSourceID. We used to use this to log several misconfiguration possibilities,
-     * These days the attribute is irrelevant if you avoid <Dependency> so this is here purely for backwards API compatibility.
+     * Ask the specific parser of it needs attributeSourceID.
+     * We used to use this to log several misconfiguration possibilities.
+     * These days the attribute is irrelevant if you avoid <Dependency>
+     * so this is here purely for backwards API compatibility.
      * 
-     * @return Whether the attribute definition for this parser needs attributeSourceID.
+     * @return whether the attribute definition for this parser needs attributeSourceID.
      */
     protected boolean needsAttributeSourceID() {
         return false;
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/AbstractWarningAttributeDefinitionParser.java
similarity index 59%
copy from idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java
copy to idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/AbstractWarningAttributeDefinitionParser.java
index 56d8b43..8601ec6 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/AbstractWarningAttributeDefinitionParser.java
@@ -18,42 +18,41 @@
 package net.shibboleth.idp.attribute.resolver.spring.ad.impl;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
-import net.shibboleth.idp.attribute.resolver.ad.impl.SimpleAttributeDefinition;
 import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
 
-/** Bean definition parser for a {@link SimpleAttributeDefinition}. */
-public class SimpleAttributeDefinitionParser extends BaseAttributeDefinitionParser {
-
-    /** Schema type names - ad: (legacy). */
-    @Nonnull public static final QName TYPE_NAME_AD =
-            new QName(AttributeDefinitionNamespaceHandler.NAMESPACE, "Simple");
-
-    /** Schema type names - ad: (legacy). */
-    @Nonnull public static final QName TYPE_NAME_RESOLVER =
-            new QName(AttributeResolverNamespaceHandler.NAMESPACE, "Simple");
-
-    /** {@inheritDoc} */
-    @Override protected Class<SimpleAttributeDefinition> getBeanClass(@Nullable final Element element) {
-        return SimpleAttributeDefinition.class;
-    }
-
+/**
+ * A special case version of {@link net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser}
+ * which warns if the legacy name is used.
+ */
+public abstract class AbstractWarningAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+    
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
         super.doParse(config, parserContext, builder);
+        
+        final QName suppliedQname = DOMTypeSupport.getXSIType(config);
+        if (!AttributeResolverNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
+            DeprecationSupport.warnOnce(ObjectType.XSITYPE, suppliedQname.toString(),
+                    parserContext.getReaderContext().getResource().getDescription(), getPreferredName().toString());
+        } 
     }
 
-    /** {@inheritDoc} */
-    @Override protected boolean needsAttributeSourceID() {
-        return true;
-    }
-
+    /**
+     * Helper function to assist rewrite from old to new QName.
+     * 
+     * @return the "new" type
+     */
+    @Nonnull protected abstract QName getPreferredName();
+    
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ContextDerivedAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ContextDerivedAttributeDefinitionParser.java
index 91976f8..ab7829b 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ContextDerivedAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ContextDerivedAttributeDefinitionParser.java
@@ -26,12 +26,11 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.resolver.ad.impl.ContextDerivedAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /** Spring Bean Definition Parser for attribute definitions derived from the Principal. */
-public class ContextDerivedAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class ContextDerivedAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name - ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -68,4 +67,11 @@ public class ContextDerivedAttributeDefinitionParser extends BaseAttributeDefini
     @Override protected boolean failOnDependencies() {
         return true;
     }
+
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/CryptoTransientIdAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/CryptoTransientIdAttributeDefinitionParser.java
index f8e05b0..e5b3f3b 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/CryptoTransientIdAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/CryptoTransientIdAttributeDefinitionParser.java
@@ -25,7 +25,10 @@ import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionPa
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition;
 import net.shibboleth.idp.saml.nameid.impl.CryptoTransientIdGenerationStrategy;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,6 +40,7 @@ import org.w3c.dom.Element;
  * Spring bean definition parser for {@link TransientIdAttributeDefinition} using a
  * {@link CryptoTransientIdGenerationStrategy}.
  */
+ at SuppressWarnings("deprecation")
 public class CryptoTransientIdAttributeDefinitionParser extends BaseAttributeDefinitionParser {
 
     /** Schema type name - ad: (legacy). */
@@ -76,7 +80,9 @@ public class CryptoTransientIdAttributeDefinitionParser extends BaseAttributeDef
 
         builder.addPropertyValue("transientIdGenerationStrategy", strategyBuilder.getBeanDefinition());
 
-        log.warn("{} This feature is DEPRECATED in favor of a TransientSAML2NameIDGenerator", getLogPrefix());
+        DeprecationSupport.warnOnce(ObjectType.XSITYPE, DOMTypeSupport.getXSIType(config).toString(),
+                parserContext.getReaderContext().getResource().getDescription(),
+                "via NameID Generation Service configuration");
     }
 
     /** {@inheritDoc}. So source Attribute for this. */
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrescopedAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrescopedAttributeDefinitionParser.java
index 1303832..60a1599 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrescopedAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrescopedAttributeDefinitionParser.java
@@ -22,7 +22,6 @@ import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.idp.attribute.resolver.ad.impl.PrescopedAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
@@ -33,7 +32,7 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 /** Spring bean definition parser for prescoped attributes. */
-public class PrescopedAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class PrescopedAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -68,4 +67,10 @@ public class PrescopedAttributeDefinitionParser extends BaseAttributeDefinitionP
         return true;
     }
     
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrincipalAuthenticationMethodAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrincipalAuthenticationMethodAttributeDefinitionParser.java
index 2c9a719..743fe1a 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrincipalAuthenticationMethodAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrincipalAuthenticationMethodAttributeDefinitionParser.java
@@ -21,13 +21,12 @@ import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.idp.attribute.resolver.ad.impl.PrincipalAuthenticationMethodAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 
 import org.w3c.dom.Element;
 
 /** Spring Bean Definition Parser for PrincipalAuthenticationMethod. */
-public class PrincipalAuthenticationMethodAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class PrincipalAuthenticationMethodAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -47,4 +46,10 @@ public class PrincipalAuthenticationMethodAttributeDefinitionParser extends Base
         return false;
     }
     
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrincipalNameAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrincipalNameAttributeDefinitionParser.java
index c1361df..2351dcc 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrincipalNameAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/PrincipalNameAttributeDefinitionParser.java
@@ -24,11 +24,10 @@ import javax.xml.namespace.QName;
 import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.resolver.ad.impl.PrincipalNameAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 
 /** Spring Bean Definition Parser for PrincipalName attribute definitions. */
-public class PrincipalNameAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class PrincipalNameAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -48,4 +47,10 @@ public class PrincipalNameAttributeDefinitionParser extends BaseAttributeDefinit
         return false;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/RegexSplitAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/RegexSplitAttributeDefinitionParser.java
index 00ea824..1aa770d 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/RegexSplitAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/RegexSplitAttributeDefinitionParser.java
@@ -29,13 +29,12 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.resolver.ad.impl.RegexSplitAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.PatternFactoryBean;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /** Spring Bean Definition Parser for Regexp split attribute definitions. */
-public class RegexSplitAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class RegexSplitAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name : ad: (Legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -82,4 +81,10 @@ public class RegexSplitAttributeDefinitionParser extends BaseAttributeDefinition
         return true;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SAML1NameIdentifierAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SAML1NameIdentifierAttributeDefinitionParser.java
index 82e8bda..e1c7f2c 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SAML1NameIdentifierAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SAML1NameIdentifierAttributeDefinitionParser.java
@@ -27,13 +27,12 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.resolver.impl.SAML1NameIdentifierAttributeDefinition;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /** Spring bean definition parser for SAML 1 NameIdentifier attribute definitions. */
-public class SAML1NameIdentifierAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class SAML1NameIdentifierAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name - ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -73,4 +72,10 @@ public class SAML1NameIdentifierAttributeDefinitionParser extends BaseAttributeD
         return true;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SAML2NameIDAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SAML2NameIDAttributeDefinitionParser.java
index 4c71a6a..caef140 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SAML2NameIDAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SAML2NameIDAttributeDefinitionParser.java
@@ -27,13 +27,12 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.resolver.impl.SAML2NameIDAttributeDefinition;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /** Spring bean definition parser for SAML 2 NameID attribute definitions. */
-public class SAML2NameIDAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class SAML2NameIDAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name - ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -77,4 +76,10 @@ public class SAML2NameIDAttributeDefinitionParser extends BaseAttributeDefinitio
         return true;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ScopedAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ScopedAttributeDefinitionParser.java
index c9d8250..e042268 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ScopedAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ScopedAttributeDefinitionParser.java
@@ -28,14 +28,13 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.resolver.ad.impl.ScopedAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /**
  * Spring Bean Definition Parser for scoped attribute definitions.
  */
-public class ScopedAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class ScopedAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name - ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -68,4 +67,10 @@ public class ScopedAttributeDefinitionParser extends BaseAttributeDefinitionPars
         return true;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ScriptedAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ScriptedAttributeDefinitionParser.java
index de20c86..a7adb7e 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ScriptedAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/ScriptedAttributeDefinitionParser.java
@@ -25,7 +25,6 @@ import javax.xml.namespace.QName;
 
 import net.shibboleth.ext.spring.factory.EvaluableScriptFactoryBean;
 import net.shibboleth.idp.attribute.resolver.ad.impl.ScriptedAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
@@ -40,7 +39,7 @@ import org.w3c.dom.Element;
 /**
  * Spring bean definition parser for scripted attribute configuration elements.
  */
-public class ScriptedAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class ScriptedAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name - ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -124,4 +123,10 @@ public class ScriptedAttributeDefinitionParser extends BaseAttributeDefinitionPa
         return false;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java
index 56d8b43..237be6c 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java
@@ -26,11 +26,10 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.resolver.ad.impl.SimpleAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 
 /** Bean definition parser for a {@link SimpleAttributeDefinition}. */
-public class SimpleAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class SimpleAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type names - ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -56,4 +55,10 @@ public class SimpleAttributeDefinitionParser extends BaseAttributeDefinitionPars
         return true;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java
index 21bad1e..2d82e22 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SubjectDerivedAttributeDefinitionParser.java
@@ -23,7 +23,6 @@ import javax.xml.namespace.QName;
 import net.shibboleth.idp.attribute.resolver.ad.impl.ContextDerivedAttributeDefinition;
 import net.shibboleth.idp.attribute.resolver.ad.impl.IdPAttributePrincipalValuesFunction;
 import net.shibboleth.idp.attribute.resolver.ad.impl.SubjectDerivedAttributeValuesFunction;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
@@ -35,7 +34,7 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 /** Spring Bean Definition Parser for attribute definitions derived from the Principal. */
-public class SubjectDerivedAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class SubjectDerivedAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -100,4 +99,11 @@ public class SubjectDerivedAttributeDefinitionParser extends BaseAttributeDefini
     @Override protected boolean failOnDependencies() {
         return true;
     }
+
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TemplateAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TemplateAttributeDefinitionParser.java
index 393d499..444fe25 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TemplateAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TemplateAttributeDefinitionParser.java
@@ -31,7 +31,6 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.resolver.ad.impl.TemplateAttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
@@ -39,7 +38,7 @@ import net.shibboleth.utilities.java.support.xml.ElementSupport;
 /**
  * Spring bean definition parser for templated attribute definition elements.
  */
-public class TemplateAttributeDefinitionParser extends BaseAttributeDefinitionParser {
+public class TemplateAttributeDefinitionParser extends AbstractWarningAttributeDefinitionParser {
 
     /** Schema type name - ad: (legacy). */
     @Nonnull public static final QName TYPE_NAME_AD =
@@ -112,4 +111,10 @@ public class TemplateAttributeDefinitionParser extends BaseAttributeDefinitionPa
         return false;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TransientIdAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TransientIdAttributeDefinitionParser.java
index cf506c9..a0a468a 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TransientIdAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/TransientIdAttributeDefinitionParser.java
@@ -25,7 +25,10 @@ import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionPa
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.resolver.impl.TransientIdAttributeDefinition;
 import net.shibboleth.idp.saml.nameid.impl.StoredTransientIdGenerationStrategy;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,6 +40,7 @@ import org.w3c.dom.Element;
  * Spring bean definition parser for {@link TransientIdAttributeDefinition} using a
  * {@link StoredTransientIdGenerationStrategy}.
  */
+ at SuppressWarnings("deprecation")
 public class TransientIdAttributeDefinitionParser extends BaseAttributeDefinitionParser {
 
     /** Schema type name - ad: (legacy). */
@@ -81,7 +85,9 @@ public class TransientIdAttributeDefinitionParser extends BaseAttributeDefinitio
 
         builder.addPropertyValue("transientIdGenerationStrategy", strategyBuilder.getBeanDefinition());
 
-        log.warn("{} This feature is DEPRECATED in favor of a TransientSAML2NameIDGenerator", getLogPrefix());
+        DeprecationSupport.warnOnce(ObjectType.XSITYPE, DOMTypeSupport.getXSIType(config).toString(),
+                parserContext.getReaderContext().getResource().getDescription(),
+                "via NameID Generation Service configuration");
     }
 
     /** {@inheritDoc}. No input. */
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/AbstractDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/AbstractDataConnectorParser.java
index a8182b5..85db532 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/AbstractDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/AbstractDataConnectorParser.java
@@ -25,7 +25,6 @@ import javax.xml.namespace.QName;
 import net.shibboleth.idp.attribute.resolver.AbstractDataConnector;
 import net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser;
 import net.shibboleth.idp.attribute.resolver.spring.dc.impl.DataConnectorFactoryBean;
-import net.shibboleth.idp.attribute.resolver.spring.dc.impl.DataConnectorNamespaceHandler;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
@@ -70,11 +69,6 @@ public abstract class AbstractDataConnectorParser extends BaseResolverPluginPars
     @Nonnull public static final QName FAILOVER_DATA_CONNECTOR_ELEMENT_NAME = new QName(
             AttributeResolverNamespaceHandler.NAMESPACE, "FailoverDataConnector");
 
-    /**
-     * Whether we have ever warned because of dc: content.
-     */
-    private static boolean warned;
-
     /** Log4j logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractDataConnectorParser.class);
 
@@ -106,26 +100,10 @@ public abstract class AbstractDataConnectorParser extends BaseResolverPluginPars
 
     //CheckStyle: MethodLength|CyclomaticComplexity OFF
     /** {@inheritDoc} */
-    @Override protected final void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
+    @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
         super.doParse(config, parserContext, builder);
 
-        final QName suppliedQname = DOMTypeSupport.getXSIType(config);
-        if (!AttributeResolverNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
-            if (!warned) {
-                warned = true;
-                log.warn("{} Configuration contains at least one element in the deprecated '{}' namespace.",
-                         getLogPrefix(), DataConnectorNamespaceHandler.NAMESPACE);
-            }
-            if (log.isDebugEnabled()) {
-                final QName otherQname =
-                        new QName(DataConnectorNamespaceHandler.NAMESPACE,suppliedQname.getLocalPart(), "dc:");
-            log.debug("{} Deprecated Namespace element '{}' in {}, consider using '{}'",
-                    getLogPrefix(), suppliedQname.toString(),
-                    parserContext.getReaderContext().getResource().getDescription(), otherQname.toString());
-            }
-        } 
-
         final List<Element> failoverConnector =
                 ElementSupport.getChildElements(config, FAILOVER_DATA_CONNECTOR_ELEMENT_NAME);
 
diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/AbstractWarningDataConnectorParser.java
similarity index 56%
copy from idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java
copy to idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/AbstractWarningDataConnectorParser.java
index 0e56d4d..9557763 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/AbstractWarningDataConnectorParser.java
@@ -15,48 +15,43 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.attribute.filter.spring.impl;
+package net.shibboleth.idp.attribute.resolver.spring.dc.impl;
 
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.filter.spring.BaseFilterParser;
-import net.shibboleth.idp.attribute.filter.spring.basic.impl.AttributeFilterBasicNamespaceHandler;
-import net.shibboleth.idp.attribute.filter.spring.saml.impl.AttributeFilterSAMLNamespaceHandler;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
-import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
-
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
+import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
+
 /**
- * A special case version of {@link BaseFilterParser} which warns if the non legacy name is used.
- * 
- * Initially it will warn once per namespace.
+ * A special case version of {@link net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser}
+ * which warns if the legacy name is used.
  */
-public abstract class AbstractWarningFilterParser extends BaseFilterParser {
-
+public abstract class AbstractWarningDataConnectorParser 
+       extends net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser {
+    
     /** {@inheritDoc} */
-    @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
+    @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
-
-        final QName suppliedQname = DOMTypeSupport.getXSIType(element);
-        if (AttributeFilterSAMLNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())
-                || AttributeFilterBasicNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
+        super.doParse(config, parserContext, builder);
+        
+        final QName suppliedQname = DOMTypeSupport.getXSIType(config);
+        if (!AttributeResolverNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
             DeprecationSupport.warnOnce(ObjectType.XSITYPE, suppliedQname.toString(),
-                    parserContext.getReaderContext().getResource().getDescription(), getAFPName().toString());
-        }
-
-        super.doParse(element, parserContext, builder);
+                    parserContext.getReaderContext().getResource().getDescription(), getPreferredName().toString());
+        } 
     }
 
     /**
-     * Helper function to assist rewrite from old to new prefix.
+     * Helper function to assist rewrite from old to new QName.
      * 
-     * @return the "new" type.
+     * @return the "new" type
      */
-    protected abstract QName getAFPName();
-
+    @Nonnull protected abstract QName getPreferredName();
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/BaseComputedIDDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/BaseComputedIDDataConnectorParser.java
index 89bb5b3..c5bad85 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/BaseComputedIDDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/BaseComputedIDDataConnectorParser.java
@@ -27,7 +27,9 @@ import net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser;
 import net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
 import net.shibboleth.utilities.java.support.xml.AttributeSupport;
 import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
@@ -45,11 +47,6 @@ import org.w3c.dom.Element;
  */
 public abstract class BaseComputedIDDataConnectorParser extends BaseResolverPluginParser {
 
-    /**
-     * Whether we have ever warned because of dc: content.
-     */
-    private static boolean warned;
-
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(BaseComputedIDDataConnectorParser.class);
 
@@ -67,22 +64,11 @@ public abstract class BaseComputedIDDataConnectorParser extends BaseResolverPlug
         super.doParse(config, parserContext, builder);
         
         final QName suppliedQname = DOMTypeSupport.getXSIType(config);
-        
         if (!AttributeResolverNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
-            if (!warned) {
-                warned = true;
-                log.warn("{} Configuration contains at least one element in the deprecated '{}' namespace.",
-                         getLogPrefix(), DataConnectorNamespaceHandler.NAMESPACE);
-            }
-            if (log.isDebugEnabled()) {
-                final QName otherQname =
-                        new QName(DataConnectorNamespaceHandler.NAMESPACE,suppliedQname.getLocalPart(), "dc:");
-            log.debug("{} Deprecated Namespace element '{}' in {}, consider using' {}'",
-                    getLogPrefix(), suppliedQname.toString(),
-                    parserContext.getReaderContext().getResource().getDescription(), otherQname.toString());
-            }
-        }
-
+            DeprecationSupport.warnOnce(ObjectType.XSITYPE, suppliedQname.toString(),
+                    parserContext.getReaderContext().getResource().getDescription(), getPreferredName().toString());
+        } 
+        
         final String generatedAttribute;
         if (config.hasAttributeNS(null, "generatedAttributeID")) {
             generatedAttribute = StringSupport.trimOrNull(config.getAttributeNS(null, "generatedAttributeID"));
@@ -136,4 +122,11 @@ public abstract class BaseComputedIDDataConnectorParser extends BaseResolverPlug
         return builder.toString();
     }
     
+    /**
+     * Helper function to assist rewrite from old to new QName.
+     * 
+     * @return the "new" type
+     */
+    protected abstract QName getPreferredName();
+    
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ComputedIDDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ComputedIDDataConnectorParser.java
index 7277905..6daad0c 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ComputedIDDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ComputedIDDataConnectorParser.java
@@ -50,4 +50,10 @@ public class ComputedIDDataConnectorParser extends BaseComputedIDDataConnectorPa
         super.doParse(config, parserContext, builder, "computedId");
     }
     
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ScriptDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ScriptDataConnectorParser.java
index 46a1ad0..a97315c 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ScriptDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ScriptDataConnectorParser.java
@@ -25,7 +25,6 @@ import javax.xml.namespace.QName;
 import net.shibboleth.ext.spring.factory.EvaluableScriptFactoryBean;
 import net.shibboleth.idp.attribute.resolver.dc.impl.ScriptedDataConnector;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.ScriptedAttributeDefinitionParser;
-import net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
@@ -38,13 +37,13 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 /** Bean definition Parser for a {@link ScriptedDataConnector}. */
-public class ScriptDataConnectorParser extends AbstractDataConnectorParser {
+public class ScriptDataConnectorParser extends AbstractWarningDataConnectorParser {
 
     /** Schema type name - dc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_DC = new QName(DataConnectorNamespaceHandler.NAMESPACE, "Script");
 
     /** Schema type name - resolver: . */
-    @Nonnull public static final QName TYPE_NAME_RESVOLVER =
+    @Nonnull public static final QName TYPE_NAME_RESOLVER =
             new QName(AttributeResolverNamespaceHandler.NAMESPACE, "ScriptedDataConnector");
 
     /** Script file element name - dc:. */
@@ -125,4 +124,10 @@ public class ScriptDataConnectorParser extends AbstractDataConnectorParser {
     }
     // Checkstyle: CyclomaticComplexity ON
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParser.java
index e7294d8..5e3564d 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParser.java
@@ -25,7 +25,6 @@ import javax.xml.namespace.QName;
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.StringAttributeValue;
 import net.shibboleth.idp.attribute.resolver.dc.impl.StaticDataConnector;
-import net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
@@ -39,7 +38,7 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 /** Bean definition Parser for a {@link StaticDataConnector}. */
-public class StaticDataConnectorParser extends AbstractDataConnectorParser {
+public class StaticDataConnectorParser extends AbstractWarningDataConnectorParser {
 
     /** Schema type name - dc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_DC = new QName(DataConnectorNamespaceHandler.NAMESPACE, "Static");
@@ -103,4 +102,11 @@ public class StaticDataConnectorParser extends AbstractDataConnectorParser {
     @Override protected boolean warnOnDependencies() {
         return true;
     }
+
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+    
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIDDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIDDataConnectorParser.java
index 4f2fc28..219b7ac 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIDDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIDDataConnectorParser.java
@@ -136,4 +136,11 @@ public class StoredIDDataConnectorParser extends BaseComputedIDDataConnectorPars
         final ManagedConnectionParser parser = new ManagedConnectionParser(config);
         return parser.createDataSource();
     }
+
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
index 7dec6a4..6bccdf9 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
@@ -29,7 +29,7 @@ import net.shibboleth.idp.attribute.resolver.dc.ldap.impl.ConnectionFactoryValid
 import net.shibboleth.idp.attribute.resolver.dc.ldap.impl.LDAPDataConnector;
 import net.shibboleth.idp.attribute.resolver.dc.ldap.impl.StringAttributeValueMappingStrategy;
 import net.shibboleth.idp.attribute.resolver.dc.ldap.impl.TemplatedExecutableSearchFilterBuilder;
-import net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser;
+import net.shibboleth.idp.attribute.resolver.spring.dc.impl.AbstractWarningDataConnectorParser;
 import net.shibboleth.idp.attribute.resolver.spring.dc.impl.CacheConfigParser;
 import net.shibboleth.idp.attribute.resolver.spring.dc.impl.DataConnectorNamespaceHandler;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
@@ -75,7 +75,7 @@ import org.w3c.dom.Element;
  * Bean definition Parser for a {@link LDAPDataConnector}. <em>Note</em> That parsing the V2 configuration will set some
  * beans with hard wired defaults. See {@link #doParseV2(Element, ParserContext, BeanDefinitionBuilder)}.
  */
-public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
+public class LDAPDataConnectorParser extends AbstractWarningDataConnectorParser {
 
     /** Schema type name - dc: (Legacy). */
     @Nonnull public static final QName
@@ -92,6 +92,12 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
     @Override protected Class<LDAPDataConnector> getNativeBeanClass() {
         return LDAPDataConnector.class;
     }
+    
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
 
     // CheckStyle: MethodLength|CyclomaticComplexity OFF
     /**
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java
index af1dd4c..8387222 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java
@@ -27,7 +27,7 @@ import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.DataSourceValidator;
 import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.RDBMSDataConnector;
 import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.StringResultMappingStrategy;
 import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.TemplatedExecutableStatementBuilder;
-import net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser;
+import net.shibboleth.idp.attribute.resolver.spring.dc.impl.AbstractWarningDataConnectorParser;
 import net.shibboleth.idp.attribute.resolver.spring.dc.impl.CacheConfigParser;
 import net.shibboleth.idp.attribute.resolver.spring.dc.impl.DataConnectorNamespaceHandler;
 import net.shibboleth.idp.attribute.resolver.spring.dc.impl.ManagedConnectionParser;
@@ -48,7 +48,7 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 /** Bean definition Parser for a {@link RDBMSDataConnector}. */
-public class RDBMSDataConnectorParser extends AbstractDataConnectorParser {
+public class RDBMSDataConnectorParser extends AbstractWarningDataConnectorParser {
 
     /** Schema type name - dc: (Legacy). */
     @Nonnull public static final QName TYPE_NAME_DC =
@@ -67,6 +67,12 @@ public class RDBMSDataConnectorParser extends AbstractDataConnectorParser {
     }
 
     /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+    
+    /** {@inheritDoc} */
     @Override protected void doV2Parse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
 
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseAttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseAttributeEncoderParser.java
index 78a8b04..eafe641 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseAttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseAttributeEncoderParser.java
@@ -18,15 +18,12 @@
 package net.shibboleth.idp.attribute.resolver.spring.enc;
 
 import javax.annotation.Nonnull;
-import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.resolver.spring.enc.impl.AttributeEncoderNamespaceHandler;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.profile.logic.ScriptedPredicate;
 import net.shibboleth.idp.profile.spring.relyingparty.metadata.ScriptTypeBeanParser;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
 
 import org.slf4j.Logger;
@@ -45,11 +42,6 @@ public abstract class BaseAttributeEncoderParser extends AbstractSingleBeanDefin
     /** Local name of name attribute. */
     @Nonnull @NotEmpty public static final String NAME_ATTRIBUTE_NAME = "name";
 
-    /**
-     * Whether we have ever warned because of enc: content.
-     */
-    private static boolean warned;
-
     /** Log4j logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(BaseAttributeEncoderParser.class);
 
@@ -76,23 +68,6 @@ public abstract class BaseAttributeEncoderParser extends AbstractSingleBeanDefin
 
         super.doParse(config, parserContext, builder);
         
-        final QName suppliedQname = DOMTypeSupport.getXSIType(config);
-        if (!AttributeResolverNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
-            if (!warned) {
-                warned = true;
-                log.warn("Configuration contains at least one element in the deprecated '{}' namespace.",
-                        AttributeEncoderNamespaceHandler.NAMESPACE);
-            }
-            if (log.isDebugEnabled()) {
-                final QName otherQname =
-                        new QName(AttributeEncoderNamespaceHandler.NAMESPACE,suppliedQname.getLocalPart(), "dc:");
-            log.debug("Deprecated Namespace element '{}' in {}, consider using '{}'", suppliedQname.toString(),
-                    parserContext.getReaderContext().getResource().getDescription(), otherQname.toString());
-            }
-        } 
-
-
-        
         final String attributeName = StringSupport.trimOrNull(config.getAttributeNS(null, NAME_ATTRIBUTE_NAME));
         if (nameRequired && attributeName == null) {
             throw new BeanCreationException("Attribute encoder must contain a name property");
diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AbstractWarningAttributeEncoderParser.java
similarity index 56%
copy from idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java
copy to idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AbstractWarningAttributeEncoderParser.java
index 0e56d4d..b1ed62a 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AbstractWarningAttributeEncoderParser.java
@@ -15,48 +15,43 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.attribute.filter.spring.impl;
+package net.shibboleth.idp.attribute.resolver.spring.enc.impl;
 
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.filter.spring.BaseFilterParser;
-import net.shibboleth.idp.attribute.filter.spring.basic.impl.AttributeFilterBasicNamespaceHandler;
-import net.shibboleth.idp.attribute.filter.spring.saml.impl.AttributeFilterSAMLNamespaceHandler;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
-import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
-
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
+import net.shibboleth.idp.attribute.resolver.spring.enc.BaseAttributeEncoderParser;
+import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
+
 /**
- * A special case version of {@link BaseFilterParser} which warns if the non legacy name is used.
- * 
- * Initially it will warn once per namespace.
+ * A special case version of {@link BaseAttributeEncoderParser} which warns if the legacy name is used.
  */
-public abstract class AbstractWarningFilterParser extends BaseFilterParser {
-
+public abstract class AbstractWarningAttributeEncoderParser extends BaseAttributeEncoderParser {
+    
     /** {@inheritDoc} */
-    @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
+    @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
-
-        final QName suppliedQname = DOMTypeSupport.getXSIType(element);
-        if (AttributeFilterSAMLNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())
-                || AttributeFilterBasicNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
+        super.doParse(config, parserContext, builder);
+        
+        final QName suppliedQname = DOMTypeSupport.getXSIType(config);
+        if (!AttributeResolverNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
             DeprecationSupport.warnOnce(ObjectType.XSITYPE, suppliedQname.toString(),
-                    parserContext.getReaderContext().getResource().getDescription(), getAFPName().toString());
-        }
-
-        super.doParse(element, parserContext, builder);
+                    parserContext.getReaderContext().getResource().getDescription(), getPreferredName().toString());
+        } 
     }
 
     /**
-     * Helper function to assist rewrite from old to new prefix.
+     * Helper function to assist rewrite from old to new QName.
      * 
-     * @return the "new" type.
+     * @return the "new" type
      */
-    protected abstract QName getAFPName();
+    @Nonnull protected abstract QName getPreferredName();
 
 }
\ No newline at end of file
diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AbstractWarningScopedAttributeEncoderParser.java
similarity index 56%
copy from idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java
copy to idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AbstractWarningScopedAttributeEncoderParser.java
index 0e56d4d..8dd53b7 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AbstractWarningFilterParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AbstractWarningScopedAttributeEncoderParser.java
@@ -15,48 +15,43 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.attribute.filter.spring.impl;
+package net.shibboleth.idp.attribute.resolver.spring.enc.impl;
 
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.filter.spring.BaseFilterParser;
-import net.shibboleth.idp.attribute.filter.spring.basic.impl.AttributeFilterBasicNamespaceHandler;
-import net.shibboleth.idp.attribute.filter.spring.saml.impl.AttributeFilterSAMLNamespaceHandler;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
-import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
-
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
+import net.shibboleth.idp.attribute.resolver.spring.enc.BaseScopedAttributeEncoderParser;
+import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
+
 /**
- * A special case version of {@link BaseFilterParser} which warns if the non legacy name is used.
- * 
- * Initially it will warn once per namespace.
+ * A special case version of {@link BaseScopedAttributeEncoderParser} which warns if the legacy name is used.
  */
-public abstract class AbstractWarningFilterParser extends BaseFilterParser {
-
+public abstract class AbstractWarningScopedAttributeEncoderParser extends BaseScopedAttributeEncoderParser {
+    
     /** {@inheritDoc} */
-    @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
+    @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
-
-        final QName suppliedQname = DOMTypeSupport.getXSIType(element);
-        if (AttributeFilterSAMLNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())
-                || AttributeFilterBasicNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
+        super.doParse(config, parserContext, builder);
+        
+        final QName suppliedQname = DOMTypeSupport.getXSIType(config);
+        if (!AttributeResolverNamespaceHandler.NAMESPACE.equals(suppliedQname.getNamespaceURI())) {
             DeprecationSupport.warnOnce(ObjectType.XSITYPE, suppliedQname.toString(),
-                    parserContext.getReaderContext().getResource().getDescription(), getAFPName().toString());
-        }
-
-        super.doParse(element, parserContext, builder);
+                    parserContext.getReaderContext().getResource().getDescription(), getPreferredName().toString());
+        } 
     }
 
     /**
-     * Helper function to assist rewrite from old to new prefix.
+     * Helper function to assist rewrite from old to new QName.
      * 
-     * @return the "new" type.
+     * @return the "new" type
      */
-    protected abstract QName getAFPName();
+    @Nonnull protected abstract QName getPreferredName();
 
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AttributeEncoderNamespaceHandler.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AttributeEncoderNamespaceHandler.java
index c6d25cf..cc83e53 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AttributeEncoderNamespaceHandler.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/AttributeEncoderNamespaceHandler.java
@@ -23,6 +23,7 @@ import net.shibboleth.ext.spring.util.BaseSpringNamespaceHandler;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 
 /** Namespace handler for the attribute resolver. */
+ at SuppressWarnings("deprecation")
 public class AttributeEncoderNamespaceHandler extends BaseSpringNamespaceHandler {
 
     /** Namespace for this handler. */
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1Base64AttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1Base64AttributeEncoderParser.java
index 66a6243..6655b09 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1Base64AttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1Base64AttributeEncoderParser.java
@@ -21,7 +21,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.resolver.spring.enc.BaseAttributeEncoderParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML1ByteAttributeEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -34,7 +33,7 @@ import org.w3c.dom.Element;
 /**
  * Spring Bean Definition Parser for {@link SAML1ByteAttributeEncoder}.
  */
-public class SAML1Base64AttributeEncoderParser extends BaseAttributeEncoderParser {
+public class SAML1Base64AttributeEncoderParser extends AbstractWarningAttributeEncoderParser {
 
     /** Schema type name: enc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_ENC = new QName(AttributeEncoderNamespaceHandler.NAMESPACE, 
@@ -68,4 +67,10 @@ public class SAML1Base64AttributeEncoderParser extends BaseAttributeEncoderParse
         }
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1ScopedStringAttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1ScopedStringAttributeEncoderParser.java
index 5ab837f..f1de48b 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1ScopedStringAttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1ScopedStringAttributeEncoderParser.java
@@ -21,7 +21,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.resolver.spring.enc.BaseScopedAttributeEncoderParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML1ScopedStringAttributeEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -34,7 +33,7 @@ import org.w3c.dom.Element;
 /**
  * Spring Bean Definition Parser for {@link SAML1ScopedStringAttributeEncoder}.
  */
-public class SAML1ScopedStringAttributeEncoderParser extends BaseScopedAttributeEncoderParser {
+public class SAML1ScopedStringAttributeEncoderParser extends AbstractWarningScopedAttributeEncoderParser {
 
     /** Schema type name - enc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_ENC = new QName(AttributeEncoderNamespaceHandler.NAMESPACE,
@@ -73,4 +72,10 @@ public class SAML1ScopedStringAttributeEncoderParser extends BaseScopedAttribute
         }
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1StringAttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1StringAttributeEncoderParser.java
index dcdeb8e..cd1c02f 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1StringAttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1StringAttributeEncoderParser.java
@@ -21,7 +21,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.resolver.spring.enc.BaseAttributeEncoderParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML1StringAttributeEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -35,7 +34,7 @@ import org.w3c.dom.Element;
 /**
  * Spring Bean Definition Parser for {@link SAML1StringAttributeEncoder}.
  */
-public class SAML1StringAttributeEncoderParser extends BaseAttributeEncoderParser {
+public class SAML1StringAttributeEncoderParser extends AbstractWarningAttributeEncoderParser {
 
     /** Schema type name - enc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_ENC = new QName(AttributeEncoderNamespaceHandler.NAMESPACE, 
@@ -73,4 +72,10 @@ public class SAML1StringAttributeEncoderParser extends BaseAttributeEncoderParse
         }
     }
     
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1StringNameIdentifierEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1StringNameIdentifierEncoderParser.java
index 0cc88a5..38f18aa 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1StringNameIdentifierEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1StringNameIdentifierEncoderParser.java
@@ -22,9 +22,15 @@ import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
+import net.shibboleth.idp.profile.logic.ScriptedPredicate;
+import net.shibboleth.idp.profile.spring.relyingparty.metadata.ScriptTypeBeanParser;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML1StringNameIdentifierEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
+import net.shibboleth.utilities.java.support.xml.ElementSupport;
 
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
@@ -33,6 +39,8 @@ import org.w3c.dom.Element;
 
 /**
  * Spring bean definition parser for {@link SAML1StringNameIdentifierEncoder}.
+ * 
+ * @deprecated
  */
 public class SAML1StringNameIdentifierEncoderParser extends AbstractSingleBeanDefinitionParser {
 
@@ -60,6 +68,22 @@ public class SAML1StringNameIdentifierEncoderParser extends AbstractSingleBeanDe
             @Nonnull final BeanDefinitionBuilder builder) {
         super.doParse(config, parserContext, builder);
 
+        DeprecationSupport.warnOnce(ObjectType.XSITYPE, DOMTypeSupport.getXSIType(config).toString(),
+                parserContext.getReaderContext().getResource().getDescription(),
+                "via NameID Generation Service configuration");
+        
+        if (config.hasAttributeNS(null, "activationConditionRef")) {
+            builder.addPropertyReference("activationCondition",
+                    StringSupport.trimOrNull(config.getAttributeNS(null, "activationConditionRef")));
+        } else {
+            final Element child = ElementSupport.getFirstChildElement(config);
+            if (child != null && ElementSupport.isElementNamed(child,
+                    AttributeResolverNamespaceHandler.NAMESPACE, "ActivationConditionScript")) {
+                builder.addPropertyValue("activationCondition",
+                        ScriptTypeBeanParser.parseScriptType(ScriptedPredicate.class, child).getBeanDefinition());
+            }
+        }
+        
         if (config.hasAttributeNS(null, FORMAT_ATTRIBUTE_NAME)) {
             final String format = StringSupport.trimOrNull(config.getAttributeNS(null, FORMAT_ATTRIBUTE_NAME));
             builder.addPropertyValue("nameFormat", format);
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1XMLObjectAttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1XMLObjectAttributeEncoderParser.java
index ca6414a..18bf9f0 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1XMLObjectAttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML1XMLObjectAttributeEncoderParser.java
@@ -21,7 +21,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.resolver.spring.enc.BaseAttributeEncoderParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML1XMLObjectAttributeEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -32,7 +31,7 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 /** Spring Bean Definition Parser for {@link SAML1XMLObjectAttributeEncoder}. */
-public class SAML1XMLObjectAttributeEncoderParser extends BaseAttributeEncoderParser {
+public class SAML1XMLObjectAttributeEncoderParser extends AbstractWarningAttributeEncoderParser {
 
     /** Schema type name- enc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_ENC =
@@ -66,4 +65,10 @@ public class SAML1XMLObjectAttributeEncoderParser extends BaseAttributeEncoderPa
         }
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2Base64AttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2Base64AttributeEncoderParser.java
index 881f6c5..d3ba886 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2Base64AttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2Base64AttributeEncoderParser.java
@@ -21,7 +21,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.resolver.spring.enc.BaseAttributeEncoderParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML2ByteAttributeEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -34,7 +33,7 @@ import org.w3c.dom.Element;
 /**
  * Spring Bean Definition Parser for {@link SAML2ByteAttributeEncoder}.
  */
-public class SAML2Base64AttributeEncoderParser extends BaseAttributeEncoderParser {
+public class SAML2Base64AttributeEncoderParser extends AbstractWarningAttributeEncoderParser {
 
     /** Schema type name- enc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_ENC = new QName(AttributeEncoderNamespaceHandler.NAMESPACE, 
@@ -73,4 +72,10 @@ public class SAML2Base64AttributeEncoderParser extends BaseAttributeEncoderParse
         builder.addPropertyValue("friendlyName", config.getAttributeNS(null, FRIENDLY_NAME_ATTRIBUTE_NAME));
     }
     
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2ScopedStringAttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2ScopedStringAttributeEncoderParser.java
index 4c18d19..86f1346 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2ScopedStringAttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2ScopedStringAttributeEncoderParser.java
@@ -21,7 +21,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.resolver.spring.enc.BaseScopedAttributeEncoderParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML2ScopedStringAttributeEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -34,7 +33,7 @@ import org.w3c.dom.Element;
 /**
  * Spring Bean Definition Parser for {@link SAML2ScopedStringAttributeEncoder}.
  */
-public class SAML2ScopedStringAttributeEncoderParser extends BaseScopedAttributeEncoderParser {
+public class SAML2ScopedStringAttributeEncoderParser extends AbstractWarningScopedAttributeEncoderParser {
 
     /** Schema type name- enc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_ENC = new QName(AttributeEncoderNamespaceHandler.NAMESPACE,
@@ -79,4 +78,10 @@ public class SAML2ScopedStringAttributeEncoderParser extends BaseScopedAttribute
                 StringSupport.trimOrNull(config.getAttributeNS(null, FRIENDLY_NAME_ATTRIBUTE_NAME)));
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2StringAttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2StringAttributeEncoderParser.java
index d22b123..2734872 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2StringAttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2StringAttributeEncoderParser.java
@@ -21,7 +21,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.resolver.spring.enc.BaseAttributeEncoderParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML2StringAttributeEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -34,7 +33,7 @@ import org.w3c.dom.Element;
 /**
  * Spring Bean Definition Parser for {@link SAML2StringAttributeEncoder}.
  */
-public class SAML2StringAttributeEncoderParser extends BaseAttributeEncoderParser {
+public class SAML2StringAttributeEncoderParser extends AbstractWarningAttributeEncoderParser {
 
     /** Schema type name- enc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_ENC = new QName(AttributeEncoderNamespaceHandler.NAMESPACE, 
@@ -73,4 +72,11 @@ public class SAML2StringAttributeEncoderParser extends BaseAttributeEncoderParse
 
         builder.addPropertyValue("friendlyName", config.getAttribute(FRIENDLY_NAME_ATTRIBUTE_NAME));
     }
+
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2StringNameIDEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2StringNameIDEncoderParser.java
index 06218e1..6f960b1 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2StringNameIDEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2StringNameIDEncoderParser.java
@@ -22,9 +22,15 @@ import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
+import net.shibboleth.idp.profile.logic.ScriptedPredicate;
+import net.shibboleth.idp.profile.spring.relyingparty.metadata.ScriptTypeBeanParser;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML2StringNameIDEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
+import net.shibboleth.utilities.java.support.xml.ElementSupport;
 
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
@@ -33,6 +39,8 @@ import org.w3c.dom.Element;
 
 /**
  * Spring bean definition parser for {@link SAML2StringNameIDEncoder}.
+ * 
+ * @deprecated
  */
 public class SAML2StringNameIDEncoderParser extends AbstractSingleBeanDefinitionParser {
 
@@ -60,6 +68,22 @@ public class SAML2StringNameIDEncoderParser extends AbstractSingleBeanDefinition
             @Nonnull final BeanDefinitionBuilder builder) {
         super.doParse(config, parserContext, builder);
 
+        DeprecationSupport.warnOnce(ObjectType.XSITYPE, DOMTypeSupport.getXSIType(config).toString(),
+                parserContext.getReaderContext().getResource().getDescription(),
+                "via NameID Generation Service configuration");
+        
+        if (config.hasAttributeNS(null, "activationConditionRef")) {
+            builder.addPropertyReference("activationCondition",
+                    StringSupport.trimOrNull(config.getAttributeNS(null, "activationConditionRef")));
+        } else {
+            final Element child = ElementSupport.getFirstChildElement(config);
+            if (child != null && ElementSupport.isElementNamed(child,
+                    AttributeResolverNamespaceHandler.NAMESPACE, "ActivationConditionScript")) {
+                builder.addPropertyValue("activationCondition",
+                        ScriptTypeBeanParser.parseScriptType(ScriptedPredicate.class, child).getBeanDefinition());
+            }
+        }
+        
         if (config.hasAttributeNS(null, FORMAT_ATTRIBUTE_NAME)) {
             final String namespace = StringSupport.trimOrNull(config.getAttributeNS(null, FORMAT_ATTRIBUTE_NAME));
             builder.addPropertyValue("nameFormat", namespace);
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2XMLObjectAttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2XMLObjectAttributeEncoderParser.java
index 37e6add..0905863 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2XMLObjectAttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/impl/SAML2XMLObjectAttributeEncoderParser.java
@@ -21,7 +21,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.attribute.resolver.spring.enc.BaseAttributeEncoderParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML2XMLObjectAttributeEncoder;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -32,7 +31,7 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 /** Spring Bean Definition Parser for SAML2 XMLObject attribute encoder. */
-public class SAML2XMLObjectAttributeEncoderParser extends BaseAttributeEncoderParser {
+public class SAML2XMLObjectAttributeEncoderParser extends AbstractWarningAttributeEncoderParser {
 
     /** Schema type name- enc: (legacy). */
     @Nonnull public static final QName TYPE_NAME_ENC = new QName(AttributeEncoderNamespaceHandler.NAMESPACE,
@@ -72,4 +71,10 @@ public class SAML2XMLObjectAttributeEncoderParser extends BaseAttributeEncoderPa
                 StringSupport.trimOrNull(config.getAttributeNS(null, FRIENDLY_NAME_ATTRIBUTE_NAME)));
     }
 
+    /** {@inheritDoc} */
+    @Override
+    @Nonnull protected QName getPreferredName() {
+        return TYPE_NAME_RESOLVER;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java
index af49f12..7aca8bb 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java
@@ -60,6 +60,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import org.springframework.beans.factory.xml.BeanDefinitionParser;
 
 /** Namespace handler for the attribute resolver. */
+ at SuppressWarnings("deprecation")
 public class AttributeResolverNamespaceHandler extends BaseSpringNamespaceHandler {
 
     /** Namespace for this handler. */
@@ -117,7 +118,7 @@ public class AttributeResolverNamespaceHandler extends BaseSpringNamespaceHandle
                 new ComputedIDDataConnectorParser());
         registerBeanDefinitionParser(RDBMSDataConnectorParser.TYPE_NAME_RESOLVER, new RDBMSDataConnectorParser());
         registerBeanDefinitionParser(LDAPDataConnectorParser.TYPE_NAME_RESOLVER, new LDAPDataConnectorParser());
-        registerBeanDefinitionParser(ScriptDataConnectorParser.TYPE_NAME_RESVOLVER, new ScriptDataConnectorParser());
+        registerBeanDefinitionParser(ScriptDataConnectorParser.TYPE_NAME_RESOLVER, new ScriptDataConnectorParser());
         registerBeanDefinitionParser(StaticDataConnectorParser.TYPE_NAME_RESOLVER, new StaticDataConnectorParser());
         registerBeanDefinitionParser(StoredIDDataConnectorParser.TYPE_NAME_RESOLVER, new StoredIDDataConnectorParser());
 
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputDataConnectorParser.java
index ff95168..83593ce 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputDataConnectorParser.java
@@ -58,14 +58,16 @@ public class InputDataConnectorParser extends ResolverPluginDependencyParser {
         if (attributes != null) {
             if (allAttributes != null) {
                 log.error("attributeNames and allAttributes are mutually exclusive");
-                throw new BeanCreationException(ELEMENT_NAME.getLocalPart() + ": attributeNames and allAttributes are mutually exclusive");
+                throw new BeanCreationException(ELEMENT_NAME.getLocalPart()
+                        + ": attributeNames and allAttributes are mutually exclusive");
             }
             builder.addPropertyValue("attributeNames", attributes);
         } else if (allAttributes != null) {
             builder.addPropertyValue("allAttributes", allAttributes);
         } else {
             log.error("One of attributeNames or allAttributes must be specified");
-            throw new BeanCreationException(ELEMENT_NAME.getLocalPart() + ": One of attributeNames or allAttributes must be specified");
+            throw new BeanCreationException(ELEMENT_NAME.getLocalPart()
+                    + ": One of attributeNames or allAttributes must be specified");
         }
     }
     
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/CryptoTransientIdAttributeDefinitionParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/CryptoTransientIdAttributeDefinitionParserTest.java
index 059158e..14a5e13 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/CryptoTransientIdAttributeDefinitionParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/CryptoTransientIdAttributeDefinitionParserTest.java
@@ -29,6 +29,7 @@ import org.testng.annotations.Test;
 /**
  * test for {@link CryptoTransientIdAttributeDefinitionParser}
  */
+ at SuppressWarnings("deprecation")
 public class CryptoTransientIdAttributeDefinitionParserTest extends BaseAttributeDefinitionParserTest {
 
     private TransientIdAttributeDefinition getDefinition(String fileName) {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TransientIdAttributeDefinitionParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TransientIdAttributeDefinitionParserTest.java
index ec6317b..a398b5f 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TransientIdAttributeDefinitionParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/TransientIdAttributeDefinitionParserTest.java
@@ -30,6 +30,7 @@ import net.shibboleth.utilities.java.support.component.ComponentInitializationEx
 /**
  * test for {@link TransientIdAttributeDefinitionParser}
  */
+ at SuppressWarnings("deprecation")
 public class TransientIdAttributeDefinitionParserTest extends BaseAttributeDefinitionParserTest {
 
     private TransientIdAttributeDefinition getDefinition(String fileName) {
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringNameIdentifierEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringNameIdentifierEncoderParserTest.java
index 5c36327..ea9436b 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringNameIdentifierEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringNameIdentifierEncoderParserTest.java
@@ -22,12 +22,16 @@ import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1StringNameIden
 import net.shibboleth.idp.saml.attribute.encoding.impl.SAML1StringNameIdentifierEncoder;
 
 import org.opensaml.saml.saml1.core.NameIdentifier;
+import org.springframework.context.support.GenericApplicationContext;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
+import com.google.common.base.Predicates;
+
 /**
  * Test for {@link SAML1StringNameIdentifierEncoderParser}.
  */
+ at SuppressWarnings("deprecation")
 public class SAML1StringNameIdentifierEncoderParserTest extends BaseAttributeDefinitionParserTest {
 
     @Test public void legacy() {
@@ -54,4 +58,16 @@ public class SAML1StringNameIdentifierEncoderParserTest extends BaseAttributeDef
         Assert.assertNull(encoder.getNameQualifier());;
     }
     
+    @Test public void conditional() {
+        final GenericApplicationContext context = new GenericApplicationContext();
+        setTestContext(context);
+
+        loadFile(ENCODER_FILE_PATH + "predicates.xml", context);
+        
+        final SAML1StringNameIdentifierEncoder encoder =
+                getAttributeEncoder("saml1StringNameIdentifierConditional.xml", SAML1StringNameIdentifierEncoder.class, context);
+
+        Assert.assertSame(encoder.getActivationCondition(), Predicates.alwaysFalse());
+        Assert.assertFalse(encoder.getActivationCondition().apply(null));
+    }
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringNameIDEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringNameIDEncoderParserTest.java
index d201a46..2698325 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringNameIDEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringNameIDEncoderParserTest.java
@@ -28,6 +28,7 @@ import org.testng.annotations.Test;
 /**
  * Test for {@link SAML2StringNameIDEncoderParser}.
  */
+ at SuppressWarnings("deprecation")
 public class SAML2StringNameIDEncoderParserTest extends BaseAttributeDefinitionParserTest {
 
     @Test public void legacy() {
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/saml1StringNameIdentifierConditional.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/saml1StringNameIdentifierConditional.xml
new file mode 100644
index 0000000..b1cd1c8
--- /dev/null
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/saml1StringNameIdentifierConditional.xml
@@ -0,0 +1,15 @@
+<resolver:AttributeEncoder 
+    xsi:type="enc:SAML1StringNameIdentifier"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+	xmlns:enc="urn:mace:shibboleth:2.0:attribute:encoder" 
+	xmlns:resolver="urn:mace:shibboleth:2.0:resolver"
+	nameFormat="NAMEIDENTIFIER_FORMAT" 
+	nameQualifier="NAMEIDENTIFIER_QUALIFIER"
+	activationConditionRef="predicate"
+	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd
+                        urn:mace:shibboleth:2.0:resolver:pc http://shibboleth.net/schema/idp/shibboleth-attribute-resolver-pc.xsd
+                        urn:mace:shibboleth:2.0:resolver:ad http://shibboleth.net/schema/idp/shibboleth-attribute-resolver-ad.xsd
+                        urn:mace:shibboleth:2.0:resolver:dc http://shibboleth.net/schema/idp/shibboleth-attribute-resolver-dc.xsd
+                        urn:mace:shibboleth:2.0:attribute:encoder http://shibboleth.net/schema/idp/shibboleth-attribute-encoder.xsd
+                        urn:mace:shibboleth:2.0:security http://shibboleth.net/schema/idp/shibboleth-security.xsd"/>
+ 
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAML1NameIdentifierEncoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAML1NameIdentifierEncoder.java
index 0b3daea..148c3b5 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAML1NameIdentifierEncoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAML1NameIdentifierEncoder.java
@@ -30,7 +30,11 @@ import org.opensaml.saml.common.xml.SAMLConstants;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 
-/** Base class for {@link SAML1NameIdentifierAttributeEncoder}s. */
+/**
+ * Base class for {@link SAML1NameIdentifierAttributeEncoder}s.
+ * 
+ * @deprecated
+ */
 public abstract class AbstractSAML1NameIdentifierEncoder extends AbstractInitializableComponent
         implements SAML1NameIdentifierAttributeEncoder {
 
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAML2NameIDEncoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAML2NameIDEncoder.java
index ed2c89d..b63b586 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAML2NameIDEncoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAML2NameIDEncoder.java
@@ -30,7 +30,11 @@ import org.opensaml.saml.common.xml.SAMLConstants;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 
-/** Base class for {@link SAML2NameIDAttributeEncoder}s. */
+/**
+ * Base class for {@link SAML2NameIDAttributeEncoder}s.
+ *
+ * @deprecated
+ */
 public abstract class AbstractSAML2NameIDEncoder extends AbstractInitializableComponent
         implements SAML2NameIDAttributeEncoder {
 
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAMLAttributeEncoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAMLAttributeEncoder.java
index ac1b4a4..fbac945 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAMLAttributeEncoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/encoding/AbstractSAMLAttributeEncoder.java
@@ -170,8 +170,8 @@ public abstract class AbstractSAMLAttributeEncoder<AttributeType extends SAMLObj
             }
 
             if (!canEncodeValue(attribute, o)) {
-                log.warn("Skipping value of attribute '{}'; Type {} cannot be encoded by this encoder ({}).", attributeId,
-                        o.getClass().getName(), this.getClass().getName());
+                log.warn("Skipping value of attribute '{}'; Type {} cannot be encoded by this encoder ({}).",
+                        attributeId, o.getClass().getName(), this.getClass().getName());
                 continue;
             }
 
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/NameIdentifierAttributeEncoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/NameIdentifierAttributeEncoder.java
index 6699005..76c7a5d 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/NameIdentifierAttributeEncoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/NameIdentifierAttributeEncoder.java
@@ -31,6 +31,8 @@ import com.google.common.base.Predicate;
  * support, or not, for a particular name identifier format.</p> 
  * 
  * @param <NameIdType>  type of object produced
+ * 
+ * @deprecated
  */
 public interface NameIdentifierAttributeEncoder<NameIdType extends SAMLObject>
     extends AttributeEncoder<NameIdType>, Predicate<String> {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/SAML1NameIdentifierAttributeEncoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/SAML1NameIdentifierAttributeEncoder.java
index b3756bc..93e6243 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/SAML1NameIdentifierAttributeEncoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/SAML1NameIdentifierAttributeEncoder.java
@@ -22,6 +22,8 @@ import org.opensaml.saml.saml1.core.NameIdentifier;
 /**
  * Marker interface for {@link net.shibboleth.idp.attribute.AttributeEncoder}
  * that produces SAML 1.x {@link NameIdentifier}s instead of attributes.
+ * 
+ * @deprecated
  */
 public interface SAML1NameIdentifierAttributeEncoder extends NameIdentifierAttributeEncoder<NameIdentifier> {
 
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/SAML2NameIDAttributeEncoder.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/SAML2NameIDAttributeEncoder.java
index 6912c4e..b51a0a9 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/SAML2NameIDAttributeEncoder.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/nameid/SAML2NameIDAttributeEncoder.java
@@ -23,6 +23,8 @@ import org.opensaml.saml.saml2.core.NameID;
 /**
  * Marker interface for {@link net.shibboleth.idp.attribute.AttributeEncoder}
  * that produces SAML 2.0 {@link NameID}s instead of attributes.
+ * 
+ * @deprecated
  */
 public interface SAML2NameIDAttributeEncoder extends NameIdentifierAttributeEncoder<NameID> {
 
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/encoding/impl/SAML1StringNameIdentifierEncoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/encoding/impl/SAML1StringNameIdentifierEncoder.java
index 165950b..3ca3631 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/encoding/impl/SAML1StringNameIdentifierEncoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/encoding/impl/SAML1StringNameIdentifierEncoder.java
@@ -42,6 +42,8 @@ import com.google.common.base.Objects;
 /**
  * {@link net.shibboleth.idp.saml.nameid.NameIdentifierAttributeEncoder} that encodes the first String value of an
  * {@link net.shibboleth.idp.attribute.IdPAttribute} to a SAML 1 {@link NameIdentifier}.
+ * 
+ * @deprecated
  */
 public class SAML1StringNameIdentifierEncoder extends AbstractSAML1NameIdentifierEncoder {
 
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/encoding/impl/SAML2StringNameIDEncoder.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/encoding/impl/SAML2StringNameIDEncoder.java
index 149f873..64adc26 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/encoding/impl/SAML2StringNameIDEncoder.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/encoding/impl/SAML2StringNameIDEncoder.java
@@ -42,6 +42,8 @@ import com.google.common.base.Objects;
 /**
  * {@link net.shibboleth.idp.saml.nameid.NameIdentifierAttributeEncoder} that encodes the first String value of an
  * {@link net.shibboleth.idp.attribute.IdPAttribute} to a SAML 2 {@link NameID}.
+ * 
+ * @deprecated
  */
 public class SAML2StringNameIDEncoder extends AbstractSAML2NameIDEncoder {
 
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinition.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinition.java
index 042d4c8..f5d7130 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinition.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinition.java
@@ -46,6 +46,8 @@ import com.google.common.base.Strings;
  * The generation in devolved to the supplied {@link TransientIdGenerationStrategy}, which will be a
  * {@link net.shibboleth.idp.saml.nameid.impl.StoredTransientIdGenerationStrategy} for the Transient and
  * {@link net.shibboleth.idp.saml.nameid.impl.CryptoTransientIdGenerationStrategy} for a CryptoTransient.
+ * 
+ * @deprecated
  */
 public class TransientIdAttributeDefinition extends AbstractAttributeDefinition {
 
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacyNameIdentifierGenerator.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacyNameIdentifierGenerator.java
index a287b56..d966bbf 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacyNameIdentifierGenerator.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacyNameIdentifierGenerator.java
@@ -56,6 +56,8 @@ import com.google.common.base.Predicates;
  * which attribute encoders use, in the manner the V2 IdP does.</p>
  * 
  * @param <NameIdType> type of identifier object
+ * 
+ * @deprecated
  */
 public class LegacyNameIdentifierGenerator<NameIdType extends SAMLObject>
         extends AbstractIdentifiableInitializableComponent implements NameIdentifierGenerator<NameIdType> {
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacySAML1NameIdentifierGenerator.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacySAML1NameIdentifierGenerator.java
index ff7def7..105b826 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacySAML1NameIdentifierGenerator.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacySAML1NameIdentifierGenerator.java
@@ -27,6 +27,8 @@ import org.opensaml.saml.saml1.profile.SAML1NameIdentifierGenerator;
  * {@link SAML1NameIdentifierAttributeEncoder}s attached.
  * 
  * <p>See the base class for additional detail.</p>
+ * 
+ * @deprecated
  */
 public class LegacySAML1NameIdentifierGenerator extends LegacyNameIdentifierGenerator<NameIdentifier>
         implements SAML1NameIdentifierGenerator {
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacySAML2NameIDGenerator.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacySAML2NameIDGenerator.java
index fa891f8..c4a9812 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacySAML2NameIDGenerator.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/LegacySAML2NameIDGenerator.java
@@ -27,6 +27,8 @@ import org.opensaml.saml.saml2.profile.SAML2NameIDGenerator;
  * {@link SAML2NameIDAttributeEncoder}s attached.
  * 
  * <p>See the base class for additional detail.</p>
+ * 
+ * @deprecated
  */
 public class LegacySAML2NameIDGenerator extends LegacyNameIdentifierGenerator<NameID>
         implements SAML2NameIDGenerator {

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


More information about the commits mailing list