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

Scott Cantor cantor.2 at osu.edu
Mon Nov 25 13:44: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=d656f51a7136c2d89823409dc8f694b8ac605697

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

commit d656f51a7136c2d89823409dc8f694b8ac605697
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Nov 25 13:44:35 2019 -0500

    OSJ-291 - Sweep SAML XMLObject interfaces for consistency
    
    https://issues.shibboleth.net/jira/browse/OSJ-291
    
    Fix up inconsistencies in core schema classes.
    Clean up String and URI-valued SAML metadata classes.
    Rely on proper XSString/XSURI subtypes.
---
 .../core/xml/io/BaseXMLObjectMarshaller.java       | 47 -------------------
 .../core/xml/io/BaseXMLObjectUnmarshaller.java     | 53 ----------------------
 .../java/org/opensaml/core/xml/schema/XSURI.java   | 28 ++++++++++--
 .../xml/schema/impl/XSBase64BinaryMarshaller.java  |  9 +---
 .../schema/impl/XSBase64BinaryUnmarshaller.java    | 18 +-------
 .../core/xml/schema/impl/XSBooleanMarshaller.java  |  7 ---
 .../xml/schema/impl/XSBooleanUnmarshaller.java     | 16 -------
 .../core/xml/schema/impl/XSDateTimeMarshaller.java |  9 ++--
 .../xml/schema/impl/XSDateTimeUnmarshaller.java    |  9 ++--
 .../core/xml/schema/impl/XSIntegerMarshaller.java  |  7 +--
 .../xml/schema/impl/XSIntegerUnmarshaller.java     | 13 ------
 .../core/xml/schema/impl/XSQNameMarshaller.java    |  7 +--
 .../core/xml/schema/impl/XSQNameUnmarshaller.java  | 12 +----
 .../core/xml/schema/impl/XSStringMarshaller.java   |  5 --
 .../core/xml/schema/impl/XSStringUnmarshaller.java | 13 ------
 .../opensaml/core/xml/schema/impl/XSURIImpl.java   | 14 +++---
 .../core/xml/schema/impl/XSURIMarshaller.java      |  9 +---
 .../core/xml/schema/impl/XSURIUnmarshaller.java    | 17 +------
 .../org/opensaml/core/xml/schema/XSURITest.java    |  4 +-
 .../saml2/metadata/AdditionalMetadataLocation.java | 38 +++++++++++-----
 .../saml/saml2/metadata/AttributeProfile.java      | 36 +++++++++------
 .../org/opensaml/saml/saml2/metadata/Company.java  | 32 +++++++------
 .../opensaml/saml/saml2/metadata/EmailAddress.java | 33 ++++++++------
 .../opensaml/saml/saml2/metadata/GivenName.java    | 27 ++++++++---
 .../saml/saml2/metadata/LocalizedName.java         | 14 +++++-
 .../opensaml/saml/saml2/metadata/LocalizedURI.java | 14 +++++-
 .../opensaml/saml/saml2/metadata/NameIDFormat.java | 33 ++++++++------
 .../saml2/metadata/OrganizationDisplayName.java    |  9 +---
 .../saml/saml2/metadata/OrganizationName.java      | 14 ++----
 .../saml/saml2/metadata/OrganizationURL.java       | 14 ++----
 .../saml/saml2/metadata/ServiceDescription.java    | 17 +++----
 .../opensaml/saml/saml2/metadata/ServiceName.java  | 19 +++-----
 .../org/opensaml/saml/saml2/metadata/SurName.java  | 26 ++++++++---
 .../saml/saml2/metadata/TelephoneNumber.java       | 26 ++++++++---
 .../ext/saml2mdquery/impl/ActionNamespaceImpl.java | 29 +-----------
 .../impl/ActionNamespaceMarshaller.java            |  4 +-
 .../impl/ActionNamespaceUnmarshaller.java          |  2 +-
 .../impl/AdditionalMetadataLocationImpl.java       | 33 +++-----------
 .../impl/AdditionalMetadataLocationMarshaller.java | 14 +++---
 .../AdditionalMetadataLocationUnmarshaller.java    | 12 ++---
 .../saml2/metadata/impl/AttributeProfileImpl.java  | 27 ++---------
 .../metadata/impl/AttributeProfileMarshaller.java  |  6 +--
 .../impl/AttributeProfileUnmarshaller.java         | 13 ++----
 .../saml/saml2/metadata/impl/CompanyImpl.java      | 26 ++---------
 .../saml2/metadata/impl/CompanyMarshaller.java     |  6 +--
 .../saml2/metadata/impl/CompanyUnmarshaller.java   | 15 ++----
 .../saml/saml2/metadata/impl/EmailAddressImpl.java | 31 ++-----------
 .../metadata/impl/EmailAddressMarshaller.java      |  6 +--
 .../metadata/impl/EmailAddressUnmarshaller.java    | 13 ++----
 .../saml/saml2/metadata/impl/GivenNameImpl.java    | 27 ++---------
 .../saml2/metadata/impl/GivenNameMarshaller.java   |  6 +--
 .../saml2/metadata/impl/GivenNameUnmarshaller.java | 13 ++----
 .../saml2/metadata/impl/LocalizedNameImpl.java     |  8 ----
 .../metadata/impl/LocalizedNameMarshaller.java     |  6 +--
 .../metadata/impl/LocalizedNameUnmarshaller.java   | 13 ++----
 .../saml/saml2/metadata/impl/LocalizedURIImpl.java |  8 ----
 .../metadata/impl/LocalizedURIMarshaller.java      |  8 ++--
 .../metadata/impl/LocalizedURIUnmarshaller.java    | 11 +----
 .../saml/saml2/metadata/impl/NameIDFormatImpl.java | 28 ++----------
 .../metadata/impl/NameIDFormatMarshaller.java      | 10 ++--
 .../metadata/impl/NameIDFormatUnmarshaller.java    | 13 ++----
 .../saml/saml2/metadata/impl/SurNameImpl.java      | 28 ++----------
 .../saml2/metadata/impl/SurNameMarshaller.java     | 11 +++--
 .../saml2/metadata/impl/SurNameUnmarshaller.java   | 13 ++----
 .../saml2/metadata/impl/TelephoneNumberImpl.java   | 28 ++----------
 .../metadata/impl/TelephoneNumberMarshaller.java   |  8 ++--
 .../metadata/impl/TelephoneNumberUnmarshaller.java | 15 ++----
 .../impl/AdditionalMetadataLocationTest.java       |  4 +-
 .../saml2/metadata/impl/AttributeProfileTest.java  |  4 +-
 .../saml/saml2/metadata/impl/CompanyTest.java      |  4 +-
 .../saml/saml2/metadata/impl/EmailAddressTest.java |  4 +-
 .../saml/saml2/metadata/impl/GivenNameTest.java    |  4 +-
 .../saml/saml2/metadata/impl/NameIDFormatTest.java |  4 +-
 .../saml2/metadata/impl/OrganizationURLTest.java   |  4 +-
 .../saml/saml2/metadata/impl/SurNameTest.java      |  4 +-
 .../saml2/metadata/impl/TelephoneNumberTest.java   |  4 +-
 .../soap/wssecurity/impl/AttributedURIImpl.java    | 16 +------
 .../wssecurity/impl/AttributedURIMarshaller.java   | 14 ++----
 .../wssecurity/impl/AttributedURIUnmarshaller.java | 11 ++---
 .../soap/wstrust/impl/KeyWrapAlgorithmImpl.java    |  6 +--
 80 files changed, 401 insertions(+), 822 deletions(-)

diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/io/BaseXMLObjectMarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/io/BaseXMLObjectMarshaller.java
deleted file mode 100644
index d748075..0000000
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/io/BaseXMLObjectMarshaller.java
+++ /dev/null
@@ -1,47 +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.core.xml.io;
-
-import javax.annotation.Nonnull;
-
-import org.opensaml.core.xml.XMLObject;
-import org.w3c.dom.Element;
-
-/**
- * Base class for {@link Marshaller} classes.
- * 
- * This base class provides no-op implementations of the methods {@link #marshallAttributes(XMLObject, Element)} and
- * {@link #marshallElementContent(XMLObject, Element)}. Developers extending this class may need to override one or
- * both of these.
- */
-public abstract class BaseXMLObjectMarshaller extends AbstractXMLObjectMarshaller {
-
-    /** {@inheritDoc} */
-    @Override
-    protected void marshallAttributes(@Nonnull final XMLObject xmlObject, @Nonnull final Element domElement)
-            throws MarshallingException {
-
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected void marshallElementContent(@Nonnull final XMLObject xmlObject, @Nonnull final Element domElement)
-            throws MarshallingException {
-
-    }
-}
\ No newline at end of file
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/io/BaseXMLObjectUnmarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/io/BaseXMLObjectUnmarshaller.java
deleted file mode 100644
index c14e4c0..0000000
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/io/BaseXMLObjectUnmarshaller.java
+++ /dev/null
@@ -1,53 +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.core.xml.io;
-
-import javax.annotation.Nonnull;
-
-import org.opensaml.core.xml.XMLObject;
-import org.w3c.dom.Attr;
-
-/**
- * Base class for {@link Unmarshaller} classes.
- * 
- * This base class provides no-op implementations of the methods {@link #processAttribute(XMLObject, Attr)},
- * {@link #processChildElement(XMLObject, XMLObject)}, and {@link #processElementContent(XMLObject, String)}.
- * Developers extending this class may need to override one or both of these.
- */
-public abstract class BaseXMLObjectUnmarshaller extends AbstractXMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    @Override
-    protected void processAttribute(@Nonnull final XMLObject xmlObject, @Nonnull final Attr attribute)
-            throws UnmarshallingException {
-
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected void processChildElement(@Nonnull final XMLObject parentXMLObject,
-            @Nonnull final XMLObject childXMLObject) throws UnmarshallingException {
-
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected void processElementContent(@Nonnull final XMLObject xmlObject, @Nonnull final String elementContent) {
-
-    }
-}
\ No newline at end of file
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/XSURI.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/XSURI.java
index b473990..6135aa3 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/XSURI.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/XSURI.java
@@ -36,18 +36,40 @@ public interface XSURI extends XMLObject {
         
     /** QName of the XSI type. */
     @Nonnull static final QName TYPE_NAME = new QName(XMLConstants.XSD_NS, TYPE_LOCAL_NAME, XMLConstants.XSD_PREFIX);
+
+    /**
+     * Gets the URI content of the element.
+     * 
+     * @return the URI content of the element
+     */
+    @Nullable String getURI();
     
     /**
+     * Sets the URI content of the element.
+     * 
+     * @param uri the URI content of the element
+     */
+    void setURI(@Nullable final String uri);
+
+    /**
      * Gets the URI content of the element.
      * 
      * @return the URI content of the element
+     * 
+     * @deprecated
      */
-    @Nullable String getValue();
+    @Nullable default String getValue() {
+        return getURI();
+    }
     
     /**
      * Sets the URI content of the element.
      * 
-     * @param newValue the URI content of the element
+     * @param uri the URI content of the element
+     * 
+     * @deprecated
      */
-    void setValue(@Nullable final String newValue);
+    default void setValue(@Nullable final String uri) {
+        setURI(uri);
+    }
 }
\ No newline at end of file
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryMarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryMarshaller.java
index d8b7dfe..d175965 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryMarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryMarshaller.java
@@ -28,19 +28,12 @@ import org.opensaml.core.xml.schema.XSBase64Binary;
 import org.w3c.dom.Element;
 
 /**
- * Thread-safe marshaller of {@link org.opensaml.core.xml.schema.XSBase64Binary} objects.
+ * Thread-safe marshaller of {@link XSBase64Binary} objects.
  */
 public class XSBase64BinaryMarshaller extends AbstractXMLObjectMarshaller {
 
     /** {@inheritDoc} */
     @Override
-    protected void marshallAttributes(@Nonnull final XMLObject xmlObject, @Nonnull final Element domElement)
-            throws MarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
-    @Override
     protected void marshallElementContent(@Nonnull final XMLObject xmlObject, @Nonnull final Element domElement)
             throws MarshallingException {
         final XSBase64Binary xsBase64Binary = (XSBase64Binary) xmlObject;
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryUnmarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryUnmarshaller.java
index e5c2938..fa709a4 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryUnmarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryUnmarshaller.java
@@ -23,31 +23,15 @@ import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller;
-import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.core.xml.schema.XSBase64Binary;
-import org.w3c.dom.Attr;
 
 /**
- * Thread-safe unmarshaller for {@link org.opensaml.core.xml.schema.XSBase64Binary} objects.
+ * Thread-safe unmarshaller for {@link XSBase64Binary} objects.
  */
 public class XSBase64BinaryUnmarshaller extends AbstractXMLObjectUnmarshaller {
 
     /** {@inheritDoc} */
     @Override
-    protected void processChildElement(@Nonnull final XMLObject parentXMLObject,
-            @Nonnull final XMLObject childXMLObject) throws UnmarshallingException {
-        // no children
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected void processAttribute(@Nonnull final XMLObject xmlObject, @Nonnull final Attr attribute)
-            throws UnmarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
-    @Override
     protected void processElementContent(@Nonnull final XMLObject xmlObject, @Nonnull final String elementContent) {
         final XSBase64Binary xsBase64Binary = (XSBase64Binary) xmlObject;
 
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanMarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanMarshaller.java
index 5b873e8..4d362d4 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanMarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanMarshaller.java
@@ -32,13 +32,6 @@ public class XSBooleanMarshaller extends AbstractXMLObjectMarshaller {
 
     /** {@inheritDoc} */
     @Override
-    protected void marshallAttributes(@Nonnull final XMLObject xmlObject, @Nonnull final Element domElement)
-            throws MarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
-    @Override
     protected void marshallElementContent(@Nonnull final XMLObject xmlObject, @Nonnull final Element domElement)
             throws MarshallingException {
         final XSBoolean xsiBoolean = (XSBoolean) xmlObject;
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanUnmarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanUnmarshaller.java
index 0c4b7b5..eb5fa4b 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanUnmarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanUnmarshaller.java
@@ -21,30 +21,14 @@ import javax.annotation.Nonnull;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller;
-import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.core.xml.schema.XSBoolean;
 import org.opensaml.core.xml.schema.XSBooleanValue;
-import org.w3c.dom.Attr;
 
 /** Thread-safe unmarshaller for {@link XSBoolean} objects. */
 public class XSBooleanUnmarshaller extends AbstractXMLObjectUnmarshaller {
 
     /** {@inheritDoc} */
     @Override
-    protected void processChildElement(@Nonnull final XMLObject parentXMLObject,
-            @Nonnull final XMLObject childXMLObject) throws UnmarshallingException {
-        // no children
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected void processAttribute(@Nonnull final XMLObject xmlObject, @Nonnull final Attr attribute)
-            throws UnmarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
-    @Override
     protected void processElementContent(@Nonnull final XMLObject xmlObject, @Nonnull final String elementContent) {
         final XSBoolean xsiBoolean = (XSBoolean) xmlObject;
         xsiBoolean.setValue(XSBooleanValue.valueOf(elementContent));
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeMarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeMarshaller.java
index 264b567..6425646 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeMarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeMarshaller.java
@@ -21,18 +21,15 @@ import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
 
 import org.opensaml.core.xml.XMLObject;
-import org.opensaml.core.xml.io.BaseXMLObjectMarshaller;
+import org.opensaml.core.xml.io.AbstractXMLObjectMarshaller;
 import org.opensaml.core.xml.io.MarshallingException;
 import org.opensaml.core.xml.schema.XSDateTime;
 import org.w3c.dom.Element;
 
 /**
- * Thread-safe marshaller of {@link org.opensaml.core.xml.schema.XSDateTime} objects.
+ * Thread-safe marshaller of {@link XSDateTime} objects.
  */
-public class XSDateTimeMarshaller extends BaseXMLObjectMarshaller {
-    
-    /** Constructor. */
-    public XSDateTimeMarshaller(){}
+public class XSDateTimeMarshaller extends AbstractXMLObjectMarshaller {
 
     /** {@inheritDoc} */
     protected void marshallElementContent(final XMLObject xmlObject, final Element domElement)
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeUnmarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeUnmarshaller.java
index 92a16e8..a106aa0 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeUnmarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeUnmarshaller.java
@@ -18,18 +18,15 @@
 package org.opensaml.core.xml.schema.impl;
 
 import org.opensaml.core.xml.XMLObject;
-import org.opensaml.core.xml.io.BaseXMLObjectUnmarshaller;
+import org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller;
 import org.opensaml.core.xml.schema.XSDateTime;
 
 import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
 
 /**
- * Thread-safe unmarshaller for {@link org.opensaml.core.xml.schema.XSDateTime} objects.
+ * Thread-safe unmarshaller for {@link XSDateTime} objects.
  */
-public class XSDateTimeUnmarshaller extends BaseXMLObjectUnmarshaller{
-    
-    /** Constructor. */
-    public XSDateTimeUnmarshaller(){}
+public class XSDateTimeUnmarshaller extends AbstractXMLObjectUnmarshaller{
 
     /** {@inheritDoc} */
     protected void processElementContent(final XMLObject xmlObject, final String elementContent) {
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerMarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerMarshaller.java
index 93cf09a..7ebee1b 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerMarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerMarshaller.java
@@ -26,16 +26,11 @@ import org.opensaml.core.xml.schema.XSInteger;
 import org.w3c.dom.Element;
 
 /**
- * Thread-safe marshaller of {@link org.opensaml.core.xml.schema.XSInteger} objects.
+ * Thread-safe marshaller of {@link XSInteger} objects.
  */
 public class XSIntegerMarshaller extends AbstractXMLObjectMarshaller {
 
     /** {@inheritDoc} */
-    protected void marshallAttributes(final XMLObject xmlObject, final Element domElement) throws MarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
     protected void marshallElementContent(final XMLObject xmlObject, final Element domElement)
             throws MarshallingException {
         final XSInteger xsiInteger = (XSInteger) xmlObject;
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerUnmarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerUnmarshaller.java
index d3d1f0e..42ef608 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerUnmarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerUnmarshaller.java
@@ -19,9 +19,7 @@ package org.opensaml.core.xml.schema.impl;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller;
-import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.core.xml.schema.XSInteger;
-import org.w3c.dom.Attr;
 
 /**
  * Thread-safe unmarshaller for {@link org.opensaml.core.xml.schema.XSInteger} objects.
@@ -29,17 +27,6 @@ import org.w3c.dom.Attr;
 public class XSIntegerUnmarshaller extends AbstractXMLObjectUnmarshaller {
 
     /** {@inheritDoc} */
-    protected void processChildElement(final XMLObject parentXMLObject, final XMLObject childXMLObject)
-            throws UnmarshallingException {
-        // no children
-    }
-
-    /** {@inheritDoc} */
-    protected void processAttribute(final XMLObject xmlObject, final Attr attribute) throws UnmarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
     protected void processElementContent(final XMLObject xmlObject, final String elementContent) {
         final XSInteger xsiInteger = (XSInteger) xmlObject;
 
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameMarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameMarshaller.java
index f4aadde..0c10530 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameMarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameMarshaller.java
@@ -27,16 +27,11 @@ import org.opensaml.core.xml.schema.XSQName;
 import org.w3c.dom.Element;
 
 /**
- * A thread-safe marshaller for {@link org.opensaml.core.xml.schema.XSQName}s.
+ * A thread-safe marshaller for {@link XSQName}s.
  */
 public class XSQNameMarshaller extends AbstractXMLObjectMarshaller {
 
     /** {@inheritDoc} */
-    protected void marshallAttributes(final XMLObject xmlObject, final Element domElement) throws MarshallingException {
-        // no attributes to marshall
-    }
-
-    /** {@inheritDoc} */
     protected void marshallElementContent(final XMLObject xmlObject, final Element domElement)
             throws MarshallingException {
         final XSQName qname = (XSQName) xmlObject;
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameUnmarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameUnmarshaller.java
index 11b364e..fe7d8ab 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameUnmarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameUnmarshaller.java
@@ -25,7 +25,6 @@ import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller;
 import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.core.xml.schema.XSQName;
-import org.w3c.dom.Attr;
 import org.w3c.dom.Text;
 
 /**
@@ -37,16 +36,7 @@ public class XSQNameUnmarshaller extends AbstractXMLObjectUnmarshaller {
     protected void processChildElement(final XMLObject parentXMLObject, final XMLObject childXMLObject)
             throws UnmarshallingException {
         // no child elements
-    }
-
-    /** {@inheritDoc} */
-    protected void processAttribute(final XMLObject xmlObject, final Attr attribute) throws UnmarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject xmlObject, final String elementContent) {
-        // handled by overriden unmarshallTextContent() directly, because we need access to the owning DOM element
+        // left this in to bypass the "ignore" logging message since we're not in fact ignoring the content
     }
 
     /** {@inheritDoc} */
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSStringMarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSStringMarshaller.java
index d1cafcf..f8600ef 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSStringMarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSStringMarshaller.java
@@ -31,11 +31,6 @@ import org.w3c.dom.Element;
 public class XSStringMarshaller extends AbstractXMLObjectMarshaller {
 
     /** {@inheritDoc} */
-    protected void marshallAttributes(final XMLObject xmlObject, final Element domElement) throws MarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
     protected void marshallElementContent(final XMLObject xmlObject, final Element domElement)
             throws MarshallingException {
         final XSString xsiString = (XSString) xmlObject;
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSStringUnmarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSStringUnmarshaller.java
index 40af87b..f81633d 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSStringUnmarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSStringUnmarshaller.java
@@ -19,9 +19,7 @@ package org.opensaml.core.xml.schema.impl;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller;
-import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.core.xml.schema.XSString;
-import org.w3c.dom.Attr;
 
 /**
  * Thread-safe unmarshaller for {@link org.opensaml.core.xml.schema.XSString} objects.
@@ -29,17 +27,6 @@ import org.w3c.dom.Attr;
 public class XSStringUnmarshaller extends AbstractXMLObjectUnmarshaller {
 
     /** {@inheritDoc} */
-    protected void processChildElement(final XMLObject parentXMLObject, final XMLObject childXMLObject)
-            throws UnmarshallingException {
-        // no children
-    }
-
-    /** {@inheritDoc} */
-    protected void processAttribute(final XMLObject xmlObject, final Attr attribute) throws UnmarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
     protected void processElementContent(final XMLObject xmlObject, final String elementContent) {
         final XSString xsiString = (XSString) xmlObject;
 
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIImpl.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIImpl.java
index 9d00f64..c9ca04c 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIImpl.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIImpl.java
@@ -17,10 +17,10 @@
 
 package org.opensaml.core.xml.schema.impl;
 
-import java.util.Collections;
-import java.util.LinkedList;
 import java.util.List;
 
+import javax.annotation.Nullable;
+
 import org.opensaml.core.xml.AbstractXMLObject;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.schema.XSURI;
@@ -31,7 +31,7 @@ import org.opensaml.core.xml.schema.XSURI;
 public class XSURIImpl extends AbstractXMLObject implements XSURI {
 
     /** URI value. */
-    private String value;
+    @Nullable private String value;
 
     /**
      * Constructor.
@@ -45,17 +45,17 @@ public class XSURIImpl extends AbstractXMLObject implements XSURI {
     }
 
     /** {@inheritDoc} */
-    public String getValue() {
+    @Nullable public String getURI() {
         return value;
     }
 
     /** {@inheritDoc} */
-    public void setValue(final String newValue) {
-        value = prepareForAssignment(value, newValue);
+    public void setURI(@Nullable final String uri) {
+        value = prepareForAssignment(value, uri);
     }
 
     /** {@inheritDoc} */
     public List<XMLObject> getOrderedChildren() {
-        return Collections.unmodifiableList(new LinkedList<XMLObject>());
+        return null;
     }
 }
\ No newline at end of file
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIMarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIMarshaller.java
index b46ff79..1aed6d7 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIMarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIMarshaller.java
@@ -26,20 +26,15 @@ import org.opensaml.core.xml.schema.XSURI;
 import org.w3c.dom.Element;
 
 /**
- * A thread-safe marshaller for {@link org.opensaml.core.xml.schema.XSURI}s.
+ * A thread-safe marshaller for {@link XSURI}.
  */
 public class XSURIMarshaller extends AbstractXMLObjectMarshaller {
 
     /** {@inheritDoc} */
-    protected void marshallAttributes(final XMLObject xmlObject, final Element domElement) throws MarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
     protected void marshallElementContent(final XMLObject xmlObject, final Element domElement)
             throws MarshallingException {
         final XSURI uri = (XSURI) xmlObject;
 
-        ElementSupport.appendTextContent(domElement, uri.getValue());
+        ElementSupport.appendTextContent(domElement, uri.getURI());
     }
 }
\ No newline at end of file
diff --git a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIUnmarshaller.java b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIUnmarshaller.java
index 10c62dd..bdf217c 100644
--- a/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIUnmarshaller.java
+++ b/opensaml-core/src/main/java/org/opensaml/core/xml/schema/impl/XSURIUnmarshaller.java
@@ -19,29 +19,16 @@ package org.opensaml.core.xml.schema.impl;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller;
-import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.core.xml.schema.XSURI;
-import org.w3c.dom.Attr;
 
 /**
- * A thread-safe unmarshaller for {@link org.opensaml.core.xml.schema.XSURI}s.
+ * A thread-safe unmarshaller for {@link XSURI}.
  */
 public class XSURIUnmarshaller extends AbstractXMLObjectUnmarshaller {
 
     /** {@inheritDoc} */
-    protected void processChildElement(final XMLObject parentXMLObject, final XMLObject childXMLObject)
-            throws UnmarshallingException {
-        // no child elements
-    }
-
-    /** {@inheritDoc} */
-    protected void processAttribute(final XMLObject xmlObject, final Attr attribute) throws UnmarshallingException {
-        // no attributes
-    }
-
-    /** {@inheritDoc} */
     protected void processElementContent(final XMLObject xmlObject, final String elementContent) {
         final XSURI uri = (XSURI) xmlObject;
-        uri.setValue(elementContent);
+        uri.setURI(elementContent);
     }
 }
\ No newline at end of file
diff --git a/opensaml-core/src/test/java/org/opensaml/core/xml/schema/XSURITest.java b/opensaml-core/src/test/java/org/opensaml/core/xml/schema/XSURITest.java
index f0b4ae5..ae35504 100644
--- a/opensaml-core/src/test/java/org/opensaml/core/xml/schema/XSURITest.java
+++ b/opensaml-core/src/test/java/org/opensaml/core/xml/schema/XSURITest.java
@@ -58,7 +58,7 @@ public class XSURITest extends XMLObjectBaseTestCase {
     public void testMarshall() throws MarshallingException, XMLParserException{
         XMLObjectBuilder<XSURI> uriBuilder = builderFactory.getBuilderOrThrow(XSURI.TYPE_NAME);
         XSURI xsURI = uriBuilder.buildObject(expectedXMLObjectQName, XSURI.TYPE_NAME);
-        xsURI.setValue(expectedValue);
+        xsURI.setURI(expectedValue);
         
         Marshaller marshaller = marshallerFactory.getMarshaller(xsURI);
         marshaller.marshall(xsURI);
@@ -82,6 +82,6 @@ public class XSURITest extends XMLObjectBaseTestCase {
         
         Assert.assertEquals(xsURI.getElementQName(), expectedXMLObjectQName, "Unexpected XSURI QName");
         Assert.assertEquals(xsURI.getSchemaType(), XSURI.TYPE_NAME, "Unexpected XSURI schema type");
-        Assert.assertEquals(expectedValue, xsURI.getValue(), "Unexpected value of XSURI");
+        Assert.assertEquals(expectedValue, xsURI.getURI(), "Unexpected value of XSURI");
     }
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/AdditionalMetadataLocation.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/AdditionalMetadataLocation.java
index 9dd7ce7..fff52b8 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/AdditionalMetadataLocation.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/AdditionalMetadataLocation.java
@@ -17,58 +17,72 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+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;
+
 /**
  * SAML 2.0 Metadata AdditionalMetadataLocation.
  */
-public interface AdditionalMetadataLocation extends SAMLObject {
+public interface AdditionalMetadataLocation extends SAMLObject, XSURI {
 
     /** Element name, no namespace. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "AdditionalMetadataLocation";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "AdditionalMetadataLocation";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "AdditionalMetadataLocationType";
+    @Nonnull @NotEmpty static final String TYPE_LOCAL_NAME = "AdditionalMetadataLocationType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME,
+    @Nonnull static final QName TYPE_NAME = new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
 
     /** "affiliationOwnerID" attribute's local name. */
-    public static final String NAMESPACE_ATTRIB_NAME = "namespace";
+    @Nonnull @NotEmpty static final String NAMESPACE_ATTRIB_NAME = "namespace";
 
     /**
      * Gets the location URI.
      * 
      * @return the location URI
+     * 
+     * @deprecated
      */
-    public String getLocationURI();
+    @Nullable default String getLocationURI() {
+        return getURI();
+    }
 
     /**
      * Sets the location URI.
      * 
-     * @param locationURI the location URI
+     * @param uri the location URI
+     * 
+     * @deprecated
      */
-    public void setLocationURI(String locationURI);
+    default void setLocationURI(@Nullable final String uri) {
+        setURI(uri);
+    }
 
     /**
      * Gets the namespace URI.
      * 
      * @return the namespace URI
      */
-    public String getNamespaceURI();
+    @Nullable String getNamespaceURI();
 
     /**
      * Sets the namespace URI.
      * 
      * @param namespaceURI the namespace URI
      */
-    public void setNamespaceURI(String namespaceURI);
-}
+    void setNamespaceURI(@Nullable final String namespaceURI);
+
+}
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/AttributeProfile.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/AttributeProfile.java
index c35b01f..ca0df21 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/AttributeProfile.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/AttributeProfile.java
@@ -17,41 +17,47 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+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;
+
 /**
  * SAML 2.0 Metadata AttributeProfile.
  */
-public interface AttributeProfile extends SAMLObject {
+public interface AttributeProfile extends SAMLObject, XSURI {
 
     /** Element name, no namespace. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "AttributeProfile";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "AttributeProfile";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
-            SAMLConstants.SAML20MD_PREFIX);
-
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "AttributeProfileType";
-
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME,
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
-
+    
     /**
      * Gets the URI of this attribute profile.
      * 
      * @return the URI of this attribute profile
+     * 
+     * @deprecated
      */
-    public String getProfileURI();
+    @Nullable default String getProfileURI() {
+        return getURI();
+    }
 
     /**
      * Sets the URI of this attribute profile.
      * 
-     * @param profileURI the URI of this attribute profile
+     * @param uri the URI of this attribute profile
+     * 
+     * @deprecated
      */
-    public void setProfileURI(String profileURI);
-}
+    default void setProfileURI(@Nullable final String uri) {
+        setURI(uri);
+    }
+}
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/Company.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/Company.java
index 08dea56..622aab8 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/Company.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/Company.java
@@ -17,41 +17,47 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+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;
+
 /**
  * SAML 2.0 Metadata Company.
  */
-public interface Company extends SAMLObject {
+public interface Company extends SAMLObject, XSString {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Company";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "Company";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
-            SAMLConstants.SAML20MD_PREFIX);
-
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "CompanyType";
-
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME,
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
 
     /**
      * Gets the name of the company.
      * 
      * @return the name of the company
+     * 
+     * @deprecated
      */
-    public String getName();
+    @Nullable default String getName() {
+        return getValue();
+    }
 
     /**
      * Sets the name of the company.
      * 
-     * @param newName the name of the company
+     * @param value the name of the company
+     * 
+     * @deprecated
      */
-    public void setName(String newName);
+    default void setName(@Nullable final String value) {
+        setValue(value);
+    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/EmailAddress.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/EmailAddress.java
index 8a3dfdf..34d8965 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/EmailAddress.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/EmailAddress.java
@@ -17,41 +17,48 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+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;
+
 /**
  * SAML 2.0 Metadata EmailAddress.
  */
-public interface EmailAddress extends SAMLObject {
+public interface EmailAddress extends SAMLObject, XSURI {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EmailAddress";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "EmailAddress";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
-            SAMLConstants.SAML20MD_PREFIX);
-
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "EmailAddressType";
-
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME,
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
 
     /**
      * Gets the email address.
      * 
      * @return the email address
+     * 
+     * @deprecated
      */
-    public String getAddress();
+    @Nullable default String getAddress() {
+        return getURI();
+    }
 
     /**
      * Sets the email address.
      * 
-     * @param address email address
+     * @param value email address
+     * 
+     * @deprecated
      */
-    public void setAddress(String address);
+    default void setAddress(@Nullable final String value) {
+        setURI(value);
+    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/GivenName.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/GivenName.java
index b4f19d9..1dedd1a 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/GivenName.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/GivenName.java
@@ -17,34 +17,47 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+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;
+
 /**
  * SAML 2.0 Metadata GivenName.
  */
-public interface GivenName extends SAMLObject {
+public interface GivenName extends SAMLObject, XSString {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "GivenName";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "GivenName";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
-            SAMLConstants.SAML20MD_PREFIX);
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
+            new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML20MD_PREFIX);
 
     /**
      * Gets the name.
      * 
      * @return the name
+     * 
+     * @deprecated
      */
-    public String getName();
+    @Nullable default String getName() {
+        return getValue();
+    }
 
     /**
      * Sets the name.
      * 
-     * @param newName the name
+     * @param value the name
+     * 
+     * @deprecated
      */
-    public void setName(String newName);
+    default void setName(@Nullable final String value) {
+        setValue(value);
+    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/LocalizedName.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/LocalizedName.java
index 47f015c..482d41b 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/LocalizedName.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/LocalizedName.java
@@ -17,9 +17,15 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+import javax.annotation.Nonnull;
+import javax.xml.namespace.QName;
+
 import org.opensaml.core.xml.LangBearing;
 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;
 
 /**
  * LocalizedName.
@@ -27,6 +33,10 @@ import org.opensaml.saml.common.SAMLObject;
 public interface LocalizedName extends XSString, LangBearing, SAMLObject {
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "localizedNameType"; 
-        
+    @Nonnull @NotEmpty static final String TYPE_LOCAL_NAME = "localizedNameType"; 
+ 
+    /** QName of the XSI type. */
+    @Nonnull static final QName TYPE_NAME = new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME,
+            SAMLConstants.SAML20MD_PREFIX);
+
 }
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/LocalizedURI.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/LocalizedURI.java
index 862b0d2..c467aeb 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/LocalizedURI.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/LocalizedURI.java
@@ -17,9 +17,15 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+import javax.annotation.Nonnull;
+import javax.xml.namespace.QName;
+
 import org.opensaml.core.xml.LangBearing;
 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;
 
 /**
  * LocalizedURI.
@@ -27,6 +33,10 @@ import org.opensaml.saml.common.SAMLObject;
 public interface LocalizedURI extends XSURI, LangBearing, SAMLObject {
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "localizedURIType"; 
-        
+    @Nonnull @NotEmpty static final String TYPE_LOCAL_NAME = "localizedURIType"; 
+
+    /** QName of the XSI type. */
+    @Nonnull static final QName TYPE_NAME = 
+        new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME, SAMLConstants.SAML20MD_PREFIX);
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/NameIDFormat.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/NameIDFormat.java
index 59445e2..09f6e49 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/NameIDFormat.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/NameIDFormat.java
@@ -17,41 +17,48 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+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;
+
 /**
  * SAML 2.0 Metadata NameIDFormat.
  */
-public interface NameIDFormat extends SAMLObject {
+public interface NameIDFormat extends SAMLObject, XSURI {
 
     /** Element name, no namespace. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "NameIDFormat";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "NameIDFormat";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
-            SAMLConstants.SAML20MD_PREFIX);
-
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "NameIDFormatType";
-
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME,
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
 
     /**
      * Gets the format of the NameID.
      * 
      * @return the format of the NameID
+     * 
+     * @deprecated
      */
-    public String getFormat();
+    @Nullable default String getFormat() {
+        return getURI();
+    }
 
     /**
      * Sets the format of the NameID.
      * 
-     * @param format the format of the NameID
+     * @param uri the format of the NameID
+     * 
+     * @deprecated
      */
-    public void setFormat(String format);
+    default void setFormat(@Nullable final String uri) {
+        setURI(uri);
+    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationDisplayName.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationDisplayName.java
index 2206e7c..dcf8760 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationDisplayName.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationDisplayName.java
@@ -33,11 +33,4 @@ public interface OrganizationDisplayName extends LocalizedName {
     public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
 
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "localizedNameType";
-
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME,
-            SAMLConstants.SAML20MD_PREFIX);
-
-}
+}
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationName.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationName.java
index 1264054..c66d8e1 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationName.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationName.java
@@ -17,27 +17,23 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.saml.common.xml.SAMLConstants;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
 /**
  * SAML 2.0 Metadata OrganizationName.
  */
 public interface OrganizationName extends LocalizedName {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "OrganizationName";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "OrganizationName";
     
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = 
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = 
         new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML20MD_PREFIX);
     
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "localizedNameType"; 
-        
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME = 
-        new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME, SAMLConstants.SAML20MD_PREFIX);
-    
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationURL.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationURL.java
index fad828f..178495d 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationURL.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/OrganizationURL.java
@@ -17,27 +17,23 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.saml.common.xml.SAMLConstants;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
 /**
  * SAML 2.0 Metadata OrganizationURL.
  */
 public interface OrganizationURL extends LocalizedURI {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "OrganizationURL";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "OrganizationURL";
     
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = 
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = 
         new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML20MD_PREFIX);
     
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "localizedURIType"; 
-        
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME = 
-        new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME, SAMLConstants.SAML20MD_PREFIX);
-    
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/ServiceDescription.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/ServiceDescription.java
index 2a677ba..e14cb08 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/ServiceDescription.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/ServiceDescription.java
@@ -17,28 +17,23 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.saml.common.xml.SAMLConstants;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
 /**
  * SAML 2.0 Metadata ServiceDescription.
  */
 public interface ServiceDescription extends LocalizedName {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ServiceDescription";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "ServiceDescription";
     
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = 
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = 
         new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML20MD_PREFIX);
-    
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "localizedNameType"; 
-        
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME = 
-        new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME, SAMLConstants.SAML20MD_PREFIX);
-    
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/ServiceName.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/ServiceName.java
index 71e3494..5da544a 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/ServiceName.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/ServiceName.java
@@ -17,30 +17,23 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.saml.common.xml.SAMLConstants;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+
 /**
  * SAML 2.0 Metadata ServiceName.
  */
 public interface ServiceName extends LocalizedName {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ServiceName";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "ServiceName";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
 
-    /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "localizedNameType";
-
-    /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20MD_NS, TYPE_LOCAL_NAME,
-            SAMLConstants.SAML20MD_PREFIX);
-
-    /** Language attribute name. */
-    public static final String LANG_ATTRIB_NAME = "lang";
-
-}
+}
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/SurName.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/SurName.java
index f67638b..b596105 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/SurName.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/SurName.java
@@ -17,34 +17,48 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+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;
+
 /**
  * SAML 2.0 Metadata SurName.
  */
-public interface SurName extends SAMLObject {
+public interface SurName extends SAMLObject, XSString {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "SurName";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "SurName";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
 
     /**
      * Gets the name.
      * 
      * @return the name
+     * 
+     * @deprecated
      */
-    public String getName();
+    @Nullable default String getName() {
+        return getValue();
+    }
 
     /**
      * Sets the name.
      * 
-     * @param newName the name
+     * @param value the name
+     * 
+     * @deprecated
      */
-    public void setName(String newName);
+    default void setName(@Nullable final String value) {
+        setValue(value);
+    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/TelephoneNumber.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/TelephoneNumber.java
index 4ad635f..fb0fa1b 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/TelephoneNumber.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/metadata/TelephoneNumber.java
@@ -17,34 +17,48 @@
 
 package org.opensaml.saml.saml2.metadata;
 
+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;
+
 /**
  * SAML 2.0 Metadata TelephoneNumber.
  */
-public interface TelephoneNumber extends SAMLObject {
+public interface TelephoneNumber extends SAMLObject, XSString {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "TelephoneNumber";
+    @Nonnull @NotEmpty static final String DEFAULT_ELEMENT_LOCAL_NAME = "TelephoneNumber";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+    @Nonnull static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20MD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
             SAMLConstants.SAML20MD_PREFIX);
 
     /**
      * Gets the telephone number.
      * 
      * @return the telephone number
+     * 
+     * @deprecated
      */
-    public String getNumber();
+    @Nullable default String getNumber() {
+        return getValue();
+    }
 
     /**
      * Sets the telephone number.
      * 
-     * @param newNumber the telephone number
+     * @param value the telephone number
+     * 
+     * @deprecated
      */
-    public void setNumber(String newNumber);
+    default void setNumber(@Nullable final String value) {
+        setValue(value);
+    }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceImpl.java
index 349ff15..56bc87c 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceImpl.java
@@ -17,19 +17,13 @@
 
 package org.opensaml.saml.ext.saml2mdquery.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.ext.saml2mdquery.ActionNamespace;
 
 /**
  * Concrete implementation of {@link ActionNamespace}.
  */
-public class ActionNamespaceImpl extends AbstractXMLObject implements ActionNamespace {
-
-    /** Action namespace value. */
-    private String value;
+public class ActionNamespaceImpl extends XSURIImpl implements ActionNamespace {
     
     /**
      * Constructor.
@@ -42,23 +36,4 @@ public class ActionNamespaceImpl extends AbstractXMLObject implements ActionName
             final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-    
-    /** {@inheritDoc} */
-    @Override
-    public String getValue() {
-        return value;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setValue(final String newValue) {
-        value = prepareForAssignment(value, newValue);
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public List<XMLObject> getOrderedChildren() {
-        // no children
-        return null;
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceMarshaller.java
index 46109fc..44aa5b8 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceMarshaller.java
@@ -37,8 +37,8 @@ public class ActionNamespaceMarshaller extends AbstractSAMLObjectMarshaller {
             throws MarshallingException {
         final ActionNamespace actionNamespace = (ActionNamespace) xmlObject;
 
-        if (!Strings.isNullOrEmpty(actionNamespace.getValue())) {
-            ElementSupport.appendTextContent(domElement, actionNamespace.getValue());
+        if (!Strings.isNullOrEmpty(actionNamespace.getURI())) {
+            ElementSupport.appendTextContent(domElement, actionNamespace.getURI());
         }
     }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceUnmarshaller.java
index 4a63451..768e1aa 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/ext/saml2mdquery/impl/ActionNamespaceUnmarshaller.java
@@ -30,6 +30,6 @@ public class ActionNamespaceUnmarshaller extends AbstractSAMLObjectUnmarshaller
     protected void processElementContent(final XMLObject samlObject, final String elementContent) {
         final ActionNamespace actionNamespace = (ActionNamespace) samlObject;
 
-        actionNamespace.setValue(elementContent);
+        actionNamespace.setURI(elementContent);
     }
 }
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationImpl.java
index 219db9b..31b6594 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationImpl.java
@@ -17,22 +17,18 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import java.util.List;
+import javax.annotation.Nullable;
 
-import org.opensaml.core.xml.AbstractXMLObject;
-import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.schema.impl.XSURIImpl;
 import org.opensaml.saml.saml2.metadata.AdditionalMetadataLocation;
 
 /**
- * Concrete implementation of {@link org.opensaml.saml.saml2.metadata.AdditionalMetadataLocation}.
+ * Concrete implementation of {@link AdditionalMetadataLocation}.
  */
-public class AdditionalMetadataLocationImpl extends AbstractXMLObject implements AdditionalMetadataLocation {
-
-    /** The metadata location. */
-    private String location;
+public class AdditionalMetadataLocationImpl extends XSURIImpl implements AdditionalMetadataLocation {
 
     /** Namespace scope of the root metadata element at the location. */
-    private String namespace;
+    @Nullable private String namespace;
 
     /**
      * Constructor.
@@ -47,28 +43,13 @@ public class AdditionalMetadataLocationImpl extends AbstractXMLObject implements
     }
 
     /** {@inheritDoc} */
-    public String getLocationURI() {
-        return location;
-    }
-
-    /** {@inheritDoc} */
-    public void setLocationURI(final String locationURI) {
-        location = prepareForAssignment(location, locationURI);
-    }
-
-    /** {@inheritDoc} */
-    public String getNamespaceURI() {
+    @Nullable public String getNamespaceURI() {
         return namespace;
     }
 
     /** {@inheritDoc} */
-    public void setNamespaceURI(final String namespaceURI) {
+    public void setNamespaceURI(@Nullable final String namespaceURI) {
         namespace = prepareForAssignment(namespace, namespaceURI);
     }
 
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        // No children for this element
-        return null;
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationMarshaller.java
index 2c121bc..e36be7d 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationMarshaller.java
@@ -19,14 +19,14 @@ package org.opensaml.saml.saml2.metadata.impl;
 
 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.XSURIMarshaller;
 import org.opensaml.saml.saml2.metadata.AdditionalMetadataLocation;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe marshaller for {@link org.opensaml.saml.saml2.metadata.AdditionalMetadataLocation} objects.
+ * A thread safe marshaller for {@link AdditionalMetadataLocation} objects.
  */
-public class AdditionalMetadataLocationMarshaller extends AbstractSAMLObjectMarshaller {
+public class AdditionalMetadataLocationMarshaller extends XSURIMarshaller {
 
     /** {@inheritDoc} */
     protected void marshallAttributes(final XMLObject samlElement, final Element domElement)
@@ -41,11 +41,11 @@ public class AdditionalMetadataLocationMarshaller extends AbstractSAMLObjectMars
     /** {@inheritDoc} */
     protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
             throws MarshallingException {
-        super.marshallElementContent(samlObject, domElement);
-
+        
         final AdditionalMetadataLocation aml = (AdditionalMetadataLocation) samlObject;
-        if (aml.getLocationURI() != null) {
-            domElement.appendChild(domElement.getOwnerDocument().createTextNode(aml.getLocationURI()));
+        if (aml.getURI() != null) {
+            domElement.appendChild(domElement.getOwnerDocument().createTextNode(aml.getURI()));
         }
     }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationUnmarshaller.java
index 909b8fb..8ca027f 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationUnmarshaller.java
@@ -19,14 +19,14 @@ package org.opensaml.saml.saml2.metadata.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.XSURIUnmarshaller;
 import org.opensaml.saml.saml2.metadata.AdditionalMetadataLocation;
 import org.w3c.dom.Attr;
 
 /**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml2.metadata.AdditionalMetadataLocation} objects.
+ * A thread-safe Unmarshaller for {@link AdditionalMetadataLocation} objects.
  */
-public class AdditionalMetadataLocationUnmarshaller extends AbstractSAMLObjectUnmarshaller {
+public class AdditionalMetadataLocationUnmarshaller extends XSURIUnmarshaller {
 
     /** {@inheritDoc} */
     protected void processAttribute(final XMLObject samlObject, final Attr attribute) throws UnmarshallingException {
@@ -39,11 +39,5 @@ public class AdditionalMetadataLocationUnmarshaller extends AbstractSAMLObjectUn
             super.processAttribute(samlObject, attribute);
         }
     }
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final AdditionalMetadataLocation aml = (AdditionalMetadataLocation) samlObject;
-        aml.setLocationURI(elementContent);
-    }
     
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileImpl.java
index c693b22..45b899f 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileImpl.java
@@ -21,19 +21,13 @@
 
 package org.opensaml.saml.saml2.metadata.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.saml2.metadata.AttributeProfile;
 
 /**
- * A concrete implementation of {@link org.opensaml.saml.saml2.metadata.AttributeProfile}.
+ * A concrete implementation of {@link AttributeProfile}.
  */
-public class AttributeProfileImpl extends AbstractXMLObject implements AttributeProfile {
-
-    /** Profile URI. */
-    private String profileURI;
+public class AttributeProfileImpl extends XSURIImpl implements AttributeProfile {
 
     /**
      * Constructor.
@@ -47,19 +41,4 @@ public class AttributeProfileImpl extends AbstractXMLObject implements Attribute
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
 
-    /** {@inheritDoc} */
-    public String getProfileURI() {
-        return profileURI;
-    }
-
-    /** {@inheritDoc} */
-    public void setProfileURI(final String theProfileURI) {
-        this.profileURI = prepareForAssignment(this.profileURI, theProfileURI);
-    }
-
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        // No Children
-        return null; 
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileMarshaller.java
index da9c4a5..dbad59a 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileMarshaller.java
@@ -30,7 +30,7 @@ import org.opensaml.saml.saml2.metadata.AttributeProfile;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml2.metadata.AttributeProfile} objects.
+ * A thread safe Marshaller for {@link AttributeProfile} objects.
  */
 public class AttributeProfileMarshaller extends AbstractSAMLObjectMarshaller {
 
@@ -38,8 +38,8 @@ public class AttributeProfileMarshaller extends AbstractSAMLObjectMarshaller {
     protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
             throws MarshallingException {
         final AttributeProfile profile = (AttributeProfile) samlObject;
-        if (profile.getProfileURI() != null) {
-            ElementSupport.appendTextContent(domElement, profile.getProfileURI());
+        if (profile.getURI() != null) {
+            ElementSupport.appendTextContent(domElement, profile.getURI());
         }
     }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileUnmarshaller.java
index 322eae5..7aae6f9 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileUnmarshaller.java
@@ -21,17 +21,12 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.opensaml.core.xml.schema.impl.XSURIUnmarshaller;
 import org.opensaml.saml.saml2.metadata.AttributeProfile;
 
 /**
- * A thread safe Unmarshaller for {@link org.opensaml.saml.saml2.metadata.AttributeProfile} objects.
+ * A thread safe Unmarshaller for {@link AttributeProfile} objects.
  */
-public class AttributeProfileUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        ((AttributeProfile) samlObject).setProfileURI(elementContent);
-    }
+public class AttributeProfileUnmarshaller extends XSURIUnmarshaller {
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyImpl.java
index d3883b1..523797f 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyImpl.java
@@ -21,19 +21,13 @@
 
 package org.opensaml.saml.saml2.metadata.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.saml2.metadata.Company;
 
 /**
- * Concrete implementation of {@link org.opensaml.saml.saml2.metadata.Company}.
+ * Concrete implementation of {@link Company}.
  */
-public class CompanyImpl extends AbstractXMLObject implements Company {
-
-    /** Company name. */
-    private String companyName;
+public class CompanyImpl extends XSStringImpl implements Company {
 
     /**
      * Constructor.
@@ -46,18 +40,4 @@ public class CompanyImpl extends AbstractXMLObject implements Company {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
 
-    /** {@inheritDoc} */
-    public String getName() {
-        return companyName;
-    }
-
-    /** {@inheritDoc} */
-    public void setName(final String newName) {
-        companyName = prepareForAssignment(companyName, newName);
-    }
-
-    /** {@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/saml2/metadata/impl/CompanyMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyMarshaller.java
index cbff3e4..9090205 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyMarshaller.java
@@ -30,7 +30,7 @@ import org.opensaml.saml.saml2.metadata.Company;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml2.metadata.Company} objects.
+ * A thread safe Marshaller for {@link Company} objects.
  */
 public class CompanyMarshaller extends AbstractSAMLObjectMarshaller {
 
@@ -39,8 +39,8 @@ public class CompanyMarshaller extends AbstractSAMLObjectMarshaller {
             throws MarshallingException {
         final Company company = (Company) samlObject;
 
-        if (company.getName() != null) {
-            ElementSupport.appendTextContent(domElement, company.getName());
+        if (company.getValue() != null) {
+            ElementSupport.appendTextContent(domElement, company.getValue());
         }
     }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyUnmarshaller.java
index 02835c2..2305944 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/CompanyUnmarshaller.java
@@ -21,19 +21,12 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.opensaml.core.xml.schema.impl.XSStringUnmarshaller;
 import org.opensaml.saml.saml2.metadata.Company;
 
 /**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml2.metadata.Company} objects.
+ * A thread-safe Unmarshaller for {@link Company} objects.
  */
-public class CompanyUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final Company company = (Company) samlObject;
-
-        company.setName(elementContent);
-    }
+public class CompanyUnmarshaller extends XSStringUnmarshaller {
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressImpl.java
index d9a94ca..fe4527e 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressImpl.java
@@ -21,19 +21,13 @@
 
 package org.opensaml.saml.saml2.metadata.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.saml2.metadata.EmailAddress;
 
 /**
- * Concrete implementation of {@link org.opensaml.saml.saml2.metadata.EmailAddress}.
+ * Concrete implementation of {@link EmailAddress}.
  */
-public class EmailAddressImpl extends AbstractXMLObject implements EmailAddress {
-
-    /** The email address. */
-    private String address;
+public class EmailAddressImpl extends XSURIImpl implements EmailAddress {
 
     /**
      * Constructor.
@@ -45,22 +39,5 @@ public class EmailAddressImpl extends AbstractXMLObject implements EmailAddress
     protected EmailAddressImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-
-    /** {@inheritDoc} */
-    @Override
-    public String getAddress() {
-        return address;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setAddress(final String addr) {
-        address = prepareForAssignment(address, addr);
-    }
-
-    /** {@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/saml2/metadata/impl/EmailAddressMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressMarshaller.java
index 4fc57dc..b06e69f 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressMarshaller.java
@@ -30,7 +30,7 @@ import org.opensaml.saml.saml2.metadata.EmailAddress;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml2.metadata.EmailAddress} objects.
+ * A thread safe Marshaller for {@link EmailAddress} objects.
  */
 public class EmailAddressMarshaller extends AbstractSAMLObjectMarshaller {
 
@@ -39,8 +39,8 @@ public class EmailAddressMarshaller extends AbstractSAMLObjectMarshaller {
             throws MarshallingException {
         final EmailAddress address = (EmailAddress) samlObject;
 
-        if (address.getAddress() != null) {
-            ElementSupport.appendTextContent(domElement, address.getAddress());
+        if (address.getURI() != null) {
+            ElementSupport.appendTextContent(domElement, address.getURI());
         }
     }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressUnmarshaller.java
index ad2de6b..1eec5d8 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressUnmarshaller.java
@@ -21,19 +21,12 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.opensaml.core.xml.schema.impl.XSURIUnmarshaller;
 import org.opensaml.saml.saml2.metadata.EmailAddress;
 
 /**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml2.metadata.EmailAddress} objects.
+ * A thread-safe Unmarshaller for {@link EmailAddress} objects.
  */
-public class EmailAddressUnmarshaller extends AbstractSAMLObjectUnmarshaller {
+public class EmailAddressUnmarshaller extends XSURIUnmarshaller {
 
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final EmailAddress address = (EmailAddress) samlObject;
-
-        address.setAddress(elementContent);
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameImpl.java
index 934dc1c..5718697 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameImpl.java
@@ -21,19 +21,13 @@
 
 package org.opensaml.saml.saml2.metadata.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.saml2.metadata.GivenName;
 
 /**
- * Concrete implementation of {@link org.opensaml.saml.saml2.metadata.GivenName}.
+ * Concrete implementation of {@link GivenName}.
  */
-public class GivenNameImpl extends AbstractXMLObject implements GivenName {
-
-    /** Given name (first name). */
-    private String name;
+public class GivenNameImpl extends XSStringImpl implements GivenName {
 
     /**
      * Constructor.
@@ -45,19 +39,4 @@ public class GivenNameImpl extends AbstractXMLObject implements GivenName {
     protected GivenNameImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-
-    /** {@inheritDoc} */
-    public String getName() {
-        return name;
-    }
-
-    /** {@inheritDoc} */
-    public void setName(final String newName) {
-        name = prepareForAssignment(name, newName);
-    }
-
-    /** {@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/saml2/metadata/impl/GivenNameMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameMarshaller.java
index 7a97539..1158ca2 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameMarshaller.java
@@ -30,7 +30,7 @@ import org.opensaml.saml.saml2.metadata.GivenName;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml2.metadata.GivenName} objects.
+ * A thread safe Marshaller for {@link GivenName} objects.
  */
 public class GivenNameMarshaller extends AbstractSAMLObjectMarshaller {
 
@@ -39,8 +39,8 @@ public class GivenNameMarshaller extends AbstractSAMLObjectMarshaller {
             throws MarshallingException {
         final GivenName name = (GivenName) samlObject;
 
-        if (name.getName() != null) {
-            ElementSupport.appendTextContent(domElement, name.getName());
+        if (name.getValue() != null) {
+            ElementSupport.appendTextContent(domElement, name.getValue());
         }
     }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameUnmarshaller.java
index f1bf296..7cd7f12 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/GivenNameUnmarshaller.java
@@ -21,19 +21,12 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.opensaml.core.xml.schema.impl.XSStringUnmarshaller;
 import org.opensaml.saml.saml2.metadata.GivenName;
 
 /**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml2.metadata.GivenName} objects.
+ * A thread-safe Unmarshaller for {@link GivenName} objects.
  */
-public class GivenNameUnmarshaller extends AbstractSAMLObjectUnmarshaller {
+public class GivenNameUnmarshaller extends XSStringUnmarshaller {
 
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final GivenName name = (GivenName) samlObject;
-
-        name.setName(elementContent);
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameImpl.java
index 2c2939a..8c93f75 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameImpl.java
@@ -17,10 +17,7 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import java.util.List;
-
 import org.opensaml.core.xml.LangBearing;
-import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.schema.impl.XSStringImpl;
 import org.opensaml.saml.saml2.metadata.LocalizedName;
 
@@ -58,11 +55,6 @@ public class LocalizedNameImpl extends XSStringImpl implements LocalizedName {
         manageQualifiedAttributeNamespace(LangBearing.XML_LANG_ATTR_NAME, hasValue);
     }
 
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
-
     /**
      * {@inheritDoc}
      */
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameMarshaller.java
index d3540eb..13ef31f 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameMarshaller.java
@@ -24,15 +24,15 @@ import net.shibboleth.utilities.java.support.xml.XMLConstants;
 import org.opensaml.core.xml.LangBearing;
 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.saml2.metadata.LocalizedName;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml2.metadata.LocalizedName} objects.
+ * A thread safe Marshaller for {@link LocalizedName} objects.
  */
-public class LocalizedNameMarshaller extends AbstractSAMLObjectMarshaller {
+public class LocalizedNameMarshaller extends XSStringMarshaller {
 
     /**
      * {@inheritDoc}
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameUnmarshaller.java
index da5f348..08aeccd 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedNameUnmarshaller.java
@@ -22,21 +22,14 @@ import net.shibboleth.utilities.java.support.xml.XMLConstants;
 import org.opensaml.core.xml.LangBearing;
 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.saml2.metadata.LocalizedName;
 import org.w3c.dom.Attr;
 
 /**
- * A thread-safe unmarshaller for {@link org.opensaml.saml.saml2.metadata.LocalizedName} objects.
+ * A thread-safe unmarshaller for {@link LocalizedName} objects.
  */
-public class LocalizedNameUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final LocalizedName name = (LocalizedName) samlObject;
-    
-        name.setValue(elementContent);
-    }
+public class LocalizedNameUnmarshaller extends XSStringUnmarshaller {
 
     /**
      * {@inheritDoc}
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIImpl.java
index cadc77b..b081a93 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIImpl.java
@@ -17,10 +17,7 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import java.util.List;
-
 import org.opensaml.core.xml.LangBearing;
-import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.schema.impl.XSURIImpl;
 import org.opensaml.saml.saml2.metadata.LocalizedURI;
 
@@ -57,11 +54,6 @@ public class LocalizedURIImpl extends XSURIImpl implements LocalizedURI {
         manageQualifiedAttributeNamespace(LangBearing.XML_LANG_ATTR_NAME, hasValue);
     }
 
-    /** {@inheritDoc} */
-    public List<XMLObject> getOrderedChildren() {
-        return null;
-    }
-
     /**
      * {@inheritDoc}
      */
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIMarshaller.java
index 417c281..ed77957 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIMarshaller.java
@@ -24,7 +24,7 @@ import net.shibboleth.utilities.java.support.xml.XMLConstants;
 import org.opensaml.core.xml.LangBearing;
 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.XSURIMarshaller;
 import org.opensaml.saml.saml2.metadata.LocalizedURI;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
@@ -32,7 +32,7 @@ import org.w3c.dom.Element;
 /**
  * A thread safe Marshaller for {@link LocalizedURI} objects.
  */
-public class LocalizedURIMarshaller extends AbstractSAMLObjectMarshaller {
+public class LocalizedURIMarshaller extends XSURIMarshaller {
 
     /**
      * {@inheritDoc}
@@ -54,8 +54,8 @@ public class LocalizedURIMarshaller extends AbstractSAMLObjectMarshaller {
             throws MarshallingException {
         final LocalizedURI name = (LocalizedURI) samlObject;
 
-        if (name.getValue() != null) {
-            ElementSupport.appendTextContent(domElement, name.getValue());
+        if (name.getURI() != null) {
+            ElementSupport.appendTextContent(domElement, name.getURI());
         }
     }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIUnmarshaller.java
index 7c00f1b..bb96110 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/LocalizedURIUnmarshaller.java
@@ -22,21 +22,14 @@ import net.shibboleth.utilities.java.support.xml.XMLConstants;
 import org.opensaml.core.xml.LangBearing;
 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.XSURIUnmarshaller;
 import org.opensaml.saml.saml2.metadata.LocalizedURI;
 import org.w3c.dom.Attr;
 
 /**
  * A thread-safe unmarshaller for {@link LocalizedURI} objects.
  */
-public class LocalizedURIUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final LocalizedURI name = (LocalizedURI) samlObject;
-    
-        name.setValue(elementContent);
-    }
+public class LocalizedURIUnmarshaller extends XSURIUnmarshaller {
 
     /**
      * {@inheritDoc}
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatImpl.java
index de803c9..bba29ff 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatImpl.java
@@ -21,19 +21,13 @@
 
 package org.opensaml.saml.saml2.metadata.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.saml2.metadata.NameIDFormat;
 
 /**
- * Concrete implementation of {@link org.opensaml.saml.saml2.metadata.NameIDFormat}.
+ * Concrete implementation of {@link NameIDFormat}.
  */
-public class NameIDFormatImpl extends AbstractXMLObject implements NameIDFormat {
-
-    /** NameID format. */
-    private String format;
+public class NameIDFormatImpl extends XSURIImpl implements NameIDFormat {
 
     /**
      * Constructor.
@@ -46,19 +40,5 @@ public class NameIDFormatImpl extends AbstractXMLObject implements NameIDFormat
     protected NameIDFormatImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-
-    /** {@inheritDoc} */
-    public String getFormat() {
-        return format;
-    }
-
-    /** {@inheritDoc} */
-    public void setFormat(final String newFormat) {
-        this.format = prepareForAssignment(this.format, newFormat);
-    }
-
-    /** {@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/saml2/metadata/impl/NameIDFormatMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatMarshaller.java
index a6204ca..4f3be48 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatMarshaller.java
@@ -25,22 +25,22 @@ 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.XSURIMarshaller;
 import org.opensaml.saml.saml2.metadata.NameIDFormat;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml2.metadata.NameIDFormat} objects.
+ * A thread safe Marshaller for {@link NameIDFormat} objects.
  */
-public class NameIDFormatMarshaller extends AbstractSAMLObjectMarshaller {
+public class NameIDFormatMarshaller extends XSURIMarshaller {
 
     /** {@inheritDoc} */
     protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
             throws MarshallingException {
         final NameIDFormat format = (NameIDFormat) samlObject;
 
-        if (format.getFormat() != null) {
-            ElementSupport.appendTextContent(domElement, format.getFormat());
+        if (format.getURI() != null) {
+            ElementSupport.appendTextContent(domElement, format.getURI());
         }
     }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatUnmarshaller.java
index 1fb900a..860afba 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatUnmarshaller.java
@@ -21,19 +21,12 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.opensaml.core.xml.schema.impl.XSURIUnmarshaller;
 import org.opensaml.saml.saml2.metadata.NameIDFormat;
 
 /**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml2.metadata.NameIDFormat} objects.
+ * A thread-safe Unmarshaller for {@link NameIDFormat} objects.
  */
-public class NameIDFormatUnmarshaller extends AbstractSAMLObjectUnmarshaller {
+public class NameIDFormatUnmarshaller extends XSURIUnmarshaller {
 
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final NameIDFormat format = (NameIDFormat) samlObject;
-
-        format.setFormat(elementContent);
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameImpl.java
index 18509fd..9ee4245 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameImpl.java
@@ -21,19 +21,13 @@
 
 package org.opensaml.saml.saml2.metadata.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.saml2.metadata.SurName;
 
 /**
- * Concrete implementation of {@link org.opensaml.saml.saml2.metadata.SurName}.
+ * Concrete implementation of {@link SurName}.
  */
-public class SurNameImpl extends AbstractXMLObject implements SurName {
-
-    /** Service name. */
-    private String name;
+public class SurNameImpl extends XSStringImpl implements SurName {
 
     /**
      * Constructor.
@@ -45,19 +39,5 @@ public class SurNameImpl extends AbstractXMLObject implements SurName {
     protected SurNameImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-
-    /** {@inheritDoc} */
-    public String getName() {
-        return name;
-    }
-
-    /** {@inheritDoc} */
-    public void setName(final String newName) {
-        name = prepareForAssignment(name, newName);
-    }
-
-    /** {@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/saml2/metadata/impl/SurNameMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameMarshaller.java
index 98fb3c2..6fb74ed 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameMarshaller.java
@@ -25,22 +25,23 @@ 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.saml2.metadata.SurName;
 import org.w3c.dom.Element;
 
 /**
- * A thread safe Marshaller for {@link org.opensaml.saml.saml2.metadata.SurName} objects.
+ * A thread safe Marshaller for {@link SurName} objects.
  */
-public class SurNameMarshaller extends AbstractSAMLObjectMarshaller {
+public class SurNameMarshaller extends XSStringMarshaller {
 
     /** {@inheritDoc} */
     protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
             throws MarshallingException {
         final SurName name = (SurName) samlObject;
 
-        if (name.getName() != null) {
-            ElementSupport.appendTextContent(domElement, name.getName());
+        if (name.getValue() != null) {
+            ElementSupport.appendTextContent(domElement, name.getValue());
         }
     }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameUnmarshaller.java
index b5c280c..192827c 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/SurNameUnmarshaller.java
@@ -21,19 +21,12 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.opensaml.core.xml.schema.impl.XSStringUnmarshaller;
 import org.opensaml.saml.saml2.metadata.SurName;
 
 /**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml2.metadata.SurName} objects.
+ * A thread-safe Unmarshaller for {@link SurName} objects.
  */
-public class SurNameUnmarshaller extends AbstractSAMLObjectUnmarshaller {
+public class SurNameUnmarshaller extends XSStringUnmarshaller {
 
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final SurName name = (SurName) samlObject;
-
-        name.setName(elementContent);
-    }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberImpl.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberImpl.java
index 6db3289..c652d24 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberImpl.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberImpl.java
@@ -21,19 +21,13 @@
 
 package org.opensaml.saml.saml2.metadata.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.saml2.metadata.TelephoneNumber;
 
 /**
- * Concrete implementation of {@link org.opensaml.saml.saml2.metadata.TelephoneNumber}.
+ * Concrete implementation of {@link TelephoneNumber}.
  */
-public class TelephoneNumberImpl extends AbstractXMLObject implements TelephoneNumber {
-
-    /** Telephone number. */
-    private String number;
+public class TelephoneNumberImpl extends XSStringImpl implements TelephoneNumber {
 
     /**
      * Constructor.
@@ -46,19 +40,5 @@ public class TelephoneNumberImpl extends AbstractXMLObject implements TelephoneN
             final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
-
-    /** {@inheritDoc} */
-    public String getNumber() {
-        return number;
-    }
-
-    /** {@inheritDoc} */
-    public void setNumber(final String newNumber) {
-        number = prepareForAssignment(number, newNumber);
-    }
-
-    /** {@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/saml2/metadata/impl/TelephoneNumberMarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberMarshaller.java
index 1f107bb..a630e9c 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberMarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberMarshaller.java
@@ -25,22 +25,22 @@ 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.saml2.metadata.TelephoneNumber;
 import org.w3c.dom.Element;
 
 /**
  * A thread safe Marshaller for {@link org.opensaml.saml.saml2.metadata.TelephoneNumber} objects.
  */
-public class TelephoneNumberMarshaller extends AbstractSAMLObjectMarshaller {
+public class TelephoneNumberMarshaller extends XSStringMarshaller {
 
     /** {@inheritDoc} */
     protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
             throws MarshallingException {
         final TelephoneNumber number = (TelephoneNumber) samlObject;
 
-        if (number.getNumber() != null) {
-            ElementSupport.appendTextContent(domElement, number.getNumber());
+        if (number.getValue() != null) {
+            ElementSupport.appendTextContent(domElement, number.getValue());
         }
     }
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberUnmarshaller.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberUnmarshaller.java
index f9f474b..f628e2e 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberUnmarshaller.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberUnmarshaller.java
@@ -21,19 +21,12 @@
 
 package org.opensaml.saml.saml2.metadata.impl;
 
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.opensaml.core.xml.schema.impl.XSStringUnmarshaller;
 import org.opensaml.saml.saml2.metadata.TelephoneNumber;
 
 /**
- * A thread-safe Unmarshaller for {@link org.opensaml.saml.saml2.metadata.TelephoneNumber} objects.
+ * A thread-safe Unmarshaller for {@link TelephoneNumber} objects.
  */
-public class TelephoneNumberUnmarshaller extends AbstractSAMLObjectUnmarshaller {
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
-        final TelephoneNumber number = (TelephoneNumber) samlObject;
-
-        number.setNumber(elementContent);
-    }
+public class TelephoneNumberUnmarshaller extends XSStringUnmarshaller {
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationTest.java
index a26370d..4255e8a 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/AdditionalMetadataLocationTest.java
@@ -53,7 +53,7 @@ public class AdditionalMetadataLocationTest extends XMLObjectProviderBaseTestCas
     public void testSingleElementUnmarshall() {
         AdditionalMetadataLocation locationObj = (AdditionalMetadataLocation) unmarshallElement(singleElementFile);
 
-        String location = locationObj.getLocationURI();
+        String location = locationObj.getURI();
         Assert.assertEquals(location, expectedContent, "Location URI was " + location + ", expected " + expectedContent);
 
         String namespace = locationObj.getNamespaceURI();
@@ -64,7 +64,7 @@ public class AdditionalMetadataLocationTest extends XMLObjectProviderBaseTestCas
     @Test
     public void testSingleElementMarshall() {
         AdditionalMetadataLocation location = (new AdditionalMetadataLocationBuilder()).buildObject(); 
-        location.setLocationURI(expectedContent);
+        location.setURI(expectedContent);
         location.setNamespaceURI(expectedNamespace);
 
         assertXMLEquals(expectedDOM, location);
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileTest.java
index 38d8b11..7b794ba 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/AttributeProfileTest.java
@@ -49,7 +49,7 @@ public class AttributeProfileTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall(){
         AttributeProfile profile = (AttributeProfile) unmarshallElement(singleElementFile);
         
-        Assert.assertEquals(profile.getProfileURI(), expectedProfileURI, "Profile URI has a value of " + profile.getProfileURI() + ", expected a value of " + expectedProfileURI);
+        Assert.assertEquals(profile.getURI(), expectedProfileURI);
     }
 
     /** {@inheritDoc} */
@@ -57,7 +57,7 @@ public class AttributeProfileTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementMarshall(){
         AttributeProfile profile = (new AttributeProfileBuilder()).buildObject();
         
-        profile.setProfileURI(expectedProfileURI);
+        profile.setURI(expectedProfileURI);
         
         assertXMLEquals(expectedDOM, profile);
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/CompanyTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/CompanyTest.java
index 713c993..852949e 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/CompanyTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/CompanyTest.java
@@ -52,7 +52,7 @@ public class CompanyTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         Company company = (Company) unmarshallElement(singleElementFile);
         
-        Assert.assertEquals(company.getName(), expectedName, "Company name was not expected value");
+        Assert.assertEquals(company.getValue(), expectedName, "Company name was not expected value");
     }
 
     /** {@inheritDoc} */
@@ -60,7 +60,7 @@ public class CompanyTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementMarshall() {
         Company company = (new CompanyBuilder()).buildObject();
         
-        company.setName(expectedName);
+        company.setValue(expectedName);
 
         assertXMLEquals(expectedDOM, company);
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressTest.java
index fdcf573..90f4b06 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/EmailAddressTest.java
@@ -52,7 +52,7 @@ public class EmailAddressTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         EmailAddress address = (EmailAddress) unmarshallElement(singleElementFile);
         
-        Assert.assertEquals(address.getAddress(), expectedAddress, "Email address was not expected value");
+        Assert.assertEquals(address.getURI(), expectedAddress, "Email address was not expected value");
     }
 
     /** {@inheritDoc} */
@@ -60,7 +60,7 @@ public class EmailAddressTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementMarshall() {
         EmailAddress address = (new EmailAddressBuilder()).buildObject();
         
-        address.setAddress(expectedAddress);
+        address.setURI(expectedAddress);
 
         assertXMLEquals(expectedDOM, address);
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/GivenNameTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/GivenNameTest.java
index 0483b52..086b40a 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/GivenNameTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/GivenNameTest.java
@@ -52,7 +52,7 @@ public class GivenNameTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         GivenName name = (GivenName) unmarshallElement(singleElementFile);
         
-        Assert.assertEquals(name.getName(), expectName, "Name was not expected value");
+        Assert.assertEquals(name.getValue(), expectName, "Name was not expected value");
     }
 
     /** {@inheritDoc} */
@@ -60,7 +60,7 @@ public class GivenNameTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementMarshall() {
         GivenName name = (new GivenNameBuilder()).buildObject();
         
-        name.setName(expectName);
+        name.setValue(expectName);
 
         assertXMLEquals(expectedDOM, name);
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatTest.java
index 7b0ac9a..2fa3384 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/NameIDFormatTest.java
@@ -52,7 +52,7 @@ public class NameIDFormatTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         NameIDFormat format = (NameIDFormat) unmarshallElement(singleElementFile);
         
-        Assert.assertEquals(format.getFormat(), expectFormat, "Format was not expected value");
+        Assert.assertEquals(format.getURI(), expectFormat, "Format was not expected value");
     }
 
     /** {@inheritDoc} */
@@ -60,7 +60,7 @@ public class NameIDFormatTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementMarshall() {
         NameIDFormat format = (NameIDFormat) buildXMLObject(NameIDFormat.DEFAULT_ELEMENT_NAME);
         
-        format.setFormat(expectFormat);
+        format.setURI(expectFormat);
 
         assertXMLEquals(expectedDOM, format);
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/OrganizationURLTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/OrganizationURLTest.java
index 164c4c7..b7d5e40 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/OrganizationURLTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/OrganizationURLTest.java
@@ -52,7 +52,7 @@ public class OrganizationURLTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         OrganizationURL url = (OrganizationURL) unmarshallElement(singleElementFile);
         
-        Assert.assertEquals(url.getValue(), expectValue, "URL was not expected value");
+        Assert.assertEquals(url.getURI(), expectValue, "URL was not expected value");
         Assert.assertEquals(url.getXMLLang(), expectLang, "langg was not expected value");
         url.hashCode();
     }
@@ -63,7 +63,7 @@ public class OrganizationURLTest extends XMLObjectProviderBaseTestCase {
         QName qname = new QName(SAMLConstants.SAML20MD_NS, OrganizationURL.DEFAULT_ELEMENT_LOCAL_NAME, SAMLConstants.SAML20MD_PREFIX);
         OrganizationURL url = (OrganizationURL) buildXMLObject(qname);
         
-        url.setValue(expectValue);
+        url.setURI(expectValue);
         url.setXMLLang(expectLang);
 
         assertXMLEquals(expectedDOM, url);
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/SurNameTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/SurNameTest.java
index 238fcae..a1d2bd5 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/SurNameTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/SurNameTest.java
@@ -52,7 +52,7 @@ public class SurNameTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         SurName name = (SurName) unmarshallElement(singleElementFile);
         
-        Assert.assertEquals(name.getName(), expectedName, "Name was not expected value");
+        Assert.assertEquals(name.getValue(), expectedName, "Name was not expected value");
     }
 
     /** {@inheritDoc} */
@@ -60,7 +60,7 @@ public class SurNameTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementMarshall() {
         SurName name = (new SurNameBuilder()).buildObject();
         
-        name.setName(expectedName);
+        name.setValue(expectedName);
 
         assertXMLEquals(expectedDOM, name);
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberTest.java
index bdc4565..036516c 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/metadata/impl/TelephoneNumberTest.java
@@ -52,7 +52,7 @@ public class TelephoneNumberTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementUnmarshall() {
         TelephoneNumber number = (TelephoneNumber) unmarshallElement(singleElementFile);
         
-        Assert.assertEquals(number.getNumber(), expectedNumber, "Telephone number was not expected value");
+        Assert.assertEquals(number.getValue(), expectedNumber, "Telephone number was not expected value");
     }
 
     /** {@inheritDoc} */
@@ -60,7 +60,7 @@ public class TelephoneNumberTest extends XMLObjectProviderBaseTestCase {
     public void testSingleElementMarshall() {
         TelephoneNumber number = (new TelephoneNumberBuilder()).buildObject();
         
-        number.setNumber(expectedNumber);
+        number.setValue(expectedNumber);
 
         assertXMLEquals(expectedDOM, number);
     }
diff --git a/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIImpl.java b/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIImpl.java
index ed4b1a7..8da7c39 100644
--- a/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIImpl.java
+++ b/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIImpl.java
@@ -17,6 +17,7 @@
 
 package org.opensaml.soap.wssecurity.impl;
 
+import org.opensaml.core.xml.schema.impl.XSURIImpl;
 import org.opensaml.core.xml.util.AttributeMap;
 import org.opensaml.soap.wssecurity.AttributedURI;
 import org.opensaml.soap.wssecurity.IdBearing;
@@ -24,10 +25,7 @@ import org.opensaml.soap.wssecurity.IdBearing;
 /**
  * Implementation of {@link AttributedURI}.
  */
-public class AttributedURIImpl extends AbstractWSSecurityObject implements AttributedURI {
-    
-    /** The string value. */
-    private String value;
+public class AttributedURIImpl extends XSURIImpl implements AttributedURI {
     
     /** The wsu:Id attribute value. */
     private String id;
@@ -48,16 +46,6 @@ public class AttributedURIImpl extends AbstractWSSecurityObject implements Attri
     }
 
     /** {@inheritDoc} */
-    public String getValue() {
-        return value;
-    }
-
-    /** {@inheritDoc} */
-    public void setValue(final String newValue) {
-        value = prepareForAssignment(value, newValue);
-    }
-
-    /** {@inheritDoc} */
     public String getWSUId() {
         return id;
     }
diff --git a/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIMarshaller.java b/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIMarshaller.java
index 6494634..15d108a 100644
--- a/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIMarshaller.java
+++ b/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIMarshaller.java
@@ -17,10 +17,9 @@
 
 package org.opensaml.soap.wssecurity.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.core.xml.schema.impl.XSURIMarshaller;
 import org.opensaml.core.xml.util.XMLObjectSupport;
 import org.opensaml.soap.wssecurity.AttributedURI;
 import org.w3c.dom.Element;
@@ -30,7 +29,7 @@ import com.google.common.base.Strings;
 /**
  * Marshaller for instances of {@link AttributedURI}.
  */
-public class AttributedURIMarshaller extends AbstractWSSecurityObjectMarshaller {
+public class AttributedURIMarshaller extends XSURIMarshaller {
 
     /** {@inheritDoc} */
     protected void marshallAttributes(final XMLObject xmlObject, final Element domElement) throws MarshallingException {
@@ -44,12 +43,5 @@ public class AttributedURIMarshaller extends AbstractWSSecurityObjectMarshaller
         XMLObjectSupport.marshallAttributeMap(attributedURI.getUnknownAttributes(), domElement);
         
     }
-
-    /** {@inheritDoc} */
-    protected void marshallElementContent(final XMLObject xmlObject, final Element domElement)
-            throws MarshallingException {
-        final AttributedURI attributedURI = (AttributedURI) xmlObject;
-        ElementSupport.appendTextContent(domElement, attributedURI.getValue());
-    }
     
-}
+}
\ No newline at end of file
diff --git a/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIUnmarshaller.java b/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIUnmarshaller.java
index f18ffc5..c3660f0 100644
--- a/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIUnmarshaller.java
+++ b/opensaml-soap-impl/src/main/java/org/opensaml/soap/wssecurity/impl/AttributedURIUnmarshaller.java
@@ -23,6 +23,7 @@ import net.shibboleth.utilities.java.support.xml.QNameSupport;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.UnmarshallingException;
+import org.opensaml.core.xml.schema.impl.XSURIUnmarshaller;
 import org.opensaml.core.xml.util.XMLObjectSupport;
 import org.opensaml.soap.wssecurity.AttributedURI;
 import org.w3c.dom.Attr;
@@ -30,7 +31,7 @@ import org.w3c.dom.Attr;
 /**
  * Unmarshaller for instances of {@link AttributedURI}.
  */
-public class AttributedURIUnmarshaller extends AbstractWSSecurityObjectUnmarshaller {
+public class AttributedURIUnmarshaller extends XSURIUnmarshaller {
 
     /** {@inheritDoc} */
     protected void processAttribute(final XMLObject xmlObject, final Attr attribute) throws UnmarshallingException {
@@ -45,11 +46,5 @@ public class AttributedURIUnmarshaller extends AbstractWSSecurityObjectUnmarshal
             XMLObjectSupport.unmarshallToAttributeMap(attributedURI.getUnknownAttributes(), attribute);
         }
     }
-
-    /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject xmlObject, final String elementContent) {
-        final AttributedURI attributedURI = (AttributedURI) xmlObject;
-        attributedURI.setValue(elementContent);
-    }
     
-}
+}
\ No newline at end of file
diff --git a/opensaml-soap-impl/src/main/java/org/opensaml/soap/wstrust/impl/KeyWrapAlgorithmImpl.java b/opensaml-soap-impl/src/main/java/org/opensaml/soap/wstrust/impl/KeyWrapAlgorithmImpl.java
index 57164b6..6f1310b 100644
--- a/opensaml-soap-impl/src/main/java/org/opensaml/soap/wstrust/impl/KeyWrapAlgorithmImpl.java
+++ b/opensaml-soap-impl/src/main/java/org/opensaml/soap/wstrust/impl/KeyWrapAlgorithmImpl.java
@@ -17,14 +17,14 @@
 
 package org.opensaml.soap.wstrust.impl;
 
-import org.opensaml.core.xml.schema.impl.XSStringImpl;
+import org.opensaml.core.xml.schema.impl.XSURIImpl;
 import org.opensaml.soap.wstrust.KeyWrapAlgorithm;
 
 /**
  * KeyWrapAlgorithmImpl.
  * 
  */
-public class KeyWrapAlgorithmImpl extends XSStringImpl implements KeyWrapAlgorithm {
+public class KeyWrapAlgorithmImpl extends XSURIImpl implements KeyWrapAlgorithm {
 
     /**
      * Constructor.
@@ -38,4 +38,4 @@ public class KeyWrapAlgorithmImpl extends XSStringImpl implements KeyWrapAlgorit
         super(namespaceURI, elementLocalName, namespacePrefix);
     }
 
-}
+}
\ No newline at end of file

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


More information about the commits mailing list