[java-opensaml] branch master updated: OSJ-291 - Sweep SAML XMLObject interfaces for consistency

Scott Cantor cantor.2 at osu.edu
Tue Dec 10 09:50:38 EST 2019


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

scantor pushed a commit to branch master
in repository java-opensaml.

View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=2927077f7a5db08b33feb5b8764539e9242a3ff5

The following commit(s) were added to refs/heads/master by this push:
       new  2927077   OSJ-291 - Sweep SAML XMLObject interfaces for consistency
2927077 is described below

commit 2927077f7a5db08b33feb5b8764539e9242a3ff5
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Dec 10 08:50:31 2019 -0600

    OSJ-291 - Sweep SAML XMLObject interfaces for consistency
    
    https://issues.shibboleth.net/jira/browse/OSJ-291
    
    SAML 1 classes.
---
 .../logic/AffiliationNameIDPolicyPredicate.java    |  2 +-
 .../profile/logic/EntityGroupNamePredicate.java    |  2 +-
 .../java/org/opensaml/saml/saml1/core/Action.java  | 25 ++++++++----
 .../saml/saml1/core/AssertionArtifact.java         | 31 +++++++++-----
 .../saml/saml1/core/AssertionIDReference.java      | 30 +++++++++-----
 .../opensaml/saml/saml1/core/AttributeValue.java   | 11 +++--
 .../org/opensaml/saml/saml1/core/Audience.java     | 39 ++++++++++++------
 .../saml/saml1/core/ConfirmationMethod.java        | 47 +++++++++++++---------
 .../saml/saml1/core/DecisionTypeEnumeration.java   | 46 ++++++++++++---------
 .../opensaml/saml/saml1/core/NameIdentifier.java   | 17 +-------
 .../opensaml/saml/saml1/core/StatusMessage.java    | 24 ++++++++---
 .../saml/saml1/core/SubjectConfirmationData.java   | 14 +++++--
 .../saml1/profile/SAML1ActionTestingSupport.java   |  2 +-
 .../impl/AddAudienceRestrictionToAssertions.java   |  2 +-
 .../resolver/filter/impl/NameIDFormatFilter.java   |  2 +-
 .../impl/SAML1ArtifactRequestIssuerHandler.java    |  2 +-
 .../opensaml/saml/saml1/core/impl/ActionImpl.java  | 30 ++------------
 .../saml/saml1/core/impl/ActionMarshaller.java     | 18 ++-------
 .../saml/saml1/core/impl/ActionUnmarshaller.java   | 12 ++----
 .../saml1/core/impl/AssertionArtifactImpl.java     | 27 +------------
 .../core/impl/AssertionArtifactMarshaller.java     | 41 -------------------
 .../core/impl/AssertionArtifactUnmarshaller.java   | 35 ----------------
 .../saml1/core/impl/AssertionIDReferenceImpl.java  | 29 ++-----------
 .../core/impl/AssertionIDReferenceMarshaller.java  | 41 -------------------
 .../impl/AssertionIDReferenceUnmarshaller.java     | 33 ---------------
 ...eMarshaller.java => AttributeValueBuilder.java} | 31 ++++++++------
 .../{AudienceImpl.java => AttributeValueImpl.java} | 37 ++++++-----------
 .../saml/saml1/core/impl/AudienceImpl.java         | 29 ++-----------
 .../saml/saml1/core/impl/AudienceUnmarshaller.java | 34 ----------------
 ...AuthorizationDecisionStatementUnmarshaller.java | 25 +++++-------
 .../saml1/core/impl/ConfirmationMethodImpl.java    | 28 ++-----------
 .../core/impl/ConfirmationMethodUnmarshaller.java  | 35 ----------------
 .../saml/saml1/core/impl/NameIdentifierImpl.java   | 26 ++----------
 .../saml1/core/impl/NameIdentifierMarshaller.java  | 19 ++-------
 .../core/impl/NameIdentifierUnmarshaller.java      | 12 ++----
 .../saml/saml1/core/impl/StatusMessageImpl.java    | 30 ++------------
 .../saml1/core/impl/StatusMessageMarshaller.java   | 41 -------------------
 .../saml1/core/impl/StatusMessageUnmarshaller.java | 34 ----------------
 ...er.java => SubjectConfirmationDataBuilder.java} | 31 ++++++++------
 ...eImpl.java => SubjectConfirmationDataImpl.java} | 37 ++++++-----------
 .../saml1/profile/impl/AddStatusToResponse.java    |  2 +-
 .../impl/AddSubjectConfirmationToSubjects.java     |  4 +-
 .../saml/saml1/profile/impl/ResolveArtifacts.java  | 12 +++---
 .../src/main/resources/saml1-assertion-config.xml  | 26 +++++++++---
 .../src/main/resources/saml1-protocol-config.xml   |  8 ++--
 .../AddAudienceRestrictionToAssertionsTest.java    | 16 ++++----
 .../opensaml/saml/saml1/core/impl/ActionTest.java  |  6 +--
 .../saml1/core/impl/AssertionArtifactTest.java     |  6 +--
 .../saml1/core/impl/AssertionIDReferenceTest.java  |  6 +--
 .../saml/saml1/core/impl/AudienceTest.java         |  6 +--
 .../saml1/core/impl/ConfirmationMethodTest.java    |  6 +--
 .../saml/saml1/core/impl/StatusMessageTest.java    |  6 +--
 .../profile/impl/AddStatusToResponseTest.java      |  2 +-
 .../impl/AddSubjectConfirmationToSubjectsTest.java | 14 +++----
 54 files changed, 360 insertions(+), 771 deletions(-)

diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AffiliationNameIDPolicyPredicate.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AffiliationNameIDPolicyPredicate.java
index 7987509..add09b9 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AffiliationNameIDPolicyPredicate.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/AffiliationNameIDPolicyPredicate.java
@@ -93,7 +93,7 @@ public class AffiliationNameIDPolicyPredicate extends DefaultNameIDPolicyPredica
                 final AffiliationDescriptor descriptor = affiliation.getAffiliationDescriptor();
                 if (descriptor != null) {
                     for (final AffiliateMember member : descriptor.getMembers()) {
-                        if (Objects.equals(member.getID(), requesterId)) {
+                        if (Objects.equals(member.getURI(), requesterId)) {
                             log.debug("Entity {} is authorized as a member of Affiliation {}", requesterId,
                                     spNameQualifier);
                             return true;
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/EntityGroupNamePredicate.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/EntityGroupNamePredicate.java
index 691f0f3..ef8e9ab 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/EntityGroupNamePredicate.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/common/profile/logic/EntityGroupNamePredicate.java
@@ -125,7 +125,7 @@ public class EntityGroupNamePredicate implements Predicate<EntityDescriptor> {
                     final EntityDescriptor affiliation = metadataResolver.resolveSingle(criteria);
                     if (affiliation != null && affiliation.getAffiliationDescriptor() != null) {
                         for (final AffiliateMember member : affiliation.getAffiliationDescriptor().getMembers()) {
-                            if (member.getID().equals(input.getEntityID())) {
+                            if (member.getURI().equals(input.getEntityID())) {
                                 log.debug("Found AffiliationDescriptor '{}' membership for entity '{}'",
                                         affiliation.getEntityID(), input.getEntityID());
                                 return true;
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/Action.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/Action.java
index 0c770f8..b9218e3 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/Action.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/Action.java
@@ -26,14 +26,17 @@ import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
 
+import org.opensaml.core.xml.schema.XSString;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
 /**
  * Interface describing how a SAML1.1 <code> Action </code> element behaves.
  */
-public interface Action extends SAMLObject {
+public interface Action extends SAMLObject, XSString {
 
     /** Default element name, no namespace. */
     @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "Action";
@@ -67,17 +70,25 @@ public interface Action extends SAMLObject {
     void setNamespace(@Nullable final String namespace);
 
     /**
-     * Return the contents.
+     * Gets the value of the action to be performed.
      * 
-     * @return the action contents
+     * @return the value of the action to be performed
      */
-    @Nullable String getContents();
+    @Deprecated(forRemoval=true, since="4.0.0")
+    @Nullable default String getContents() {
+        DeprecationSupport.warn(ObjectType.METHOD, "getContents", Action.class.toString(), "getValue");
+        return getValue();
+    }
 
     /**
-     * Set the contents.
+     * Sets the value of the action to be performed.
      * 
-     * @param contents what to set
+     * @param value the value of the action to be performed
      */
-    void setContents(@Nullable final String contents);
+    @Deprecated(forRemoval=true, since="4.0.0")
+    default void setContents(@Nullable final String value) {
+        DeprecationSupport.warn(ObjectType.METHOD, "setContents", Action.class.toString(), "setValue");
+        setValue(value);
+    }
     
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AssertionArtifact.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AssertionArtifact.java
index 3074400..34c9668 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AssertionArtifact.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AssertionArtifact.java
@@ -22,14 +22,17 @@ import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
 
+import org.opensaml.core.xml.schema.XSString;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
 /**
  * This interface is for the SAML1 <code> AssertionArtifact </code> element.
  */
-public interface AssertionArtifact extends SAMLObject {
+public interface AssertionArtifact extends XSString, SAMLObject {
 
     /** Element name, no namespace. */
     @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "AssertionArtifact";
@@ -37,19 +40,29 @@ public interface AssertionArtifact extends SAMLObject {
     /** Default element name. */
     @Nonnull static final QName DEFAULT_ELEMENT_NAME =
             new QName(SAMLConstants.SAML10P_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1P_PREFIX);
-
+    
     /**
-     * Get the contents of the artifact.
+     * Get artifact value.
      * 
-     * @return contents of the artifact
+     * @return the artifact value
      */
-    @Nullable String getAssertionArtifact();
+    @Deprecated(forRemoval=true, since="4.0.0")
+    @Nullable default String getAssertionArtifact() {
+        DeprecationSupport.warn(ObjectType.METHOD, "getAssertionArtifact", AssertionArtifact.class.toString(),
+                "getValue");
+        return getValue();
+    }
 
     /**
-     * Set the contents of the artifact.
+     * Set artifact value.
      * 
-     * @param assertionArtifact contents of the artifact
+     * @param value new artifact value
      */
-    void setAssertionArtifact(@Nullable final String assertionArtifact);
-    
+    @Deprecated(forRemoval=true, since="4.0.0")
+    default void setAssertionArtifact(@Nullable final String value) {
+        DeprecationSupport.warn(ObjectType.METHOD, "setAssertionArtifact", AssertionArtifact.class.toString(),
+                "setValue");
+        setValue(value);
+    }
+
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AssertionIDReference.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AssertionIDReference.java
index 0976620..461b73c 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AssertionIDReference.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AssertionIDReference.java
@@ -26,14 +26,16 @@ import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
 
-import org.opensaml.saml.common.SAMLObject;
+import org.opensaml.core.xml.schema.XSString;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
 /**
  * This interface defines how the object representing a SAML 1 <code>AssertionIDReference</code> element behaves.
  */
-public interface AssertionIDReference extends SAMLObject, Evidentiary {
+public interface AssertionIDReference extends XSString, Evidentiary {
 
     /** Element name, no namespace. */
     @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "AssertionIDReference";
@@ -41,19 +43,27 @@ public interface AssertionIDReference extends SAMLObject, Evidentiary {
     /** Default element name. */
     @Nonnull static final QName DEFAULT_ELEMENT_NAME =
             new QName(SAMLConstants.SAML1_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1_PREFIX);
-
+    
     /**
-     * Get the reference.
+     * Gets the ID of the assertion this references.
      * 
-     * @return the reference
+     * @return the ID of the assertion this references
      */
-    @Nullable String getReference();
+    @Deprecated(forRemoval=true, since="4.0.0")
+    @Nullable default String getReference() {
+        DeprecationSupport.warn(ObjectType.METHOD, "getReference", AssertionIDReference.class.toString(), "getValue");
+        return getValue();
+    }
 
     /**
-     * Set the reference.
+     * Sets the ID of the assertion this references.
      * 
-     * @param newReference the reference
+     * @param value the ID of the assertion this references
      */
-    void setReference(@Nullable final String newReference);
-    
+    @Deprecated(forRemoval=true, since="4.0.0")
+    default void setReference(@Nullable final String value) {
+        DeprecationSupport.warn(ObjectType.METHOD, "setReference", AssertionIDReference.class.toString(), "setValue");
+        setValue(value);
+    }
+
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AttributeValue.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AttributeValue.java
index aacc0c0..7571a70 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AttributeValue.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/AttributeValue.java
@@ -17,20 +17,25 @@
 
 package org.opensaml.saml.saml1.core;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
+import org.opensaml.core.xml.schema.XSAny;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
 /**
  * This interface defines how the object representing a SAML 1 <code> AttributeValue </code> element behaves.
  */
-public interface AttributeValue extends SAMLObject  {
+public interface AttributeValue extends SAMLObject, XSAny  {
 
     /** Element name, no namespace. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "AttributeValue";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "AttributeValue";
  
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME =
             new QName(SAMLConstants.SAML1_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1_PREFIX);
+
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/Audience.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/Audience.java
index da3e377..ad509c1 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/Audience.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/Audience.java
@@ -21,35 +21,50 @@
 
 package org.opensaml.saml.saml1.core;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
+import org.opensaml.core.xml.schema.XSURI;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+
 /**
  * This interface describes how an object representing a SAML1 <code>Audience</code> element will behave.
  */
-public interface Audience extends SAMLObject {
+public interface Audience extends SAMLObject, XSURI {
 
     /** Element name, no namespace. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Audience";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "Audience";
     
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME =
             new QName(SAMLConstants.SAML1_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1_PREFIX);
-
-    /** 
-     * Return the audience URI.
+    
+    /**
+     * Gets the URI of the audience for the assertion.
      * 
-     * @return the audience URI
+     * @return the URI of the audience for the assertion
      */
-    public String getUri();
+    @Deprecated(forRemoval=true, since="4.0.0")
+    @Nullable default String getUri() {
+        DeprecationSupport.warn(ObjectType.METHOD, "getUri", Audience.class.toString(), "getURI");
+        return getURI();
+    }
 
     /**
-     * Set the audience URI.
+     * Sets the URI of the audience for the assertion.
      * 
-     * @param uri the audience URI
+     * @param uri the URI of the audience for the assertion
      */
-    public void setUri(String uri);
-    
+    @Deprecated(forRemoval=true, since="4.0.0")
+    default void setUri(@Nullable final String uri) {
+        DeprecationSupport.warn(ObjectType.METHOD, "setUri", Audience.class.toString(), "setURI");
+        setURI(uri);
+    }
+
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/ConfirmationMethod.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/ConfirmationMethod.java
index 8864f67..0048d73 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/ConfirmationMethod.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/ConfirmationMethod.java
@@ -20,57 +20,68 @@
  */
 package org.opensaml.saml.saml1.core;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
+import org.opensaml.core.xml.schema.XSURI;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+
 /**
  * This interface defines how the object representing a SAML1 <code> ConfirmationMethod </code> element behaves.
  */
-public interface ConfirmationMethod extends SAMLObject {
+public interface ConfirmationMethod extends SAMLObject, XSURI {
     
     /** Element name, no namespace. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ConfirmationMethod";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "ConfirmationMethod";
     
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME =
             new QName(SAMLConstants.SAML1_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1_PREFIX);
-    
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "ConfirmationMethodType"; 
         
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME =
-            new QName(SAMLConstants.SAML1_NS, TYPE_LOCAL_NAME, SAMLConstants.SAML1_PREFIX);
-    
     /** Bearer confirmation method. */
-    public static final String METHOD_BEARER = "urn:oasis:names:tc:SAML:1.0:cm:bearer";
+    @Nonnull @NotEmpty static final String METHOD_BEARER = "urn:oasis:names:tc:SAML:1.0:cm:bearer";
 
     /** Artifact confirmation method. */
-    public static final String METHOD_ARTIFACT = "urn:oasis:names:tc:SAML:1.0:cm:artifact";
+    @Nonnull @NotEmpty static final String METHOD_ARTIFACT = "urn:oasis:names:tc:SAML:1.0:cm:artifact";
 
     /** Deprecated Artifact confirmation method. */
     @Deprecated
-    public static final String METHOD_ARTIFACT_DEPRECATED = "urn:oasis:names:tc:SAML:1.0:cm:artifact-01";
+    @Nonnull @NotEmpty static final String METHOD_ARTIFACT_DEPRECATED = "urn:oasis:names:tc:SAML:1.0:cm:artifact-01";
     
     /** Holder of Key confirmation method. */
-    public static final String METHOD_HOLDER_OF_KEY = "urn:oasis:names:tc:SAML:1.0:cm:holder-of-key";
+    @Nonnull @NotEmpty static final String METHOD_HOLDER_OF_KEY = "urn:oasis:names:tc:SAML:1.0:cm:holder-of-key";
 
     /** Sender-Vouches confirmation method. */
-    public static final String METHOD_SENDER_VOUCHES = "urn:oasis:names:tc:SAML:1.0:cm:sender-vouches";
+    @Nonnull @NotEmpty static final String METHOD_SENDER_VOUCHES = "urn:oasis:names:tc:SAML:1.0:cm:sender-vouches";
     
     /**
      * Gets the confirmation method.
      * 
      * @return the confirmation method
      */
-    public String getConfirmationMethod();
+    @Deprecated(forRemoval=true, since="4.0.0")
+    @Nullable default String getConfirmationMethod() {
+        DeprecationSupport.warn(ObjectType.METHOD, "getConfirmationMethod", ConfirmationMethod.class.toString(),
+                "getURI");
+        return getURI();
+    }
     
     /**
      * Sets the confirmation method.
      * 
-     * @param confirmationMethod the confirmation method
+     * @param uri the confirmation method
      */
-    public void setConfirmationMethod(String confirmationMethod);
+    @Deprecated(forRemoval=true, since="4.0.0")
+    default void setConfirmationMethod(@Nullable final String uri) {
+        DeprecationSupport.warn(ObjectType.METHOD, "setConfirmationMethod", ConfirmationMethod.class.toString(),
+                "setURI");
+        setURI(uri);
+    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/DecisionTypeEnumeration.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/DecisionTypeEnumeration.java
index 636dc8c..3fea0b4 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/DecisionTypeEnumeration.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/DecisionTypeEnumeration.java
@@ -17,34 +17,40 @@
 
 package org.opensaml.saml.saml1.core;
 
+import javax.annotation.Nonnull;
+
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
 /**
- * A type safe "enumeration" of {@link org.opensaml.saml.saml1.core.AuthorizationDecisionStatement} Decision types.
+ * A type safe enumeration of {@link AuthorizationDecisionStatement} decision types.
  */
-public final class DecisionTypeEnumeration {
-    
-    /** "Permit" decision type. */
-    public static final DecisionTypeEnumeration PERMIT = new DecisionTypeEnumeration("Permit");
-    
-    /** "Deny" decision type. */
-    public static final DecisionTypeEnumeration DENY = new DecisionTypeEnumeration("Deny");
-    
-    /** "Indeterminate" decision type. */
-    public static final DecisionTypeEnumeration INDETERMINATE = new DecisionTypeEnumeration("Indeterminate");
-    
+public enum DecisionTypeEnumeration {
+
+    /** Permit decision type. */
+    PERMIT("Permit"),
+
+    /** Deny decision type. */
+    DENY("Deny"),
+
+    /** Indeterminate decision type. */
+    INDETERMINATE("Indeterminate");
+
     /** The decision type string. */
-    private String decisionType;
-    
+    @Nonnull @NotEmpty private String decisionType;
+
     /**
-     *  Constructor.
-     *  
-     *  @param newDecisionType the decision type
+     * Constructor.
+     * 
+     * @param newDecisionType the decision type string
      */
-    protected DecisionTypeEnumeration(final String newDecisionType) {
-        this.decisionType = newDecisionType;
+    private DecisionTypeEnumeration(@Nonnull @NotEmpty final String newDecisionType) {
+        decisionType = newDecisionType;
     }
 
     /** {@inheritDoc} */
+    @Override
     public String toString() {
-        return this.decisionType;
+        return decisionType;
     }
+
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/NameIdentifier.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/NameIdentifier.java
index 902d02f..64c6873 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/NameIdentifier.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/NameIdentifier.java
@@ -19,11 +19,12 @@ package org.opensaml.saml.saml1.core;
 
 import javax.xml.namespace.QName;
 
+import org.opensaml.core.xml.schema.XSString;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
 /** Interface to define how a NameIdentifier element behaves. */
-public interface NameIdentifier extends SAMLObject {
+public interface NameIdentifier extends SAMLObject, XSString {
 
     /** Element name, no namespace. */
     public static final String DEFAULT_ELEMENT_LOCAL_NAME = "NameIdentifier";
@@ -86,18 +87,4 @@ public interface NameIdentifier extends SAMLObject {
      */
     public void setFormat(String format);
 
-    /**
-     * Gets the identifier.
-     * 
-     * @return the identifier
-     */
-    public String getValue();
-
-    /**
-     * Sets the identifier.
-     * 
-     * @param nameIdentifier the identifier.
-     */
-    public void setValue(String nameIdentifier);
-
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/StatusMessage.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/StatusMessage.java
index f42e472..9453f92 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/StatusMessage.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/StatusMessage.java
@@ -17,21 +17,26 @@
 
 package org.opensaml.saml.saml1.core;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
+import org.opensaml.core.xml.schema.XSString;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
 /**
  * This interface defines how the object representing a SAML1 <code> StatusMessage </code> element behaves. 
  */
-public interface StatusMessage extends SAMLObject {
+public interface StatusMessage extends SAMLObject, XSString {
 
     /** Element name, no namespace. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "StatusMessage";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "StatusMessage";
     
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME =
             new QName(SAMLConstants.SAML10P_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1P_PREFIX);
     
     /**
@@ -39,12 +44,19 @@ public interface StatusMessage extends SAMLObject {
      * 
      * @return  the message
      */
-    String getMessage();
+    @Deprecated(forRemoval=true, since="4.0.0")
+    @Nullable default String getMessage() {
+        return getValue();
+    }
 
     /**
      * Set the message.
      * 
-     * @param message  the message
+     * @param value  the message
      */
-    void setMessage(String message);
+    @Deprecated(forRemoval=true, since="4.0.0")
+    default void setMessage(@Nullable final String value) {
+        setValue(value);
+    }
+
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/SubjectConfirmationData.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/SubjectConfirmationData.java
index 446f88a..116a142 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/SubjectConfirmationData.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml1/core/SubjectConfirmationData.java
@@ -20,19 +20,25 @@
  */
 package org.opensaml.saml.saml1.core;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
+import org.opensaml.core.xml.schema.XSAny;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
 /**
  * This interface defines how the object representing a SAML1 <code>SubjectConfirmationData</code> element behaves.
  */
-public interface SubjectConfirmationData extends SAMLObject {
+public interface SubjectConfirmationData extends SAMLObject, XSAny {
+    
     /** Element name, no namespace. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "SubjectConfirmationData";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "SubjectConfirmationData";
     
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME =
             new QName(SAMLConstants.SAML1_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML1_PREFIX);
-}
+
+}
\ No newline at end of file
diff --git a/opensaml-saml-api/src/test/java/org/opensaml/saml/saml1/profile/SAML1ActionTestingSupport.java b/opensaml-saml-api/src/test/java/org/opensaml/saml/saml1/profile/SAML1ActionTestingSupport.java
index 63529a3..b7e7e8e 100644
--- a/opensaml-saml-api/src/test/java/org/opensaml/saml/saml1/profile/SAML1ActionTestingSupport.java
+++ b/opensaml-saml-api/src/test/java/org/opensaml/saml/saml1/profile/SAML1ActionTestingSupport.java
@@ -201,7 +201,7 @@ public class SAML1ActionTestingSupport {
         if (artifacts != null) {
             for (final String artifact : artifacts) {
                 final AssertionArtifact aa = artifactBuilder.buildObject();
-                aa.setAssertionArtifact(artifact);
+                aa.setValue(artifact);
                 request.getAssertionArtifacts().add(aa);
             }
         }
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/profile/impl/AddAudienceRestrictionToAssertions.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/profile/impl/AddAudienceRestrictionToAssertions.java
index 74ecda8..27ef68f 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/profile/impl/AddAudienceRestrictionToAssertions.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/profile/impl/AddAudienceRestrictionToAssertions.java
@@ -210,7 +210,7 @@ public class AddAudienceRestrictionToAssertions extends AbstractConditionalProfi
         for (final String audienceId : audiences) {
             log.debug("{} Adding {} as an Audience of the AudienceRestrictionCondition", getLogPrefix(), audienceId);
             final org.opensaml.saml.saml1.core.Audience audience = audienceBuilder.buildObject();
-            audience.setUri(audienceId);
+            audience.setURI(audienceId);
             condition.getAudiences().add(audience);
         }
     }
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilter.java
index 5d6c3dc..28ab01a 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilter.java
@@ -173,7 +173,7 @@ public class NameIDFormatFilter extends AbstractInitializableComponent implement
         
         for (final String format : formats) {
             final NameIDFormat nif = formatBuilder.buildObject();
-            nif.setFormat(format);
+            nif.setURI(format);
             log.info("Adding NameIDFormat '{}' to EntityDescriptor '{}'", format,
                     ((EntityDescriptor) role.getParent()).getEntityID());
             roleFormats.add(nif);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/binding/impl/SAML1ArtifactRequestIssuerHandler.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/binding/impl/SAML1ArtifactRequestIssuerHandler.java
index d26b904..99c79d6 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/binding/impl/SAML1ArtifactRequestIssuerHandler.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/binding/impl/SAML1ArtifactRequestIssuerHandler.java
@@ -86,7 +86,7 @@ public class SAML1ArtifactRequestIssuerHandler extends AbstractMessageHandler {
             return;
         }
         
-        final String artifact = request.getAssertionArtifacts().get(0).getAssertionArtifact();
+        final String artifact = request.getAssertionArtifacts().get(0).getValue();
         try {
             final SAMLArtifactMapEntry entry = artifactMap.get(artifact);
             if (entry == null) {
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionImpl.java
index 5bb7f0c..fb87171 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionImpl.java
@@ -17,22 +17,16 @@
 
 package org.opensaml.saml.saml1.core.impl;
 
-import java.util.List;
-
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.schema.impl.XSStringImpl;
 import org.opensaml.saml.saml1.core.Action;
 
 /**
- * Concrete implementation of {@link org.opensaml.saml.saml1.core.Action}.
+ * Concrete implementation of {@link Action}.
  */
-public class ActionImpl extends AbstractXMLObject implements Action {
+public class ActionImpl extends XSStringImpl implements Action {
 
     /** Place to store the namespace. */
     private String namespace;
-
-    /** Where to store the contents. */
-    private String contents;
     
     /**
      * Constructor.
@@ -57,22 +51,4 @@ public class ActionImpl extends AbstractXMLObject implements Action {
         namespace = prepareForAssignment(namespace, ns);
     }
 
-    /** {@inheritDoc} */
-    @Override
-    public String getContents() {
-        return contents;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setContents(final String c) {
-        contents = prepareForAssignment(contents, c);
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public List<XMLObject> getOrderedChildren() {
-        // No elements
-        return null;
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionMarshaller.java
index edb85cb..29745a7 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionMarshaller.java
@@ -17,18 +17,16 @@
 
 package org.opensaml.saml.saml1.core.impl;
 
-import net.shibboleth.utilities.java.support.xml.ElementSupport;
-
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;
+import org.opensaml.core.xml.schema.impl.XSStringMarshaller;
 import org.opensaml.saml.saml1.core.Action;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml1.core.Action} objects.
+ * A thread safe Marshaller for {@link Action} objects.
  */
-public class ActionMarshaller extends AbstractSAMLObjectMarshaller {
+public class ActionMarshaller extends XSStringMarshaller {
 
     /** {@inheritDoc} */
     protected void marshallAttributes(final XMLObject samlElement, final Element domElement)
@@ -40,14 +38,4 @@ public class ActionMarshaller extends AbstractSAMLObjectMarshaller {
             domElement.setAttributeNS(null, Action.NAMESPACE_ATTRIB_NAME, action.getNamespace());
         }
     }
-
-    /** {@inheritDoc} */
-    protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
-            throws MarshallingException {
-        final Action action = (Action) samlObject;
-
-        if (action.getContents() != null) {
-            ElementSupport.appendTextContent(domElement, action.getContents());
-        }
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionUnmarshaller.java
index 06d5423..caf6479 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ActionUnmarshaller.java
@@ -19,20 +19,14 @@ package org.opensaml.saml.saml1.core.impl;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.UnmarshallingException;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.opensaml.core.xml.schema.impl.XSStringUnmarshaller;
 import org.opensaml.saml.saml1.core.Action;
 import org.w3c.dom.Attr;
 
 /**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml1.core.Action} objects.
+ * A thread-safe Unmarshaller for {@link Action} objects.
  */
-public class ActionUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final Action action = (Action) samlObject;
-        action.setContents(elementContent);
-    }
+public class ActionUnmarshaller extends XSStringUnmarshaller {
 
     /** {@inheritDoc} */
     protected void processAttribute(final XMLObject samlObject, final Attr attribute) throws UnmarshallingException {
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactImpl.java
index 26b5f18..570a6c9 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactImpl.java
@@ -17,19 +17,13 @@
 
 package org.opensaml.saml.saml1.core.impl;
 
-import java.util.List;
-
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.schema.impl.XSStringImpl;
 import org.opensaml.saml.saml1.core.AssertionArtifact;
 
 /**
  * Concrete implementation if {@link org.opensaml.saml.saml1.core.AssertionArtifact}.
  */
-public class AssertionArtifactImpl extends AbstractXMLObject implements AssertionArtifact {
-
-    /** The assertion artifact. */
-    private String assertionArtifact;
+public class AssertionArtifactImpl extends XSStringImpl implements AssertionArtifact {
 
     /**
      * Constructor.
@@ -43,21 +37,4 @@ public class AssertionArtifactImpl extends AbstractXMLObject implements Assertio
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
 
-    /** {@inheritDoc} */
-    @Override
-    public String getAssertionArtifact() {
-        return assertionArtifact;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setAssertionArtifact(final String artifact) {
-        assertionArtifact = prepareForAssignment(assertionArtifact, artifact);
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactMarshaller.java
deleted file mode 100644
index a4fd73b..0000000
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactMarshaller.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.saml1.core.impl;
-
-import net.shibboleth.utilities.java.support.xml.ElementSupport;
-
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;
-import org.opensaml.saml.saml1.core.AssertionArtifact;
-import org.w3c.dom.Element;
-
-/**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml1.core.AssertionArtifact} objects.
- */
-public class AssertionArtifactMarshaller extends AbstractSAMLObjectMarshaller {
-
-    /** {@inheritDoc} */
-    protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
-            throws MarshallingException {
-        final AssertionArtifact assertionArtifact = (AssertionArtifact) samlObject;
-        if (assertionArtifact.getAssertionArtifact() != null) {
-            ElementSupport.appendTextContent(domElement, assertionArtifact.getAssertionArtifact());
-        }
-    }
-}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactUnmarshaller.java
deleted file mode 100644
index e9c7729..0000000
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactUnmarshaller.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.saml1.core.impl;
-
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
-import org.opensaml.saml.saml1.core.AssertionArtifact;
-
-/**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml1.core.AssertionArtifact} objects.
- */
-public class AssertionArtifactUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final AssertionArtifact assertionArtifact = (AssertionArtifact) samlObject;
-
-        assertionArtifact.setAssertionArtifact(elementContent);
-    }
-}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceImpl.java
index c4bd761..11e28b4 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceImpl.java
@@ -17,19 +17,13 @@
 
 package org.opensaml.saml.saml1.core.impl;
 
-import java.util.List;
-
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.schema.impl.XSStringImpl;
 import org.opensaml.saml.saml1.core.AssertionIDReference;
 
 /**
- * Concrete Implementation of {@link org.opensaml.saml.saml1.core.AssertionIDReference} Object.
+ * Concrete Implementation of {@link AssertionIDReference} Object.
  */
-public class AssertionIDReferenceImpl extends AbstractXMLObject implements AssertionIDReference {
-
-    /** String to contain the ncName. */
-    private String ncName;
+public class AssertionIDReferenceImpl extends XSStringImpl implements AssertionIDReference {
 
     /**
      * Constructor.
@@ -42,20 +36,5 @@ public class AssertionIDReferenceImpl extends AbstractXMLObject implements Asser
             final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-
-    /** {@inheritDoc} */
-    public String getReference() {
-        return ncName;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setReference(final String name) {
-        ncName = prepareForAssignment(ncName, name);
-    }
-
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceMarshaller.java
deleted file mode 100644
index b30edd1..0000000
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceMarshaller.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.saml1.core.impl;
-
-import net.shibboleth.utilities.java.support.xml.ElementSupport;
-
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;
-import org.opensaml.saml.saml1.core.AssertionIDReference;
-import org.w3c.dom.Element;
-
-/**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml1.core.AssertionIDReference} objects.
- */
-public class AssertionIDReferenceMarshaller extends AbstractSAMLObjectMarshaller {
-
-    /** {@inheritDoc} */
-    protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
-            throws MarshallingException {
-        final AssertionIDReference assertionIDReference = (AssertionIDReference) samlObject;
-        if (assertionIDReference.getReference() != null) {
-            ElementSupport.appendTextContent(domElement, assertionIDReference.getReference());
-        }
-    }
-}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceUnmarshaller.java
deleted file mode 100644
index dc349d8..0000000
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceUnmarshaller.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.saml1.core.impl;
-
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
-import org.opensaml.saml.saml1.core.AssertionIDReference;
-
-/** A thread-safe Unmarshaller for {@link org.opensaml.saml.saml1.core.AssertionIDReference} objects. */
-public class AssertionIDReferenceUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final AssertionIDReference assertionIDReference = (AssertionIDReference) samlObject;
-
-        assertionIDReference.setReference(elementContent);
-    }
-}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AttributeValueBuilder.java
similarity index 55%
rename from opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceMarshaller.java
rename to opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AttributeValueBuilder.java
index 51364f7..3c1b3a2 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AttributeValueBuilder.java
@@ -15,26 +15,31 @@
  * limitations under the License.
  */
 
-package org.opensaml.saml.saml1.core.impl;
+/**
+ * 
+ */
 
-import net.shibboleth.utilities.java.support.xml.ElementSupport;
+package org.opensaml.saml.saml1.core.impl;
 
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;
-import org.opensaml.saml.saml1.core.Audience;
-import org.w3c.dom.Element;
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+import org.opensaml.saml.common.xml.SAMLConstants;
+import org.opensaml.saml.saml1.core.AttributeValue;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml1.core.Audience} objects.
+ * Builder for {@link AttributeValue} objects.
  */
-public class AudienceMarshaller extends AbstractSAMLObjectMarshaller {
+public class AttributeValueBuilder extends AbstractSAMLObjectBuilder<AttributeValue> {
 
     /** {@inheritDoc} */
-    protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
-            throws MarshallingException {
-        final Audience audience = (Audience) samlObject;
+    public AttributeValue buildObject() {
+        return buildObject(SAMLConstants.SAML20_NS, AttributeValue.DEFAULT_ELEMENT_LOCAL_NAME,
+                SAMLConstants.SAML20_PREFIX);
+    }
 
-        ElementSupport.appendTextContent(domElement, audience.getUri());
+    /** {@inheritDoc} */
+    public AttributeValue buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new AttributeValueImpl(namespaceURI, localName, namespacePrefix);
     }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AttributeValueImpl.java
similarity index 60%
copy from opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java
copy to opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AttributeValueImpl.java
index 0f0f053..a97b594 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AttributeValueImpl.java
@@ -15,21 +15,22 @@
  * limitations under the License.
  */
 
+/**
+ * 
+ */
+
 package org.opensaml.saml.saml1.core.impl;
 
-import java.util.List;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.saml1.core.Audience;
+import org.opensaml.core.xml.schema.impl.XSAnyImpl;
+import org.opensaml.saml.saml1.core.AttributeValue;
 
 /**
- * Concrete class implementation of {@link org.opensaml.saml.saml1.core.Audience}.
+ * A concrete implementation of {@link AttributeValue}.
  */
-public class AudienceImpl extends AbstractXMLObject implements Audience {
-
-    /** String to hold the URI. */
-    private String uri;
+public class AttributeValueImpl extends XSAnyImpl implements AttributeValue {
 
     /**
      * Constructor.
@@ -38,23 +39,9 @@ public class AudienceImpl extends AbstractXMLObject implements Audience {
      * @param elementLocalName the local name of the XML element this Object represents
      * @param namespacePrefix the prefix for the given namespace
      */
-    protected AudienceImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+    protected AttributeValueImpl(@Nullable final String namespaceURI, @Nonnull final String elementLocalName,
+            @Nullable final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
 
-    /** {@inheritDoc} */
-    public String getUri() {
-        return uri;
-    }
-
-    /** {@inheritDoc} */
-    public void setUri(final String s) {
-
-        uri = prepareForAssignment(uri, s);
-    }
-
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java
index 0f0f053..3893cf9 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java
@@ -17,19 +17,13 @@
 
 package org.opensaml.saml.saml1.core.impl;
 
-import java.util.List;
-
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.schema.impl.XSURIImpl;
 import org.opensaml.saml.saml1.core.Audience;
 
 /**
- * Concrete class implementation of {@link org.opensaml.saml.saml1.core.Audience}.
+ * Concrete class implementation of {@link Audience}.
  */
-public class AudienceImpl extends AbstractXMLObject implements Audience {
-
-    /** String to hold the URI. */
-    private String uri;
+public class AudienceImpl extends XSURIImpl implements Audience {
 
     /**
      * Constructor.
@@ -41,20 +35,5 @@ public class AudienceImpl extends AbstractXMLObject implements Audience {
     protected AudienceImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-
-    /** {@inheritDoc} */
-    public String getUri() {
-        return uri;
-    }
-
-    /** {@inheritDoc} */
-    public void setUri(final String s) {
-
-        uri = prepareForAssignment(uri, s);
-    }
-
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceUnmarshaller.java
deleted file mode 100644
index c5e9797..0000000
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceUnmarshaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.saml1.core.impl;
-
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
-import org.opensaml.saml.saml1.core.Audience;
-
-/**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml1.core.Audience} objects.
- */
-public class AudienceUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final Audience audience = (Audience) samlObject;
-        audience.setUri(elementContent);
-    }
-}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AuthorizationDecisionStatementUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AuthorizationDecisionStatementUnmarshaller.java
index 7f17023..651e376 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AuthorizationDecisionStatementUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AuthorizationDecisionStatementUnmarshaller.java
@@ -23,8 +23,6 @@ import org.opensaml.saml.saml1.core.Action;
 import org.opensaml.saml.saml1.core.AuthorizationDecisionStatement;
 import org.opensaml.saml.saml1.core.DecisionTypeEnumeration;
 import org.opensaml.saml.saml1.core.Evidence;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.w3c.dom.Attr;
 
 /**
@@ -32,9 +30,6 @@ import org.w3c.dom.Attr;
  */
 public class AuthorizationDecisionStatementUnmarshaller extends SubjectStatementUnmarshaller {
 
-    /** Logger. */
-    private final Logger log = LoggerFactory.getLogger(AuthorizationDecisionStatementUnmarshaller.class);
-
     /** {@inheritDoc} */
     protected void processChildElement(final XMLObject parentSAMLObject, final XMLObject childSAMLObject)
             throws UnmarshallingException {
@@ -59,16 +54,16 @@ public class AuthorizationDecisionStatementUnmarshaller extends SubjectStatement
 
         if (attribute.getNamespaceURI() == null) {
             if (AuthorizationDecisionStatement.DECISION_ATTRIB_NAME.equals(attribute.getLocalName())) {
-                final String value = attribute.getValue();
-                if (value.equals(DecisionTypeEnumeration.PERMIT.toString())) {
-                    authorizationDecisionStatement.setDecision(DecisionTypeEnumeration.PERMIT);
-                } else if (value.equals(DecisionTypeEnumeration.DENY.toString())) {
-                    authorizationDecisionStatement.setDecision(DecisionTypeEnumeration.DENY);
-                } else if (value.equals(DecisionTypeEnumeration.INDETERMINATE.toString())) {
-                    authorizationDecisionStatement.setDecision(DecisionTypeEnumeration.INDETERMINATE);
-                } else {
-                    log.error("Unknown value for DecisionType '" + value + "'");
-                    throw new UnmarshallingException("Unknown value for DecisionType '" + value + "'");
+                try {
+                    if (attribute.getValue() != null) {
+                        authorizationDecisionStatement.setDecision(
+                                DecisionTypeEnumeration.valueOf(attribute.getValue().toUpperCase()));
+                    } else {
+                        throw new UnmarshallingException("Saw an empty value for Decision attribute");
+                    }
+                } catch (final IllegalArgumentException e) {
+                    throw new UnmarshallingException("Saw an invalid value for Decision attribute: "
+                            + attribute.getValue());
                 }
             } else if (AuthorizationDecisionStatement.RESOURCE_ATTRIB_NAME.equals(attribute.getLocalName())) {
                 authorizationDecisionStatement.setResource(attribute.getValue());
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodImpl.java
index 5196704..97d66d0 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodImpl.java
@@ -17,19 +17,13 @@
 
 package org.opensaml.saml.saml1.core.impl;
 
-import java.util.List;
-
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.schema.impl.XSURIImpl;
 import org.opensaml.saml.saml1.core.ConfirmationMethod;
 
 /**
- * Concrete Implementation of the {@link org.opensaml.saml.saml1.core.ConfirmationMethod} interface.
+ * Concrete Implementation of the {@link ConfirmationMethod} interface.
  */
-public class ConfirmationMethodImpl extends AbstractXMLObject implements ConfirmationMethod {
-
-    /** Contains the content string. */
-    private String confirmationMethod;
+public class ConfirmationMethodImpl extends XSURIImpl implements ConfirmationMethod {
 
     /**
      * Constructor.
@@ -42,19 +36,5 @@ public class ConfirmationMethodImpl extends AbstractXMLObject implements Confirm
             final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-
-    /** {@inheritDoc} */
-    public String getConfirmationMethod() {
-        return confirmationMethod;
-    }
-
-    /** {@inheritDoc} */
-    public void setConfirmationMethod(final String method) {
-        confirmationMethod = prepareForAssignment(confirmationMethod, method);
-    }
-
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodUnmarshaller.java
deleted file mode 100644
index f516dc4..0000000
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodUnmarshaller.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.saml1.core.impl;
-
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
-import org.opensaml.saml.saml1.core.ConfirmationMethod;
-
-/**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml1.core.ConfirmationMethod} objects.
- */
-public class ConfirmationMethodUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final ConfirmationMethod confirmationMethod = (ConfirmationMethod) samlObject;
-
-        confirmationMethod.setConfirmationMethod(elementContent);
-    }
-}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierImpl.java
index 3fa7312..8b664ee 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierImpl.java
@@ -17,16 +17,13 @@
 
 package org.opensaml.saml.saml1.core.impl;
 
-import java.util.List;
-
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.schema.impl.XSStringImpl;
 import org.opensaml.saml.saml1.core.NameIdentifier;
 
 /**
- * Complete implementation of {@link org.opensaml.saml.saml1.core.NameIdentifier}.
+ * Complete implementation of {@link NameIdentifier}.
  */
-public class NameIdentifierImpl extends AbstractXMLObject implements NameIdentifier {
+public class NameIdentifierImpl extends XSStringImpl implements NameIdentifier {
 
     /** Contents of the NameQualifierAttribute. */
     private String nameQualifier;
@@ -34,9 +31,6 @@ public class NameIdentifierImpl extends AbstractXMLObject implements NameIdentif
     /** Contents of the Format. */
     private String format;
 
-    /** Contents of the element body. */
-    private String nameIdentifier;
-
     /**
      * Constructor.
      * 
@@ -58,11 +52,6 @@ public class NameIdentifierImpl extends AbstractXMLObject implements NameIdentif
     public String getFormat() {
         return this.format;
     }
-
-    /** {@inheritDoc} */
-    public String getValue() {
-        return nameIdentifier;
-    }
     
     /** {@inheritDoc} */
     public void setNameQualifier(final String qualifier) {
@@ -74,13 +63,4 @@ public class NameIdentifierImpl extends AbstractXMLObject implements NameIdentif
         format = prepareForAssignment(format, fmt);
     }
 
-    /** {@inheritDoc} */
-    public void setValue(final String id) {
-        nameIdentifier = prepareForAssignment(nameIdentifier, id);
-    }
-
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierMarshaller.java
index 9304561..4460e56 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierMarshaller.java
@@ -17,18 +17,16 @@
 
 package org.opensaml.saml.saml1.core.impl;
 
-import net.shibboleth.utilities.java.support.xml.ElementSupport;
-
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;
+import org.opensaml.core.xml.schema.impl.XSStringMarshaller;
 import org.opensaml.saml.saml1.core.NameIdentifier;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml1.core.NameIdentifier} objects.
+ * A thread safe Marshaller for {@link NameIdentifier} objects.
  */
-public class NameIdentifierMarshaller extends AbstractSAMLObjectMarshaller {
+public class NameIdentifierMarshaller extends XSStringMarshaller {
 
     /** {@inheritDoc} */
     protected void marshallAttributes(final XMLObject samlElement, final Element domElement)
@@ -44,14 +42,5 @@ public class NameIdentifierMarshaller extends AbstractSAMLObjectMarshaller {
             domElement.setAttributeNS(null, NameIdentifier.FORMAT_ATTRIB_NAME, nameIdentifier.getFormat());
         }
     }
-
-    /** {@inheritDoc} */
-    protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
-            throws MarshallingException {
-        final NameIdentifier nameIdentifier = (NameIdentifier) samlObject;
-
-        if (nameIdentifier.getValue() != null) {
-            ElementSupport.appendTextContent(domElement, nameIdentifier.getValue());
-        }
-    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierUnmarshaller.java
index 02d721a..7f14b1d 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/NameIdentifierUnmarshaller.java
@@ -19,14 +19,14 @@ package org.opensaml.saml.saml1.core.impl;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.UnmarshallingException;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.opensaml.core.xml.schema.impl.XSStringUnmarshaller;
 import org.opensaml.saml.saml1.core.NameIdentifier;
 import org.w3c.dom.Attr;
 
 /**
- * A thread safe Unmarshaller for {@link org.opensaml.saml.saml1.core.NameIdentifier} objects.
+ * A thread safe Unmarshaller for {@link NameIdentifier} objects.
  */
-public class NameIdentifierUnmarshaller extends AbstractSAMLObjectUnmarshaller {
+public class NameIdentifierUnmarshaller extends XSStringUnmarshaller {
 
     /** {@inheritDoc} */
     protected void processAttribute(final XMLObject samlObject, final Attr attribute) throws UnmarshallingException {
@@ -44,11 +44,5 @@ public class NameIdentifierUnmarshaller extends AbstractSAMLObjectUnmarshaller {
             super.processAttribute(samlObject, attribute);
         }
     }
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final NameIdentifier nameIdentifier = (NameIdentifier) samlObject;
-        nameIdentifier.setValue(elementContent);
-    }
     
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageImpl.java
index 89f88ad..2ec63f5 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageImpl.java
@@ -17,21 +17,13 @@
 
 package org.opensaml.saml.saml1.core.impl;
 
-import java.util.List;
-
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.schema.impl.XSStringImpl;
 import org.opensaml.saml.saml1.core.StatusMessage;
 
 /**
- * Concrete implementation of org.opensaml.saml.saml1.core StatusMessage object.
+ * Concrete implementation of {@link StatusMessage} object.
  */
-public class StatusMessageImpl extends AbstractXMLObject implements StatusMessage {
-
-    /**
-     * Contents of the element.
-     */
-    private String message;
+public class StatusMessageImpl extends XSStringImpl implements StatusMessage {
 
     /**
      * Constructor.
@@ -44,19 +36,5 @@ public class StatusMessageImpl extends AbstractXMLObject implements StatusMessag
             final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-
-    /** {@inheritDoc} */
-    public String getMessage() {
-        return message;
-    }
-
-    /** {@inheritDoc} */
-    public void setMessage(final String msg) {
-        message = prepareForAssignment(message, msg);
-    }
-
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageMarshaller.java
deleted file mode 100644
index 1ff4db8..0000000
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageMarshaller.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.saml1.core.impl;
-
-import net.shibboleth.utilities.java.support.xml.ElementSupport;
-
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;
-import org.opensaml.saml.saml1.core.StatusMessage;
-import org.w3c.dom.Element;
-
-/**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml1.core.StatusMessage} objects.
- */
-public class StatusMessageMarshaller extends AbstractSAMLObjectMarshaller {
-    /** {@inheritDoc} */
-    protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
-            throws MarshallingException {
-        final StatusMessage statusMessage = (StatusMessage) samlObject;
-
-        if (statusMessage.getMessage() != null) {
-            ElementSupport.appendTextContent(domElement, statusMessage.getMessage());
-        }
-    }
-}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageUnmarshaller.java
deleted file mode 100644
index 47087d5..0000000
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/StatusMessageUnmarshaller.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.saml1.core.impl;
-
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
-import org.opensaml.saml.saml1.core.StatusMessage;
-
-/**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml1.core.StatusMessage} objects.
- */
-public class StatusMessageUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final StatusMessage statusMessage = (StatusMessage) samlObject;
-        statusMessage.setMessage(elementContent);
-    }
-}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/SubjectConfirmationDataBuilder.java
similarity index 53%
rename from opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodMarshaller.java
rename to opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/SubjectConfirmationDataBuilder.java
index cf16404..9fdf129 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/SubjectConfirmationDataBuilder.java
@@ -15,26 +15,31 @@
  * limitations under the License.
  */
 
-package org.opensaml.saml.saml1.core.impl;
+/**
+ * 
+ */
 
-import net.shibboleth.utilities.java.support.xml.ElementSupport;
+package org.opensaml.saml.saml1.core.impl;
 
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;
-import org.opensaml.saml.saml1.core.ConfirmationMethod;
-import org.w3c.dom.Element;
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+import org.opensaml.saml.common.xml.SAMLConstants;
+import org.opensaml.saml.saml1.core.SubjectConfirmationData;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml1.core.ConfirmationMethod} objects.
+ * Builder for {@link SubjectConfirmationData} objects.
  */
-public class ConfirmationMethodMarshaller extends AbstractSAMLObjectMarshaller {
+public class SubjectConfirmationDataBuilder extends AbstractSAMLObjectBuilder<SubjectConfirmationData> {
 
     /** {@inheritDoc} */
-    protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
-            throws MarshallingException {
-        final ConfirmationMethod confirmationMethod = (ConfirmationMethod) samlObject;
+    public SubjectConfirmationData buildObject() {
+        return buildObject(SAMLConstants.SAML20_NS, SubjectConfirmationData.DEFAULT_ELEMENT_LOCAL_NAME,
+                SAMLConstants.SAML20_PREFIX);
+    }
 
-        ElementSupport.appendTextContent(domElement, confirmationMethod.getConfirmationMethod());
+    /** {@inheritDoc} */
+    public SubjectConfirmationData buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new SubjectConfirmationDataImpl(namespaceURI, localName, namespacePrefix);
     }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/SubjectConfirmationDataImpl.java
similarity index 60%
copy from opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java
copy to opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/SubjectConfirmationDataImpl.java
index 0f0f053..9775696 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/AudienceImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/core/impl/SubjectConfirmationDataImpl.java
@@ -15,21 +15,22 @@
  * limitations under the License.
  */
 
+/**
+ * 
+ */
+
 package org.opensaml.saml.saml1.core.impl;
 
-import java.util.List;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.saml1.core.Audience;
+import org.opensaml.core.xml.schema.impl.XSAnyImpl;
+import org.opensaml.saml.saml1.core.SubjectConfirmationData;
 
 /**
- * Concrete class implementation of {@link org.opensaml.saml.saml1.core.Audience}.
+ * A concrete implementation of {@link SubjectConfirmationData}.
  */
-public class AudienceImpl extends AbstractXMLObject implements Audience {
-
-    /** String to hold the URI. */
-    private String uri;
+public class SubjectConfirmationDataImpl extends XSAnyImpl implements SubjectConfirmationData {
 
     /**
      * Constructor.
@@ -38,23 +39,9 @@ public class AudienceImpl extends AbstractXMLObject implements Audience {
      * @param elementLocalName the local name of the XML element this Object represents
      * @param namespacePrefix the prefix for the given namespace
      */
-    protected AudienceImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+    protected SubjectConfirmationDataImpl(@Nullable final String namespaceURI, @Nonnull final String elementLocalName,
+            @Nullable final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
 
-    /** {@inheritDoc} */
-    public String getUri() {
-        return uri;
-    }
-
-    /** {@inheritDoc} */
-    public void setUri(final String s) {
-
-        uri = prepareForAssignment(uri, s);
-    }
-
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponse.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponse.java
index d999d73..91cfbe2 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponse.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponse.java
@@ -273,7 +273,7 @@ public class AddStatusToResponse extends AbstractProfileAction {
                 XMLObjectProviderRegistrySupport.getBuilderFactory().<StatusMessage>getBuilderOrThrow(
                         StatusMessage.DEFAULT_ELEMENT_NAME);
         final StatusMessage sm = statusMessageBuilder.buildObject();
-        sm.setMessage(message);
+        sm.setValue(message);
         status.setStatusMessage(sm);
     }
     
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddSubjectConfirmationToSubjects.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddSubjectConfirmationToSubjects.java
index af63f7c..596287c 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddSubjectConfirmationToSubjects.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddSubjectConfirmationToSubjects.java
@@ -192,7 +192,7 @@ public class AddSubjectConfirmationToSubjects extends AbstractProfileAction {
 // Checkstyle: ModifiedControlVariable ON
             }
             final ConfirmationMethod newMethod = confirmationMethodBuilder.buildObject();
-            newMethod.setConfirmationMethod(method);
+            newMethod.setURI(method);
             confirmation.getConfirmationMethods().add(newMethod);
         }
         
@@ -247,7 +247,7 @@ public class AddSubjectConfirmationToSubjects extends AbstractProfileAction {
         
         for (final ConfirmationMethod method : confirmation.getConfirmationMethods()) {
             final ConfirmationMethod newMethod = confirmationMethodBuilder.buildObject();
-            newMethod.setConfirmationMethod(method.getConfirmationMethod());
+            newMethod.setURI(method.getURI());
             clone.getConfirmationMethods().add(newMethod);
         }
         
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/ResolveArtifacts.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/ResolveArtifacts.java
index d98f127..1f2834a 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/ResolveArtifacts.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/ResolveArtifacts.java
@@ -215,15 +215,15 @@ public class ResolveArtifacts extends AbstractProfileAction {
         
         try {
             for (final AssertionArtifact artifact : request.getAssertionArtifacts()) {
-                final SAMLArtifactMapEntry entry = artifactMap.get(artifact.getAssertionArtifact());
+                final SAMLArtifactMapEntry entry = artifactMap.get(artifact.getValue());
                 if (entry == null) {
                     log.warn("{} Unresolvable AssertionArtifact '{}' from relying party '{}'", getLogPrefix(),
-                            artifact.getAssertionArtifact(), requesterId);
+                            artifact.getValue(), requesterId);
                     success = false;
                     break;
                 }
                 
-                artifactMap.remove(artifact.getAssertionArtifact());
+                artifactMap.remove(artifact.getValue());
                 
                 if (!entry.getIssuerId().equals(issuerId)) {
                     log.warn("{} Artifact issuer mismatch, issued by '{}' but IdP has entityID of '{}'",
@@ -237,7 +237,7 @@ public class ResolveArtifacts extends AbstractProfileAction {
                     break;
                 } else if (!(entry.getSamlMessage() instanceof Assertion)) {
                     log.warn("{} Artifact '{}' resolved to a non-Assertion object", getLogPrefix(),
-                            artifact.getAssertionArtifact());
+                            artifact.getValue());
                     success = false;
                     break;
                 }
@@ -255,10 +255,10 @@ public class ResolveArtifacts extends AbstractProfileAction {
             // Make sure we remove everything requested.
             for (final AssertionArtifact artifact : request.getAssertionArtifacts()) {
                 try {
-                    artifactMap.remove(artifact.getAssertionArtifact());
+                    artifactMap.remove(artifact.getValue());
                 } catch (final IOException e) {
                     log.error("{} Error removing mapping for artifact '{}'", getLogPrefix(),
-                            artifact.getAssertionArtifact());
+                            artifact.getValue());
                 }
             }
             
diff --git a/opensaml-saml-impl/src/main/resources/saml1-assertion-config.xml b/opensaml-saml-impl/src/main/resources/saml1-assertion-config.xml
index 4d7778d..a81e788 100644
--- a/opensaml-saml-impl/src/main/resources/saml1-assertion-config.xml
+++ b/opensaml-saml-impl/src/main/resources/saml1-assertion-config.xml
@@ -47,8 +47,8 @@
         <!-- AssertionIDReference -->
         <ObjectProvider qualifiedName="saml1:AssertionIDReference">
             <BuilderClass className="org.opensaml.saml.saml1.core.impl.AssertionIDReferenceBuilder"/>
-            <MarshallingClass className="org.opensaml.saml.saml1.core.impl.AssertionIDReferenceMarshaller"/>
-            <UnmarshallingClass className="org.opensaml.saml.saml1.core.impl.AssertionIDReferenceUnmarshaller"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSStringMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSStringUnmarshaller"/>
         </ObjectProvider>
         
         <!-- Attribute -->
@@ -64,6 +64,13 @@
             <UnmarshallingClass className="org.opensaml.saml.saml1.core.impl.AttributeUnmarshaller"/>
         </ObjectProvider>
         
+        <!-- AttributeValue -->
+        <ObjectProvider qualifiedName="saml1:AttributeValue">
+            <BuilderClass className="org.opensaml.saml.saml1.core.impl.AttributeValueBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyUnmarshaller"/>
+        </ObjectProvider>
+        
         <!-- AttributeDesignator -->
         <ObjectProvider qualifiedName="saml1:AttributeDesignator">
             <BuilderClass className="org.opensaml.saml.saml1.core.impl.AttributeDesignatorBuilder"/>
@@ -93,8 +100,8 @@
         <!-- Audience -->
         <ObjectProvider qualifiedName="saml1:Audience">
             <BuilderClass className="org.opensaml.saml.saml1.core.impl.AudienceBuilder"/>
-            <MarshallingClass className="org.opensaml.saml.saml1.core.impl.AudienceMarshaller"/>
-            <UnmarshallingClass className="org.opensaml.saml.saml1.core.impl.AudienceUnmarshaller"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSURIMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSURIUnmarshaller"/>
         </ObjectProvider>
         
         <!-- saml1:AudienceRestrictionCondition -->
@@ -165,8 +172,8 @@
         <!-- ConfirmationMethod -->
         <ObjectProvider qualifiedName="saml1:ConfirmationMethod">
             <BuilderClass className="org.opensaml.saml.saml1.core.impl.ConfirmationMethodBuilder"/>
-            <MarshallingClass className="org.opensaml.saml.saml1.core.impl.ConfirmationMethodMarshaller"/>
-            <UnmarshallingClass className="org.opensaml.saml.saml1.core.impl.ConfirmationMethodUnmarshaller"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSURIMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSURIUnmarshaller"/>
         </ObjectProvider>
         
         <!-- DoNotCacheCondition -->
@@ -234,6 +241,13 @@
             <UnmarshallingClass className="org.opensaml.saml.saml1.core.impl.SubjectConfirmationUnmarshaller"/>
         </ObjectProvider>
 
+        <!-- SubjectConfirmationData -->
+        <ObjectProvider qualifiedName="saml1:SubjectConfirmationData">
+            <BuilderClass className="org.opensaml.saml.saml1.core.impl.SubjectConfirmationDataBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyUnmarshaller"/>
+        </ObjectProvider>
+
         <!-- SubjectLocality -->
         <ObjectProvider qualifiedName="saml1:SubjectLocality">
             <BuilderClass className="org.opensaml.saml.saml1.core.impl.SubjectLocalityBuilder"/>
diff --git a/opensaml-saml-impl/src/main/resources/saml1-protocol-config.xml b/opensaml-saml-impl/src/main/resources/saml1-protocol-config.xml
index 3edef42..a1d6a61 100644
--- a/opensaml-saml-impl/src/main/resources/saml1-protocol-config.xml
+++ b/opensaml-saml-impl/src/main/resources/saml1-protocol-config.xml
@@ -8,8 +8,8 @@
         <!-- AssertionArtifact -->
         <ObjectProvider qualifiedName="saml1p:AssertionArtifact">
             <BuilderClass className="org.opensaml.saml.saml1.core.impl.AssertionArtifactBuilder"/>
-            <MarshallingClass className="org.opensaml.saml.saml1.core.impl.AssertionArtifactMarshaller"/>
-            <UnmarshallingClass className="org.opensaml.saml.saml1.core.impl.AssertionArtifactUnmarshaller"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSStringMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSStringUnmarshaller"/>
         </ObjectProvider>
         
         <!-- AttributeQuery -->
@@ -101,8 +101,8 @@
         <!-- StatusMessage -->
         <ObjectProvider qualifiedName="saml1p:StatusMessage">
             <BuilderClass className="org.opensaml.saml.saml1.core.impl.StatusMessageBuilder"/>
-            <MarshallingClass className="org.opensaml.saml.saml1.core.impl.StatusMessageMarshaller"/>
-            <UnmarshallingClass className="org.opensaml.saml.saml1.core.impl.StatusMessageUnmarshaller"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSStringMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSStringUnmarshaller"/>
         </ObjectProvider>
 
     </ObjectProviders>
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/common/profile/impl/AddAudienceRestrictionToAssertionsTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/common/profile/impl/AddAudienceRestrictionToAssertionsTest.java
index f5dda18..c0f2bb0 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/common/profile/impl/AddAudienceRestrictionToAssertionsTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/common/profile/impl/AddAudienceRestrictionToAssertionsTest.java
@@ -94,8 +94,8 @@ public class AddAudienceRestrictionToAssertionsTest extends OpenSAMLInitBaseTest
         Assert.assertEquals(assertion.getConditions().getAudienceRestrictionConditions().size(), 1);
         final AudienceRestrictionCondition audcond = assertion.getConditions().getAudienceRestrictionConditions().get(0);
         Assert.assertEquals(audcond.getAudiences().size(), 2);
-        Assert.assertEquals(audcond.getAudiences().get(0).getUri(), AUDIENCE1);
-        Assert.assertEquals(audcond.getAudiences().get(1).getUri(), AUDIENCE2);
+        Assert.assertEquals(audcond.getAudiences().get(0).getURI(), AUDIENCE1);
+        Assert.assertEquals(audcond.getAudiences().get(1).getURI(), AUDIENCE2);
     }
 
     /**
@@ -123,8 +123,8 @@ public class AddAudienceRestrictionToAssertionsTest extends OpenSAMLInitBaseTest
         Assert.assertEquals(assertion.getConditions().getAudienceRestrictionConditions().size(), 1);
         final AudienceRestrictionCondition audcond = assertion.getConditions().getAudienceRestrictionConditions().get(0);
         Assert.assertEquals(audcond.getAudiences().size(), 2);
-        Assert.assertEquals(audcond.getAudiences().get(0).getUri(), AUDIENCE1);
-        Assert.assertEquals(audcond.getAudiences().get(1).getUri(), AUDIENCE2);
+        Assert.assertEquals(audcond.getAudiences().get(0).getURI(), AUDIENCE1);
+        Assert.assertEquals(audcond.getAudiences().get(1).getURI(), AUDIENCE2);
     }
 
     /** Test that an addition condition is not added if an assertion already contains one. */
@@ -155,8 +155,8 @@ public class AddAudienceRestrictionToAssertionsTest extends OpenSAMLInitBaseTest
         Assert.assertEquals(assertion.getConditions().getAudienceRestrictionConditions().size(), 1);
         final AudienceRestrictionCondition audcond = assertion.getConditions().getAudienceRestrictionConditions().get(0);
         Assert.assertEquals(audcond.getAudiences().size(), 2);
-        Assert.assertEquals(audcond.getAudiences().get(0).getUri(), AUDIENCE1);
-        Assert.assertEquals(audcond.getAudiences().get(1).getUri(), AUDIENCE2);
+        Assert.assertEquals(audcond.getAudiences().get(0).getURI(), AUDIENCE1);
+        Assert.assertEquals(audcond.getAudiences().get(1).getURI(), AUDIENCE2);
     }
 
     /** Test that the condition is properly added if there are multiple assertions in the response. */
@@ -179,8 +179,8 @@ public class AddAudienceRestrictionToAssertionsTest extends OpenSAMLInitBaseTest
             Assert.assertEquals(assertion.getConditions().getAudienceRestrictionConditions().size(), 1);
             final AudienceRestrictionCondition audcond = assertion.getConditions().getAudienceRestrictionConditions().get(0);
             Assert.assertEquals(audcond.getAudiences().size(), 2);
-            Assert.assertEquals(audcond.getAudiences().get(0).getUri(), AUDIENCE1);
-            Assert.assertEquals(audcond.getAudiences().get(1).getUri(), AUDIENCE2);
+            Assert.assertEquals(audcond.getAudiences().get(0).getURI(), AUDIENCE1);
+            Assert.assertEquals(audcond.getAudiences().get(1).getURI(), AUDIENCE2);
         }
     }
     
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/ActionTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/ActionTest.java
index 47c2ad7..2c77fbb 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/ActionTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/ActionTest.java
@@ -56,7 +56,7 @@ public class ActionTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         Action action = (Action) unmarshallElement(singleElementFile);
         Assert.assertNull(action.getNamespace(), "namespace attribute present");
-        Assert.assertNull(action.getContents(), "Contents present");
+        Assert.assertNull(action.getValue(), "Contents present");
     }
 
     /** {@inheritDoc} */
@@ -65,7 +65,7 @@ public class ActionTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementOptionalAttributesUnmarshall() {
         Action action = (Action) unmarshallElement(singleElementOptionalAttributesFile);
         Assert.assertEquals(action.getNamespace(), expectedNamespace, "namespace attribute ");
-        Assert.assertEquals(action.getContents(), expectedContents, "Contents ");
+        Assert.assertEquals(action.getValue(), expectedContents, "Contents ");
     }
 
     /** {@inheritDoc} */
@@ -81,7 +81,7 @@ public class ActionTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementOptionalAttributesMarshall() {
         Action action =(Action) buildXMLObject(qname);
         action.setNamespace(expectedNamespace);
-        action.setContents(expectedContents);
+        action.setValue(expectedContents);
         assertXMLEquals(expectedOptionalAttributesDOM, action);
     }
 }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactTest.java
index a153aaf..9d9820c 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AssertionArtifactTest.java
@@ -54,7 +54,7 @@ public class AssertionArtifactTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         AssertionArtifact artifact = (AssertionArtifact) unmarshallElement(singleElementFile);
         
-        Assert.assertNull(artifact.getAssertionArtifact(), "AssertionArtifact contents present");
+        Assert.assertNull(artifact.getValue(), "AssertionArtifact contents present");
     }
 
     /** {@inheritDoc} */
@@ -62,7 +62,7 @@ public class AssertionArtifactTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementOptionalAttributesUnmarshall() {
         AssertionArtifact artifact = (AssertionArtifact) unmarshallElement(singleElementOptionalAttributesFile);
         
-        Assert.assertEquals(artifact.getAssertionArtifact(), expectedAssertionArtifact, "AssertionArtifact contents present");
+        Assert.assertEquals(artifact.getValue(), expectedAssertionArtifact, "AssertionArtifact contents present");
     }
 
     /** {@inheritDoc} */
@@ -75,7 +75,7 @@ public class AssertionArtifactTest extends XMLObjectProviderBaseTestCase {
     @Test
     public void testSingleElementOptionalAttributesMarshall() {
         AssertionArtifact artifact = (AssertionArtifact) buildXMLObject(qname);
-        artifact.setAssertionArtifact(expectedAssertionArtifact);
+        artifact.setValue(expectedAssertionArtifact);
         assertXMLEquals(expectedOptionalAttributesDOM, artifact);
     }
 }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceTest.java
index 50314c5..54fc5a6 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AssertionIDReferenceTest.java
@@ -60,7 +60,7 @@ public class AssertionIDReferenceTest extends XMLObjectProviderBaseTestCase {
         assertionIDReference = (AssertionIDReference) unmarshallElement(singleElementFile);
 
         Assert.assertNull(assertionIDReference
-                .getReference(), "NCName was " + assertionIDReference.getReference() + " expected null");
+                .getValue(), "NCName was " + assertionIDReference.getValue() + " expected null");
     }
 
     /** {@inheritDoc} */
@@ -71,7 +71,7 @@ public class AssertionIDReferenceTest extends XMLObjectProviderBaseTestCase {
 
         assertionIDReference = (AssertionIDReference) unmarshallElement(singleElementOptionalAttributesFile);
 
-        Assert.assertEquals(assertionIDReference.getReference(), expectedNCName, "NCName ");
+        Assert.assertEquals(assertionIDReference.getValue(), expectedNCName, "NCName ");
     }
 
     /** {@inheritDoc} */
@@ -87,7 +87,7 @@ public class AssertionIDReferenceTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementOptionalAttributesMarshall() {
         AssertionIDReference assertionIDReference = (AssertionIDReference) buildXMLObject(qname);
 
-        assertionIDReference.setReference(expectedNCName);
+        assertionIDReference.setValue(expectedNCName);
         assertXMLEquals(expectedOptionalAttributesDOM, assertionIDReference);
     }
 }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AudienceTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AudienceTest.java
index 7fdc1b4..610cfe0 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AudienceTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/AudienceTest.java
@@ -55,7 +55,7 @@ public class AudienceTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         Audience audience = (Audience) unmarshallElement(singleElementFile);
         
-        Assert.assertNull(audience.getUri(), "Uri is non-null");
+        Assert.assertNull(audience.getURI(), "Uri is non-null");
     }
 
     /** {@inheritDoc} */
@@ -64,7 +64,7 @@ public class AudienceTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementOptionalAttributesUnmarshall() {
         Audience audience = (Audience) unmarshallElement(singleElementOptionalAttributesFile);
         
-        Assert.assertEquals(audience.getUri(), expectedUri, "Uri");
+        Assert.assertEquals(audience.getURI(), expectedUri, "Uri");
     }
 
     /** {@inheritDoc} */
@@ -80,7 +80,7 @@ public class AudienceTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementOptionalAttributesMarshall() {
         Audience audience = (Audience) buildXMLObject(qname);
         
-        audience.setUri(expectedUri);
+        audience.setURI(expectedUri);
         assertXMLEquals(expectedOptionalAttributesDOM, audience);
         
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodTest.java
index 44b2e68..bf94d97 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/ConfirmationMethodTest.java
@@ -56,7 +56,7 @@ public class ConfirmationMethodTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         ConfirmationMethod confirmationMethod = (ConfirmationMethod) unmarshallElement(singleElementFile);
         
-        Assert.assertNull(confirmationMethod.getConfirmationMethod(), "Contents of Confirmation Method");
+        Assert.assertNull(confirmationMethod.getURI(), "Contents of Confirmation Method");
 
     }
 
@@ -66,7 +66,7 @@ public class ConfirmationMethodTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementOptionalAttributesUnmarshall() {
         ConfirmationMethod confirmationMethod = (ConfirmationMethod) unmarshallElement(singleElementOptionalAttributesFile);
         
-        Assert.assertEquals(confirmationMethod.getConfirmationMethod(), expectedConfirmationMethod, "Contents of Confirmation Method");
+        Assert.assertEquals(confirmationMethod.getURI(), expectedConfirmationMethod, "Contents of Confirmation Method");
     }
 
     /** {@inheritDoc} */
@@ -81,7 +81,7 @@ public class ConfirmationMethodTest extends XMLObjectProviderBaseTestCase {
     @Test
     public void testSingleElementOptionalAttributesMarshall() {
         ConfirmationMethod confirmationMethod = (ConfirmationMethod) buildXMLObject(qname);
-        confirmationMethod.setConfirmationMethod(expectedConfirmationMethod);
+        confirmationMethod.setURI(expectedConfirmationMethod);
         
         assertXMLEquals(expectedOptionalAttributesDOM, confirmationMethod);
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/StatusMessageTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/StatusMessageTest.java
index 007074f..2c7741e 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/StatusMessageTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/core/impl/StatusMessageTest.java
@@ -55,7 +55,7 @@ public class StatusMessageTest extends XMLObjectProviderBaseTestCase {
     @Test
     public void testSingleElementUnmarshall() {
         StatusMessage statusMessage = (StatusMessage) unmarshallElement(singleElementFile);
-        Assert.assertNull(statusMessage.getMessage(), "Contents");
+        Assert.assertNull(statusMessage.getValue(), "Contents");
     }
 
     /** {@inheritDoc} */
@@ -63,7 +63,7 @@ public class StatusMessageTest extends XMLObjectProviderBaseTestCase {
     @Test
     public void testSingleElementOptionalAttributesUnmarshall() {
         StatusMessage statusMessage = (StatusMessage) unmarshallElement(singleElementOptionalAttributesFile);
-        Assert.assertEquals(statusMessage.getMessage(), contents, "Contents");
+        Assert.assertEquals(statusMessage.getValue(), contents, "Contents");
     }
 
     /** {@inheritDoc} */
@@ -79,7 +79,7 @@ public class StatusMessageTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementOptionalAttributesMarshall() {
         StatusMessage statusMessage = (StatusMessage) buildXMLObject(qname);
 
-        statusMessage.setMessage(contents);
+        statusMessage.setValue(contents);
         assertXMLEquals(expectedOptionalAttributesDOM, statusMessage);
     }
 }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponseTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponseTest.java
index 27cd478..d7c27cb 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponseTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponseTest.java
@@ -97,7 +97,7 @@ public class AddStatusToResponseTest extends OpenSAMLInitBaseTestCase {
 
         final Status status = response.getStatus();
         Assert.assertNotNull(status);
-        Assert.assertEquals(status.getStatusMessage().getMessage(), "Foo");
+        Assert.assertEquals(status.getStatusMessage().getValue(), "Foo");
     }
     
  }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/impl/AddSubjectConfirmationToSubjectsTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/impl/AddSubjectConfirmationToSubjectsTest.java
index ada049a..eec9c8c 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/impl/AddSubjectConfirmationToSubjectsTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml1/profile/impl/AddSubjectConfirmationToSubjectsTest.java
@@ -105,7 +105,7 @@ public class AddSubjectConfirmationToSubjectsTest extends OpenSAMLInitBaseTestCa
         Assert.assertNotNull(subject);
         Assert.assertNotNull(subject.getSubjectConfirmation());
         Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().size(), 1);
-        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getConfirmationMethod(),
+        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getURI(),
                 ConfirmationMethod.METHOD_BEARER);
 
         assertion = ((Response) prc.getOutboundMessageContext().getMessage()).getAssertions().get(1);
@@ -113,7 +113,7 @@ public class AddSubjectConfirmationToSubjectsTest extends OpenSAMLInitBaseTestCa
         Assert.assertNotNull(subject);
         Assert.assertNotNull(subject.getSubjectConfirmation());
         Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().size(), 1);
-        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getConfirmationMethod(),
+        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getURI(),
                 ConfirmationMethod.METHOD_BEARER);
     }
 
@@ -131,9 +131,9 @@ public class AddSubjectConfirmationToSubjectsTest extends OpenSAMLInitBaseTestCa
         Assert.assertNotNull(subject);
         Assert.assertNotNull(subject.getSubjectConfirmation());
         Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().size(), 2);
-        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getConfirmationMethod(),
+        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getURI(),
                 ConfirmationMethod.METHOD_BEARER);
-        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(1).getConfirmationMethod(),
+        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(1).getURI(),
                 ConfirmationMethod.METHOD_SENDER_VOUCHES);
 
         assertion = ((Response) prc.getOutboundMessageContext().getMessage()).getAssertions().get(1);
@@ -141,9 +141,9 @@ public class AddSubjectConfirmationToSubjectsTest extends OpenSAMLInitBaseTestCa
         Assert.assertNotNull(subject);
         Assert.assertNotNull(subject.getSubjectConfirmation());
         Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().size(), 2);
-        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getConfirmationMethod(),
+        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getURI(),
                 ConfirmationMethod.METHOD_BEARER);
-        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(1).getConfirmationMethod(),
+        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(1).getURI(),
                 ConfirmationMethod.METHOD_SENDER_VOUCHES);
     }
     
@@ -163,7 +163,7 @@ public class AddSubjectConfirmationToSubjectsTest extends OpenSAMLInitBaseTestCa
         Assert.assertNotNull(subject);
         Assert.assertNotNull(subject.getSubjectConfirmation());
         Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().size(), 1);
-        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getConfirmationMethod(),
+        Assert.assertEquals(subject.getSubjectConfirmation().getConfirmationMethods().get(0).getURI(),
                 ConfirmationMethod.METHOD_ARTIFACT);
     }
     

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


More information about the commits mailing list