[java-shib-attribute] branch main updated: Fix annotation and null bugs.

Scott Cantor cantor.2 at osu.edu
Mon Nov 21 19:21:21 UTC 2022


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

scantor pushed a commit to branch main
in repository java-shib-attribute.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-attribute.git;a=commit;h=36b13d68865581c89ef8b8d48d26b15c7887e808

The following commit(s) were added to refs/heads/main by this push:
     new 36b13d688 Fix annotation and null bugs.
36b13d688 is described below

commit 36b13d68865581c89ef8b8d48d26b15c7887e808
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Nov 21 14:21:18 2022 -0500

    Fix annotation and null bugs.
---
 .../AbstractSAML1AttributeTranscoder.java          |   1 +
 .../AbstractSAML2AttributeTranscoder.java          |   3 +-
 .../AbstractSAMLAttributeTranscoder.java           |  22 ++-
 .../attribute/transcoding/SAMLEncoderSupport.java  |   4 +-
 .../transcoding/SAMLEncoderSupportTest.java        | 174 +++++++--------------
 .../impl/AttributeMappingNodeProcessor.java        |  20 ++-
 .../impl/SAML1ByteAttributeTranscoder.java         |   5 +-
 .../impl/SAML1ScopedStringAttributeTranscoder.java |  11 +-
 .../impl/SAML1StringAttributeTranscoder.java       |   1 +
 .../impl/SAML1XMLObjectAttributeTranscoder.java    |   3 +-
 .../impl/SAML2ByteAttributeTranscoder.java         |   5 +-
 .../impl/SAML2DateTimeAttributeTranscoder.java     |   8 +-
 .../impl/SAML2ScopedStringAttributeTranscoder.java |  11 +-
 .../impl/SAML2StringAttributeTranscoder.java       |   1 +
 .../impl/SAML2XMLObjectAttributeTranscoder.java    |   3 +-
 .../impl/SAML1ByteAttributeTranscoderTest.java     |  65 +++++---
 .../SAML1ScopedStringAttributeTranscoderTest.java  |  49 ++++--
 .../impl/SAML1StringAttributeTranscoderTest.java   |  44 ++++--
 .../impl/SAML2ByteAttributeTranscoderTest.java     |  72 ++++++---
 .../impl/SAML2DateTimeAttributeTranscoderTest.java |  52 ++++--
 .../SAML2ScopedStringAttributeTranscoderTest.java  |  55 ++++---
 .../impl/SAML2StringAttributeTranscoderTest.java   |  47 ++++--
 .../SAML2XMLObjectAttributeTranscoderTest.java     |  97 ++++++++----
 23 files changed, 452 insertions(+), 301 deletions(-)

diff --git a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java
index 6b0fc606b..0d7324eef 100644
--- a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java
+++ b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML1AttributeTranscoder.java
@@ -143,6 +143,7 @@ public abstract class AbstractSAML1AttributeTranscoder<EncodedType extends IdPAt
         if (Strings.isNullOrEmpty(id)) {
             throw new AttributeDecodingException("Required transcoder property 'id' not found");
         }
+        assert id != null;
         
         final IdPAttribute idpAttribute;
         if (attribute instanceof Attribute) {
diff --git a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
index 449459493..42d3067d3 100644
--- a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
+++ b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
@@ -118,7 +118,7 @@ public abstract class AbstractSAML2AttributeTranscoder<EncodedType extends IdPAt
         
         final String friendlyName = rule.getOrDefault(PROP_FRIENDLY_NAME, String.class,
                 attribute != null ? attribute.getId() : "");
-        if (!friendlyName.isBlank()) {
+        if (friendlyName != null && !friendlyName.isBlank()) {
             samlAttribute.setFriendlyName(friendlyName);
         }
         
@@ -141,6 +141,7 @@ public abstract class AbstractSAML2AttributeTranscoder<EncodedType extends IdPAt
         if (Strings.isNullOrEmpty(id)) {
             throw new AttributeDecodingException("Required transcoder property 'id' not found");
         }
+        assert id != null;
         
         final IdPAttribute idpAttribute;
         if (attribute instanceof RequestedAttribute) {
diff --git a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAMLAttributeTranscoder.java b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAMLAttributeTranscoder.java
index aa30098f0..42e4b4969 100644
--- a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAMLAttributeTranscoder.java
+++ b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAMLAttributeTranscoder.java
@@ -38,6 +38,7 @@ import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.schema.XSAny;
 import org.opensaml.core.xml.schema.XSBase64Binary;
 import org.opensaml.core.xml.schema.XSBoolean;
+import org.opensaml.core.xml.schema.XSBooleanValue;
 import org.opensaml.core.xml.schema.XSDateTime;
 import org.opensaml.core.xml.schema.XSInteger;
 import org.opensaml.core.xml.schema.XSString;
@@ -140,7 +141,7 @@ public abstract class AbstractSAMLAttributeTranscoder<AttributeType extends SAML
      * @return decoded string, or null
      */
 // Checkstyle: CyclomaticComplexity OFF
-    @Nullable protected String getStringValue(@Nonnull final XMLObject object) {
+    @Nullable protected String getStringValue(@Nullable final XMLObject object) {
         String retVal = null;
 
         if (object instanceof XSString) {
@@ -152,12 +153,20 @@ public abstract class AbstractSAMLAttributeTranscoder<AttributeType extends SAML
             retVal = ((XSURI) object).getURI();
 
         } else if (object instanceof XSBoolean) {
-
-            retVal = ((XSBoolean) object).getValue().getValue() ? "1" : "0";
+            
+            final XSBooleanValue bval = ((XSBoolean) object).getValue();
+            if (bval != null) {
+                final Boolean flag = bval.getValue();
+                if (flag != null) {
+                    retVal = flag ? "1" : "0";                }
+            }
 
         } else if (object instanceof XSInteger) {
-
-            retVal = ((XSInteger) object).getValue().toString();
+            
+            final Integer ival = ((XSInteger) object).getValue();
+            if (ival != null) {
+                retVal = ival.toString();
+            }
 
         } else if (object instanceof XSDateTime) {
 
@@ -187,7 +196,8 @@ public abstract class AbstractSAMLAttributeTranscoder<AttributeType extends SAML
         }
 
         if (null == retVal) {
-            log.info("Value of type {} could not be converted", object.getClass().getSimpleName());
+            log.info("Value of type {} could not be converted",
+                    object != null ? object.getClass().getSimpleName() : "(null)");
         }
         return retVal;
     }
diff --git a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLEncoderSupport.java b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLEncoderSupport.java
index 15aa99cb2..b5950f675 100644
--- a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLEncoderSupport.java
+++ b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLEncoderSupport.java
@@ -170,7 +170,7 @@ public final class SAMLEncoderSupport {
      * 
      * @return the attribute value element or null if the given value was null or empty
      */
-    public static XMLObject encodeScopedStringValueAttribute(@Nonnull final IdPAttribute attribute,
+    @Nullable public static XMLObject encodeScopedStringValueAttribute(@Nonnull final IdPAttribute attribute,
             @Nonnull final QName attributeValueElementName, @Nullable final ScopedStringAttributeValue value,
             @Nonnull @NotEmpty final String scopeAttributeName, final boolean withType) {
         Constraint.isNotNull(attribute, "Attribute cannot be null");
@@ -208,7 +208,7 @@ public final class SAMLEncoderSupport {
      * 
      * @return the attribute value element or null if the given value was null or empty
      */
-    public static XMLObject encodeScopedStringValueInline(@Nonnull final IdPAttribute attribute,
+    @Nullable public static XMLObject encodeScopedStringValueInline(@Nonnull final IdPAttribute attribute,
             @Nonnull final QName attributeValueElementName, @Nullable final ScopedStringAttributeValue value,
             @Nonnull final String scopeDelimiter, final boolean withType) {
         Constraint.isNotNull(attribute, "Attribute cannot be null");
diff --git a/shib-saml-attribute-api/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLEncoderSupportTest.java b/shib-saml-attribute-api/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLEncoderSupportTest.java
index 902e2084c..baab6d056 100644
--- a/shib-saml-attribute-api/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLEncoderSupportTest.java
+++ b/shib-saml-attribute-api/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/SAMLEncoderSupportTest.java
@@ -19,15 +19,17 @@ package net.shibboleth.idp.saml.attribute.transcoding;
 
 import java.util.List;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
 import net.shibboleth.idp.saml.xmlobject.ScopedValue;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.codec.Base64Support;
 import net.shibboleth.shared.codec.DecodingException;
 import net.shibboleth.shared.codec.EncodingException;
-import net.shibboleth.shared.logic.ConstraintViolationException;
 import net.shibboleth.shared.xml.ElementSupport;
 
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
@@ -54,71 +56,47 @@ import com.google.common.base.Strings;
 /**
  * Test for {@link SAMLEncoderSupport}.
  */
+ at SuppressWarnings("javadoc")
 public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
     
     /** Test values. */
-    private final static String QNAME_LOCALPART = "myQName";
-    private final static QName QNAME = new QName(QNAME_LOCALPART);
-    private final static String STRING_VALUE = "TestValue";
-    private final static String STRING_SCOPE = "TestScope";
-    private final static String SCOPE_ATTRIBUTE_NAME = "Scpe"; //sic
-    private final static String DELIMITER = "@";
-    private final static IdPAttribute ATTR = new IdPAttribute("attr");
-    private final static byte[] BYTE_ARRAY_VALUE = {1, 2, 3, 4, 5};
-    private final static ScopedStringAttributeValue SCOPEDVAL = new ScopedStringAttributeValue(STRING_VALUE, STRING_SCOPE);
+    @Nonnull @NotEmpty private final static String QNAME_LOCALPART = "myQName";
+    @Nonnull private final static QName QNAME = new QName(QNAME_LOCALPART);
+    @Nonnull @NotEmpty private final static String STRING_VALUE = "TestValue";
+    @Nonnull @NotEmpty private final static String STRING_SCOPE = "TestScope";
+    @Nonnull @NotEmpty private final static String SCOPE_ATTRIBUTE_NAME = "Scpe"; //sic
+    @Nonnull @NotEmpty private final static String DELIMITER = "@";
+    @Nonnull private final static IdPAttribute ATTR = new IdPAttribute("attr");
+    @Nonnull @NotEmpty private final static byte[] BYTE_ARRAY_VALUE = {1, 2, 3, 4, 5};
+    @Nonnull private final static ScopedStringAttributeValue SCOPEDVAL = new ScopedStringAttributeValue(STRING_VALUE, STRING_SCOPE);
     
     @Test public void encodeStringValue() {
         
-        try {
-            SAMLEncoderSupport.encodeStringValue(null, QNAME, STRING_VALUE, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
-        try {
-            SAMLEncoderSupport.encodeStringValue(ATTR, null, STRING_VALUE, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
         Assert.assertNull(SAMLEncoderSupport.encodeStringValue(ATTR, QNAME, "", true));
         Assert.assertNull(SAMLEncoderSupport.encodeStringValue(ATTR, QNAME, null, true));
         
-        XMLObject obj = SAMLEncoderSupport.encodeStringValue(ATTR, QNAME, STRING_VALUE, true);
+        final XMLObject obj = SAMLEncoderSupport.encodeStringValue(ATTR, QNAME, STRING_VALUE, true);
+        assert obj != null;
         Assert.assertEquals(obj.getElementQName().getLocalPart(), QNAME_LOCALPART);
         Assert.assertTrue(obj instanceof XSString);
-        XSString str = (XSString) obj;
+        final XSString str = (XSString) obj;
         
         Assert.assertEquals(str.getValue(), STRING_VALUE);
     }
     
     @Test public void encodeByteArrayValue() throws DecodingException, EncodingException {
         
-        try {
-            SAMLEncoderSupport.encodeByteArrayValue(null, QNAME, BYTE_ARRAY_VALUE, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
-        try {
-            SAMLEncoderSupport.encodeByteArrayValue(ATTR, null, BYTE_ARRAY_VALUE, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
         Assert.assertNull(SAMLEncoderSupport.encodeByteArrayValue(ATTR, QNAME, null, true));
         Assert.assertNull(SAMLEncoderSupport.encodeByteArrayValue(ATTR, QNAME, new byte[] {}, true));
         
-        XMLObject obj = SAMLEncoderSupport.encodeByteArrayValue(ATTR, QNAME, BYTE_ARRAY_VALUE, true);
+        final XMLObject obj = SAMLEncoderSupport.encodeByteArrayValue(ATTR, QNAME, BYTE_ARRAY_VALUE, true);
+        assert obj != null;
         Assert.assertEquals(obj.getElementQName().getLocalPart(), QNAME_LOCALPART);
         Assert.assertTrue(obj instanceof XSBase64Binary);
-        XSBase64Binary str = (XSBase64Binary) obj;
-        
-        Assert.assertEquals(Base64Support.decode(str.getValue()), BYTE_ARRAY_VALUE);
+        final XSBase64Binary str = (XSBase64Binary) obj;
+        final String b64 = str.getValue();
+        assert b64 != null;
+        Assert.assertEquals(Base64Support.decode(b64), BYTE_ARRAY_VALUE);
     }
 
     @Test public void encodeXmlObjectValue() {
@@ -129,66 +107,34 @@ public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
         final NameID objToEncode= builder.buildObject();
         objToEncode.setValue(STRING_VALUE);
         
-        try {
-            SAMLEncoderSupport.encodeXMLObjectValue(null, QNAME, objToEncode);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
-        try {
-            SAMLEncoderSupport.encodeXMLObjectValue(ATTR, null, objToEncode);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
         Assert.assertNull(SAMLEncoderSupport.encodeXMLObjectValue(ATTR, QNAME, null));
         
-        XMLObject obj = SAMLEncoderSupport.encodeXMLObjectValue(ATTR, QNAME, objToEncode);
+        final XMLObject obj = SAMLEncoderSupport.encodeXMLObjectValue(ATTR, QNAME, objToEncode);
+        assert obj != null;
         Assert.assertEquals(obj.getElementQName().getLocalPart(), QNAME_LOCALPART);
         Assert.assertTrue(obj instanceof XSAny);
-        XSAny any = (XSAny) obj;
-        List<XMLObject> what = any.getUnknownXMLObjects();
+        final XSAny any = (XSAny) obj;
+        final List<XMLObject> what = any.getUnknownXMLObjects();
        
         Assert.assertEquals(what.size(),1);
         Assert.assertTrue(what.get(0) instanceof NameID);
         
-        NameID other = (NameID) what.get(0);
+        final NameID other = (NameID) what.get(0);
         Assert.assertEquals(other.getValue(), STRING_VALUE);
     }
 
     @Test public void encodeScopedStringValueAttribute() {
         
-        XMLObjectProviderRegistrySupport.registerObjectProvider(ScopedValue.TYPE_NAME, new ScopedValueBuilder(), new ScopedValueMarshaller(), new ScopedValueUnmarshaller());
+        XMLObjectProviderRegistrySupport.registerObjectProvider(ScopedValue.TYPE_NAME,
+                new ScopedValueBuilder(), new ScopedValueMarshaller(), new ScopedValueUnmarshaller());
         
-        try {
-            SAMLEncoderSupport.encodeScopedStringValueAttribute(null, QNAME, SCOPEDVAL, SCOPE_ATTRIBUTE_NAME, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
-        try {
-            SAMLEncoderSupport.encodeScopedStringValueAttribute(ATTR, null,  SCOPEDVAL, SCOPE_ATTRIBUTE_NAME, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
-        try {
-            SAMLEncoderSupport.encodeScopedStringValueAttribute(ATTR, QNAME, SCOPEDVAL, null, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-
         Assert.assertNull(SAMLEncoderSupport.encodeScopedStringValueAttribute(ATTR, QNAME, null, SCOPE_ATTRIBUTE_NAME, true));
         
-        XMLObject obj = SAMLEncoderSupport.encodeScopedStringValueAttribute(ATTR, QNAME, SCOPEDVAL, SCOPE_ATTRIBUTE_NAME, true);
+        final XMLObject obj = SAMLEncoderSupport.encodeScopedStringValueAttribute(ATTR, QNAME, SCOPEDVAL, SCOPE_ATTRIBUTE_NAME, true);
+        assert obj != null;
         Assert.assertEquals(obj.getElementQName().getLocalPart(), QNAME_LOCALPART);
         Assert.assertTrue(obj instanceof ScopedValue);
-        ScopedValue sv = (ScopedValue) obj;
+        final ScopedValue sv = (ScopedValue) obj;
         
         Assert.assertEquals(sv.getValue(), STRING_VALUE);
         Assert.assertEquals(sv.getScope(), STRING_SCOPE);
@@ -196,33 +142,13 @@ public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
 
     @Test public void encodeScopedStringValueInline() {
         
-        try {
-            SAMLEncoderSupport.encodeScopedStringValueInline(null, QNAME, SCOPEDVAL, DELIMITER, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
-        try {
-            SAMLEncoderSupport.encodeScopedStringValueInline(ATTR, null,  SCOPEDVAL, DELIMITER, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-        
-        try {
-            SAMLEncoderSupport.encodeScopedStringValueInline(ATTR, QNAME, SCOPEDVAL, null, true);
-            Assert.fail("Missed contraint");
-        } catch (ConstraintViolationException ex) {
-            //OK
-        }
-
         Assert.assertNull(SAMLEncoderSupport.encodeScopedStringValueInline(ATTR, QNAME, null, DELIMITER, true));
         
-        XMLObject obj = SAMLEncoderSupport.encodeScopedStringValueInline(ATTR, QNAME, SCOPEDVAL, DELIMITER, true);
+        final XMLObject obj = SAMLEncoderSupport.encodeScopedStringValueInline(ATTR, QNAME, SCOPEDVAL, DELIMITER, true);
+        assert obj != null;
         Assert.assertEquals(obj.getElementQName().getLocalPart(), QNAME_LOCALPART);
         Assert.assertTrue(obj instanceof XSString);
-        XSString str = (XSString) obj;
+        final XSString str = (XSString) obj;
         
         Assert.assertEquals(str.getValue(), STRING_VALUE + DELIMITER + STRING_SCOPE);
         
@@ -235,7 +161,8 @@ public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
     
     private class ScopedValueBuilder extends AbstractXMLObjectBuilder<ScopedValue> {
 
-        public ScopedValue buildObject(String namespaceURI, String localName, String namespacePrefix) {
+        @Nonnull public ScopedValue buildObject(@Nullable final String namespaceURI,
+                @Nonnull @NotEmpty final String localName, @Nullable final String namespacePrefix) {
             return new ScopedValueImpl(namespaceURI, localName, namespacePrefix);
         }
     }
@@ -255,8 +182,9 @@ public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
          * @param elementLocalName the local name of the XML element this Object represents
          * @param namespacePrefix the prefix for the given namespace
          */
-        protected ScopedValueImpl(String namespaceURI, String elementLocalName, String namespacePrefix) {
-            super(namespaceURI, elementLocalName, namespacePrefix);
+        protected ScopedValueImpl(@Nullable final String namespaceURI,
+                @Nonnull @NotEmpty final String localName, @Nullable final String namespacePrefix) {
+            super(namespaceURI, localName, namespacePrefix);
         }
 
         /** {@inheritDoc} */
@@ -280,7 +208,7 @@ public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
         /** {@inheritDoc} */
         public void setScopeAttributeName(String newScopeAttributeName) {
             if (scopeAttributeName != null) {
-                QName oldName = new QName(scopeAttributeName);
+                final QName oldName = new QName(scopeAttributeName);
                 if (getUnknownAttributes().containsKey(oldName)) {
                     getUnknownAttributes().remove(oldName);
                 }
@@ -308,8 +236,9 @@ public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
     private class ScopedValueMarshaller extends AbstractXMLObjectMarshaller {
 
         /** {@inheritDoc} */
-        protected void marshallAttributes(XMLObject xmlObject, Element domElement) throws MarshallingException {
-            ScopedValue scopedValue = (ScopedValue) xmlObject;
+        protected void marshallAttributes(@Nonnull final XMLObject xmlObject, @Nonnull final Element domElement)
+                throws MarshallingException {
+            final ScopedValue scopedValue = (ScopedValue) xmlObject;
 
             if (null != scopedValue.getScopeAttributeName()) {
                 domElement.setAttributeNS(null, scopedValue.getScopeAttributeName(), scopedValue.getScope());
@@ -318,8 +247,9 @@ public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
         }
 
         /** {@inheritDoc} */
-        protected void marshallElementContent(XMLObject xmlObject, Element domElement) throws MarshallingException {
-            ScopedValue scopedValue = (ScopedValue) xmlObject;
+        protected void marshallElementContent(@Nonnull final XMLObject xmlObject, @Nonnull final Element domElement)
+                throws MarshallingException {
+            final ScopedValue scopedValue = (ScopedValue) xmlObject;
 
             ElementSupport.appendTextContent(domElement, scopedValue.getValue());
         }
@@ -328,8 +258,9 @@ public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
     private class ScopedValueUnmarshaller extends AbstractXMLObjectUnmarshaller {
 
         /** {@inheritDoc} */
-        protected void processAttribute(XMLObject xmlObject, Attr attribute) throws UnmarshallingException {
-            ScopedValue sv = (ScopedValue) xmlObject;
+        protected void processAttribute(@Nonnull final XMLObject xmlObject, @Nonnull final Attr attribute)
+                throws UnmarshallingException {
+            final ScopedValue sv = (ScopedValue) xmlObject;
 
             if (Strings.isNullOrEmpty(sv.getScopeAttributeName())) {
                 sv.setScopeAttributeName(attribute.getName());
@@ -339,8 +270,9 @@ public class SAMLEncoderSupportTest  extends OpenSAMLInitBaseTestCase {
         }
 
         /** {@inheritDoc} */
-        protected void processElementContent(XMLObject xmlObject, String elementContent) {
-            ScopedValue sv = (ScopedValue) xmlObject;
+        protected void processElementContent(@Nonnull final XMLObject xmlObject,
+                @Nonnull @NotEmpty final String elementContent) {
+            final ScopedValue sv = (ScopedValue) xmlObject;
 
             sv.setValue(elementContent);
         }
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/impl/AttributeMappingNodeProcessor.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/impl/AttributeMappingNodeProcessor.java
index 6d16dd707..6e9ba19e9 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/impl/AttributeMappingNodeProcessor.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/impl/AttributeMappingNodeProcessor.java
@@ -101,6 +101,7 @@ public class AttributeMappingNodeProcessor implements MetadataNodeProcessor {
                        component = transcoderRegistry.getServiceableComponent()) {
                 if (component == null) {
                     log.error("Attribute transcoding service unavailable");
+                    return;
                 } 
                 if (metadataNode instanceof AttributeConsumingService) {
                     handleAttributeConsumingService(component.getComponent(), (AttributeConsumingService) metadataNode);
@@ -131,8 +132,11 @@ public class AttributeMappingNodeProcessor implements MetadataNodeProcessor {
         }
         
         final Multimap<String,IdPAttribute> results = HashMultimap.create();
+        assert results != null;
+        
         for (final RequestedAttribute req : requestedAttributes) {
             try {
+                assert req != null;
                 decodeAttribute(registry.getTranscodingRules(req), req, results);
             } catch (final AttributeDecodingException e) {
                 log.warn("Error decoding RequestedAttribute '{}'", req.getName(), e);
@@ -162,15 +166,23 @@ public class AttributeMappingNodeProcessor implements MetadataNodeProcessor {
         if (null == entityAttributesList || entityAttributesList.isEmpty()) {
             return;
         }
+
+        final XMLObject parent = extensions.getParent();
+        if (parent == null) {
+            log.warn("Extensions object had no parent to store results");
+            return;
+        }
         
+
         final Multimap<String,IdPAttribute> results = HashMultimap.create();
+        assert results != null;
         
         for (final XMLObject xmlObj : entityAttributesList) {
             if (xmlObj instanceof EntityAttributes) {
                 final EntityAttributes ea = (EntityAttributes) xmlObj;
                 for (final Attribute attr : ea.getAttributes()) {
                     try {
-
+                        assert attr != null;
                         Collection<TranscodingRule> rulesets = registry.getTranscodingRules(attr);
                         if (rulesets.isEmpty() && Attribute.URI_REFERENCE.equals(attr.getNameFormat())) {
                             log.trace("Applying default decoding rule for URI-named attribute {}", attr.getName());
@@ -181,7 +193,8 @@ public class AttributeMappingNodeProcessor implements MetadataNodeProcessor {
                             final TranscodingRule defaultRule = new TranscodingRule(rulemap);
                             rulesets = Collections.singletonList(defaultRule);
                         }
-                        
+
+                        assert rulesets != null;
                         decodeAttribute(rulesets, attr, results);
                     } catch (final AttributeDecodingException e) {
                         log.warn("Error decoding RequestedAttribute '{}'", attr.getName(), e);
@@ -191,7 +204,7 @@ public class AttributeMappingNodeProcessor implements MetadataNodeProcessor {
         }
         
         if (!results.isEmpty()) {
-            extensions.getParent().getObjectMetadata().put(new AttributesMapContainer(results));
+            parent.getObjectMetadata().put(new AttributesMapContainer(results));
         }
     }
   //CheckStyle: CyclomaticComplexity ON
@@ -211,6 +224,7 @@ public class AttributeMappingNodeProcessor implements MetadataNodeProcessor {
                     throws AttributeDecodingException {
         
         for (final TranscodingRule rule : rules) {
+            assert rule != null;
             final AttributeTranscoder<T> transcoder = TranscoderSupport.getTranscoder(rule);
             final IdPAttribute decodedAttribute = transcoder.decode(null, input, rule);
             if (decodedAttribute != null) {
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoder.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoder.java
index 3264e7d8c..3af994595 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoder.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoder.java
@@ -59,6 +59,7 @@ public class SAML1ByteAttributeTranscoder extends AbstractSAML1AttributeTranscod
             @Nonnull final ByteAttributeValue value) throws AttributeEncodingException {
                 
         final Boolean encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.class, Boolean.TRUE);
+        assert encodeType != null;
 
         try {
             return SAMLEncoderSupport.encodeByteArrayValue(attribute, AttributeValue.DEFAULT_ELEMENT_NAME, 
@@ -77,7 +78,7 @@ public class SAML1ByteAttributeTranscoder extends AbstractSAML1AttributeTranscod
         if (null == s) {
             return null;
         }
-                
+
         try {
             final byte[] decoded = Base64Support.decode(s);
             if (decoded.length == 0) {
@@ -91,4 +92,4 @@ public class SAML1ByteAttributeTranscoder extends AbstractSAML1AttributeTranscod
         }
     }
     
-}
+}
\ No newline at end of file
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoder.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoder.java
index afbf52723..6a042efdb 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoder.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoder.java
@@ -72,11 +72,15 @@ public class SAML1ScopedStringAttributeTranscoder extends AbstractSAML1Attribute
         if ("attribute".equals(scopeType)) {
             final Boolean encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.class, Boolean.FALSE);
             final String scopeAttributeName = rule.getOrDefault(PROP_SCOPE_ATTR_NAME, String.class, "Scope");
+            assert encodeType != null;
+            assert scopeAttributeName != null;
             return SAMLEncoderSupport.encodeScopedStringValueAttribute(attribute,
                     AttributeValue.DEFAULT_ELEMENT_NAME, value, scopeAttributeName, encodeType);
         } else if ("inline".equals(scopeType)) {
             final Boolean encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.class, Boolean.TRUE);
             final String scopeDelimiter = rule.getOrDefault(PROP_SCOPE_DELIMITER, String.class, "@");
+            assert encodeType != null;
+            assert scopeDelimiter != null;
             return SAMLEncoderSupport.encodeScopedStringValueInline(
                     attribute, AttributeValue.DEFAULT_ELEMENT_NAME, value, scopeDelimiter, encodeType);
         } else {
@@ -115,14 +119,15 @@ public class SAML1ScopedStringAttributeTranscoder extends AbstractSAML1Attribute
             return null;
         } else if ("inline".equals(scopeType)) {
             final String scopeDelimiter = rule.getOrDefault(PROP_SCOPE_DELIMITER, String.class, "@");
+            assert scopeDelimiter != null;
             final int offset = stringValue.indexOf(scopeDelimiter);
             if (offset < 0) {
                 log.warn("Ignoring value with no scope delimiter ({})", scopeDelimiter);
                 return null;
             }
 
-            return ScopedStringAttributeValue.valueOf(stringValue.substring(0, offset), stringValue.substring(offset
-                    + scopeDelimiter.length()));
+            return ScopedStringAttributeValue.valueOf(stringValue.substring(0, offset),
+                    stringValue.substring(offset + scopeDelimiter.length()));
             
         } else {
             log.error("Invalid scopeType property (must be inline or attribute)");
@@ -130,4 +135,4 @@ public class SAML1ScopedStringAttributeTranscoder extends AbstractSAML1Attribute
         }
     }
         
-}
+}
\ No newline at end of file
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoder.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoder.java
index 4168f03e3..70005c3af 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoder.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoder.java
@@ -62,6 +62,7 @@ public class SAML1StringAttributeTranscoder extends AbstractSAML1AttributeTransc
         }
         
         final Boolean encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.class, Boolean.TRUE);
+        assert encodeType != null;
         
         return SAMLEncoderSupport.encodeStringValue(attribute, AttributeValue.DEFAULT_ELEMENT_NAME, value.getValue(),
                 encodeType);
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1XMLObjectAttributeTranscoder.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1XMLObjectAttributeTranscoder.java
index 02af067c2..1022e88b7 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1XMLObjectAttributeTranscoder.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1XMLObjectAttributeTranscoder.java
@@ -75,6 +75,7 @@ public class SAML1XMLObjectAttributeTranscoder extends AbstractSAML1AttributeTra
         }
         
         final Boolean includeAttributeValue = rule.getOrDefault(PROP_INCLUDE_ATTR_VALUE, Boolean.class, Boolean.FALSE);
+        assert includeAttributeValue != null;
         if (includeAttributeValue) {
             return new XMLObjectAttributeValue(value);
         }
@@ -94,4 +95,4 @@ public class SAML1XMLObjectAttributeTranscoder extends AbstractSAML1AttributeTra
         return new XMLObjectAttributeValue(child);
     }
     
-}
+}
\ No newline at end of file
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoder.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoder.java
index 66247bd02..c0b8cf368 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoder.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoder.java
@@ -59,7 +59,8 @@ public class SAML2ByteAttributeTranscoder extends AbstractSAML2AttributeTranscod
             @Nonnull final ByteAttributeValue value) throws AttributeEncodingException {
                 
         final Boolean encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.class, Boolean.TRUE);
-
+        assert encodeType != null;
+        
         try {
             return SAMLEncoderSupport.encodeByteArrayValue(attribute, AttributeValue.DEFAULT_ELEMENT_NAME, 
                     value.getValue(), encodeType);
@@ -91,4 +92,4 @@ public class SAML2ByteAttributeTranscoder extends AbstractSAML2AttributeTranscod
         }
     }
     
-}
+}
\ No newline at end of file
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoder.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoder.java
index c16d8f368..83f8f4827 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoder.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoder.java
@@ -70,6 +70,7 @@ public class SAML2DateTimeAttributeTranscoder extends AbstractSAML2AttributeTran
             @Nonnull final DateTimeAttributeValue value) throws AttributeEncodingException {
         
         final Boolean encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.class, Boolean.TRUE);
+        assert encodeType != null;
         
         return SAMLEncoderSupport.encodeDateTimeValue(attribute, AttributeValue.DEFAULT_ELEMENT_NAME, value.getValue(),
                 encodeType);
@@ -105,9 +106,12 @@ public class SAML2DateTimeAttributeTranscoder extends AbstractSAML2AttributeTran
             
             return getDateTimeValue(rule, ((XSString) object).getValue());
             
-        } else if (object instanceof XSInteger && ((XSInteger) object).getValue() != null) {
+        } else if (object instanceof XSInteger) {
 
-            return getDateTimeValue(rule, ((XSInteger) object).getValue().longValue());
+            final Integer value = ((XSInteger) object).getValue();
+            if (value != null) {
+                return getDateTimeValue(rule, value.longValue());
+            }
 
         } else if (object instanceof XSDateTime) {
 
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoder.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoder.java
index c40e52b61..e7858c191 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoder.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoder.java
@@ -72,11 +72,15 @@ public class SAML2ScopedStringAttributeTranscoder extends AbstractSAML2Attribute
         if ("attribute".equals(scopeType)) {
             final Boolean encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.class, Boolean.FALSE);
             final String scopeAttributeName = rule.getOrDefault(PROP_SCOPE_ATTR_NAME, String.class, "Scope");
+            assert encodeType != null;
+            assert scopeAttributeName != null;
             return SAMLEncoderSupport.encodeScopedStringValueAttribute(attribute,
                     AttributeValue.DEFAULT_ELEMENT_NAME, value, scopeAttributeName, encodeType);
         } else if ("inline".equals(scopeType)) {
             final Boolean encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.class, Boolean.TRUE);
             final String scopeDelimiter = rule.getOrDefault(PROP_SCOPE_DELIMITER, String.class, "@");
+            assert encodeType != null;
+            assert scopeDelimiter != null;
             return SAMLEncoderSupport.encodeScopedStringValueInline(
                     attribute, AttributeValue.DEFAULT_ELEMENT_NAME, value, scopeDelimiter, encodeType);
         } else {
@@ -116,14 +120,15 @@ public class SAML2ScopedStringAttributeTranscoder extends AbstractSAML2Attribute
             return null;
         } else if ("inline".equals(scopeType)) {
             final String scopeDelimiter = rule.getOrDefault(PROP_SCOPE_DELIMITER, String.class, "@");
+            assert scopeDelimiter != null;
             final int offset = stringValue.indexOf(scopeDelimiter);
             if (offset < 0) {
                 log.warn("Ignoring value with no scope delimiter ({})", scopeDelimiter);
                 return null;
             }
 
-            return ScopedStringAttributeValue.valueOf(stringValue.substring(0, offset), stringValue.substring(offset
-                    + scopeDelimiter.length()));
+            return ScopedStringAttributeValue.valueOf(stringValue.substring(0, offset),
+                    stringValue.substring(offset + scopeDelimiter.length()));
             
         } else {
             log.error("Invalid scopeType property (must be inline or attribute)");
@@ -131,4 +136,4 @@ public class SAML2ScopedStringAttributeTranscoder extends AbstractSAML2Attribute
         }
     }
         
-}
+}
\ No newline at end of file
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoder.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoder.java
index e2f1e1712..0c77163bd 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoder.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoder.java
@@ -62,6 +62,7 @@ public class SAML2StringAttributeTranscoder extends AbstractSAML2AttributeTransc
         }
         
         final Boolean encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.class, Boolean.TRUE);
+        assert encodeType != null;
         
         return SAMLEncoderSupport.encodeStringValue(attribute, AttributeValue.DEFAULT_ELEMENT_NAME, value.getValue(),
                 encodeType);
diff --git a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoder.java b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoder.java
index 66c1f0617..9d8a0f84c 100644
--- a/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoder.java
+++ b/shib-saml-attribute-impl/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoder.java
@@ -75,6 +75,7 @@ public class SAML2XMLObjectAttributeTranscoder extends AbstractSAML2AttributeTra
         }
         
         final Boolean includeAttributeValue = rule.getOrDefault(PROP_INCLUDE_ATTR_VALUE, Boolean.class, Boolean.FALSE);
+        assert includeAttributeValue != null;
         if (includeAttributeValue) {
             return new XMLObjectAttributeValue(value);
         }
@@ -94,4 +95,4 @@ public class SAML2XMLObjectAttributeTranscoder extends AbstractSAML2AttributeTra
         return new XMLObjectAttributeValue(child);
     }
     
-}
+}
\ No newline at end of file
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java
index 80c064274..88319528f 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import net.shibboleth.idp.attribute.AttributeDecodingException;
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
@@ -39,6 +41,7 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.codec.Base64Support;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
@@ -59,6 +62,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /** {@link SAML1ByteAttributeTranscoder} unit test. */
+ at SuppressWarnings("javadoc")
 public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private AttributeTranscoderRegistryImpl registry;
@@ -69,10 +73,10 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private SAMLObjectBuilder<AttributeDesignator> designatorBuilder;
 
-    private final static String ATTR_NAME = "foo";
-    private final static String ATTR_NAMESPACE = "Namespace";
-    private final static byte[] BYTE_ARRAY_1 = {1, 2, 3, 4, 5};
-    private final static byte[] BYTE_ARRAY_2 = {4, 3, 2, 1};
+    @Nonnull @NotEmpty private final static String ATTR_NAME = "foo";
+    @Nonnull @NotEmpty private final static String ATTR_NAMESPACE = "Namespace";
+    @Nonnull @NotEmpty private final static byte[] BYTE_ARRAY_1 = {1, 2, 3, 4, 5};
+    @Nonnull @NotEmpty private final static byte[] BYTE_ARRAY_2 = {4, 3, 2, 1};
     
     /** Invalid base64 string as it has invalid trailing digits. */
     private final static String INVALID_BASE64_TRAILING = "AB==";
@@ -120,6 +124,7 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
@@ -131,11 +136,12 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, AttributeDesignator.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final AttributeDesignator attr = TranscoderSupport.<AttributeDesignator>getTranscoder(ruleset).encode(
                 null, inputAttribute, AttributeDesignator.class, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getAttributeName(), ATTR_NAME);
         Assert.assertEquals(attr.getAttributeNamespace(), ATTR_NAMESPACE);
     }
@@ -150,10 +156,11 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -167,9 +174,11 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<AttributeDesignator>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
+        assert attr != null;
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertFalse(((IdPRequestedAttribute) attr).isRequired());
@@ -181,10 +190,10 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final List<IdPAttributeValue> values =
                 Arrays.asList(new StringAttributeValue("foo"), new ScopedStringAttributeValue("foo", "bar"),
                         new IdPAttributeValue() {
-                            public Object getNativeValue() {
+                            @Nonnull public Object getNativeValue() {
                                 return intArray;
                             }
-                            public String getDisplayValue() {
+                            @Nonnull public String getDisplayValue() {
                                 return intArray.toString();
                             }
                         });
@@ -195,6 +204,7 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
@@ -209,15 +219,17 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getAttributeName(), ATTR_NAME);
         Assert.assertEquals(attr.getAttributeNamespace(), ATTR_NAMESPACE);
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -227,9 +239,10 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
                 "Attribute Value not inside <AttributeValue/>");
         Assert.assertTrue(child instanceof XSBase64Binary, "Child of result attribute should be a base64Binary");
 
-        XSBase64Binary childAsString = (XSBase64Binary) child;
-
-        byte childAsBa[] = Base64Support.decode(childAsString.getValue());
+        final String b64 = ((XSBase64Binary) child).getValue();
+        assert b64 != null;
+        
+        byte childAsBa[] = Base64Support.decode(b64);
 
         Assert.assertEquals(childAsBa, BYTE_ARRAY_1, "Input equals output");
     }
@@ -244,11 +257,12 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
 
         final AttributeDesignator attr = TranscoderSupport.<AttributeDesignator>getTranscoder(ruleset).encode(
                 null, inputAttribute, AttributeDesignator.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getAttributeName(), ATTR_NAME);
         Assert.assertEquals(attr.getAttributeNamespace(), ATTR_NAMESPACE);
     }
@@ -266,10 +280,11 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 1);
         Assert.assertEquals(((ByteAttributeValue)attr.getValues().get(0)).getValue(), BYTE_ARRAY_1);
@@ -288,6 +303,7 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
     }
@@ -304,6 +320,7 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
     }
@@ -318,13 +335,14 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
-
-        Assert.assertNotNull(attr);
+        assert attr != null;
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
         Assert.assertEquals(children.size(), 2, "Encoding three entries");
 
         XMLObject child = children.get(0);
@@ -332,16 +350,18 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
                 "Attribute Value not inside <AttributeValue/>");
         Assert.assertTrue(child instanceof XSBase64Binary, "Child of result attribute should be a base64Binary");
 
-        XSBase64Binary childAsString = (XSBase64Binary) child;
+        final String b64 = ((XSBase64Binary) child).getValue();
+        assert b64 != null;
         Assert.assertEquals(child.getElementQName(), AttributeValue.DEFAULT_ELEMENT_NAME,
                 "Attribute Value not inside <AttributeValue/>");
-        final byte[] res0 = Base64Support.decode(childAsString.getValue());
+        final byte[] res0 = Base64Support.decode(b64);
         
         child = children.get(1);
         Assert.assertTrue(child instanceof XSBase64Binary, "Child of result attribute should be a base64Binary");
-
-        childAsString = (XSBase64Binary) child;
-        final byte[] res1 = Base64Support.decode(childAsString.getValue());
+        final String b64_2 = ((XSBase64Binary) child).getValue();
+        assert b64_2 != null;
+        
+        final byte[] res1 = Base64Support.decode(b64_2);
 
         //
         // order of results is not guaranteed so sense the result from the length
@@ -375,10 +395,11 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 2);
         Assert.assertEquals(((ByteAttributeValue)attr.getValues().get(0)).getValue(), BYTE_ARRAY_1);
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java
index 254bcc15a..08167496f 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
 import net.shibboleth.idp.attribute.IdPAttribute;
@@ -39,6 +41,7 @@ import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistry
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.xmlobject.ScopedValue;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
@@ -57,6 +60,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /** {@link SAML1ScopedStringAttributeTranscoder} unit test. */
+ at SuppressWarnings("javadoc")
 public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private AttributeTranscoderRegistryImpl registry;
@@ -69,13 +73,13 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
 
     private SAMLObjectBuilder<AttributeDesignator> designatorBuilder;
 
-    private final static String ATTR_NAME = "foo";
-    private final static String ATTR_NAMESPACE = "Namespace";
-    private final static String STRING_1 = "Value The First";
-    private final static String STRING_2 = "Second string the value is";
-    private final static String SCOPE_1 = "scope1.example.org";
-    private final static String SCOPE_2 = "scope2";
-    private final static String DELIMITER = "#";
+    @Nonnull @NotEmpty private final static String ATTR_NAME = "foo";
+    @Nonnull @NotEmpty private final static String ATTR_NAMESPACE = "Namespace";
+    @Nonnull @NotEmpty private final static String STRING_1 = "Value The First";
+    @Nonnull @NotEmpty private final static String STRING_2 = "Second string the value is";
+    @Nonnull @NotEmpty private final static String SCOPE_1 = "scope1.example.org";
+    @Nonnull @NotEmpty private final static String SCOPE_2 = "scope2";
+    @Nonnull @NotEmpty private final static String DELIMITER = "#";
 
     @BeforeClass public void setUp() throws ComponentInitializationException {
         
@@ -125,6 +129,7 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
@@ -139,10 +144,11 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -156,8 +162,10 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<AttributeDesignator>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -170,11 +178,11 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final List<IdPAttributeValue> values =
                 Arrays.asList(new ByteAttributeValue(new byte[] {1, 2, 3,}), new IdPAttributeValue() {
                     @Override
-                    public Object getNativeValue() {
+                    @Nonnull public Object getNativeValue() {
                         return intArray;
                     }
                     @Override
-                    public String getDisplayValue() {
+                    @Nonnull public String getDisplayValue() {
                         return intArray.toString();
                     }
                 });
@@ -185,6 +193,7 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
@@ -202,15 +211,17 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getAttributeName(), ATTR_NAME);
         Assert.assertEquals(attr.getAttributeNamespace(), ATTR_NAMESPACE);
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -240,11 +251,12 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
 
         final AttributeDesignator attr = TranscoderSupport.<AttributeDesignator>getTranscoder(ruleset).encode(
                 null, inputAttribute, AttributeDesignator.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getAttributeName(), ATTR_NAME);
         Assert.assertEquals(attr.getAttributeNamespace(), ATTR_NAMESPACE);
     }
@@ -264,10 +276,11 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 1);
         
@@ -288,13 +301,14 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
-
-        Assert.assertNotNull(attr);
+        assert attr != null;
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
         Assert.assertEquals(children.size(), 2, "Encoding 2 entries");
 
         Assert.assertTrue(children.get(0) instanceof ScopedValue && children.get(1) instanceof ScopedValue,
@@ -354,10 +368,11 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 2);
         
@@ -369,4 +384,4 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         Assert.assertTrue(SCOPE_2.equals(value1.getScope()) || SCOPE_2.equals(value2.getScope()));
     }
 
-}
+}
\ No newline at end of file
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java
index 0844f55a7..d03f7a20d 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
 import net.shibboleth.idp.attribute.IdPAttribute;
@@ -38,6 +40,7 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
@@ -56,6 +59,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /** {@link SAML1StringAttributeTranscoder} unit test. */
+ at SuppressWarnings("javadoc")
 public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private AttributeTranscoderRegistryImpl registry;
@@ -66,10 +70,10 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
 
     private SAMLObjectBuilder<AttributeDesignator> designatorBuilder;
 
-    private final static String ATTR_NAME = "foo";
-    private final static String ATTR_NAMESPACE = "Namespace";
-    private final static String STRING_1 = "Value The First";
-    private final static String STRING_2 = "Second string the value is";
+    @Nonnull @NotEmpty private final static String ATTR_NAME = "foo";
+    @Nonnull @NotEmpty private final static String ATTR_NAMESPACE = "Namespace";
+    @Nonnull @NotEmpty private final static String STRING_1 = "Value The First";
+    @Nonnull @NotEmpty private final static String STRING_2 = "Second string the value is";
 
     @BeforeClass public void setUp() throws ComponentInitializationException {
         
@@ -114,6 +118,7 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
@@ -125,11 +130,12 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, AttributeDesignator.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final AttributeDesignator attr = TranscoderSupport.<AttributeDesignator>getTranscoder(ruleset).encode(
                 null, inputAttribute, AttributeDesignator.class, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getAttributeName(), ATTR_NAME);
         Assert.assertEquals(attr.getAttributeNamespace(), ATTR_NAMESPACE);
     }
@@ -144,10 +150,11 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -161,8 +168,10 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<AttributeDesignator>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -175,11 +184,11 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final List<IdPAttributeValue> values =
                 Arrays.asList(new ByteAttributeValue(new byte[] {1, 2, 3,}), new IdPAttributeValue() {
                     @Override
-                    public Object getNativeValue() {
+                    @Nonnull public Object getNativeValue() {
                         return intArray;
                     }
                     @Override
-                    public String getDisplayValue() {
+                    @Nonnull public String getDisplayValue() {
                         return intArray.toString();
                     }
                 });
@@ -190,6 +199,7 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
@@ -204,15 +214,17 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getAttributeName(), ATTR_NAME);
         Assert.assertEquals(attr.getAttributeNamespace(), ATTR_NAMESPACE);
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -238,11 +250,12 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
 
         final AttributeDesignator attr = TranscoderSupport.<AttributeDesignator>getTranscoder(ruleset).encode(
                 null, inputAttribute, AttributeDesignator.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getAttributeName(), ATTR_NAME);
         Assert.assertEquals(attr.getAttributeNamespace(), ATTR_NAMESPACE);
     }
@@ -260,10 +273,11 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 1);
         Assert.assertEquals(((StringAttributeValue)attr.getValues().get(0)).getValue().toString(), STRING_1);
@@ -282,13 +296,14 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
-
-        Assert.assertNotNull(attr);
+        assert attr != null;
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
         Assert.assertEquals(children.size(), 3, "Encoding three entries");
 
         for (final XMLObject child: children) {
@@ -315,10 +330,11 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 2);
         Assert.assertEquals(((StringAttributeValue)attr.getValues().get(0)).getValue().toString(), STRING_1);
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
index d11800c99..4c668443d 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.XMLObjectBuilder;
@@ -54,11 +56,13 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.codec.Base64Support;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
 /** {@link SAML2ByteAttributeTranscoder} unit test. */
+ at SuppressWarnings("javadoc")
 public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private AttributeTranscoderRegistryImpl registry;
@@ -69,11 +73,11 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private SAMLObjectBuilder<RequestedAttribute> reqAttributeBuilder;
 
-    private final static String ATTR_NAME = "foo";
-    private final static String ATTR_NAMEFORMAT = "Namespace";
-    private final static String ATTR_FRIENDLYNAME = "friendly";
-    private final static byte[] BYTE_ARRAY_1 = {1, 2, 3, 4, 5};
-    private final static byte[] BYTE_ARRAY_2 = {4, 3, 2, 1};
+    @Nonnull @NotEmpty private final static String ATTR_NAME = "foo";
+    @Nonnull @NotEmpty private final static String ATTR_NAMEFORMAT = "Namespace";
+    @Nonnull @NotEmpty private final static String ATTR_FRIENDLYNAME = "friendly";
+    @Nonnull @NotEmpty private final static byte[] BYTE_ARRAY_1 = {1, 2, 3, 4, 5};
+    @Nonnull @NotEmpty private final static byte[] BYTE_ARRAY_2 = {4, 3, 2, 1};
     
     /** Invalid base64 string as it has invalid trailing digits. */
     private final static String INVALID_BASE64_TRAILING = "AB==";
@@ -122,11 +126,12 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
@@ -142,10 +147,11 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -160,8 +166,10 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -174,10 +182,10 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final List<IdPAttributeValue> values =
                 Arrays.asList(new StringAttributeValue("foo"), new ScopedStringAttributeValue("foo", "bar"),
                         new IdPAttributeValue() {
-                            public Object getNativeValue() {
+                            @Nonnull public Object getNativeValue() {
                                 return intArray;
                             }
-                            public String getDisplayValue() {
+                            @Nonnull public String getDisplayValue() {
                                 return intArray.toString();
                             }
                         });
@@ -188,6 +196,7 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
@@ -202,16 +211,18 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -221,9 +232,10 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
                 "Attribute Value not inside <AttributeValue/>");
         Assert.assertTrue(child instanceof XSBase64Binary, "Child of result attribute should be a base64Binary");
 
-        XSBase64Binary childAsString = (XSBase64Binary) child;
+        final String b64 = ((XSBase64Binary) child).getValue();
+        assert b64 != null;
 
-        byte childAsBa[] = Base64Support.decode(childAsString.getValue());
+        byte childAsBa[] = Base64Support.decode(b64);
 
         Assert.assertEquals(childAsBa, BYTE_ARRAY_1, "Input equals output");
     }
@@ -239,17 +251,19 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
 
         final RequestedAttribute attr = TranscoderSupport.<RequestedAttribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, RequestedAttribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
         Assert.assertTrue(attr.isRequired());
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -259,9 +273,10 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
                 "Attribute Value not inside <AttributeValue/>");
         Assert.assertTrue(child instanceof XSBase64Binary, "Child of result attribute should be a base64Binary");
 
-        XSBase64Binary childAsString = (XSBase64Binary) child;
+        final String b64 = ((XSBase64Binary) child).getValue();
+        assert b64 != null;
 
-        byte childAsBa[] = Base64Support.decode(childAsString.getValue());
+        byte childAsBa[] = Base64Support.decode(b64);
 
         Assert.assertEquals(childAsBa, BYTE_ARRAY_1, "Input equals output");
     }
@@ -279,10 +294,11 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 1);
         Assert.assertEquals(((ByteAttributeValue)attr.getValues().get(0)).getValue(), BYTE_ARRAY_1);
@@ -301,6 +317,7 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
     }
@@ -317,6 +334,7 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
     }
@@ -335,8 +353,10 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -355,13 +375,15 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
         Assert.assertEquals(children.size(), 2, "Encoding three entries");
 
         XMLObject child = children.get(0);
@@ -369,16 +391,19 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
                 "Attribute Value not inside <AttributeValue/>");
         Assert.assertTrue(child instanceof XSBase64Binary, "Child of result attribute should be a base64Binary");
 
-        XSBase64Binary childAsString = (XSBase64Binary) child;
+        final String b64 = ((XSBase64Binary) child).getValue();
+        assert b64 != null;
         Assert.assertEquals(child.getElementQName(), AttributeValue.DEFAULT_ELEMENT_NAME,
                 "Attribute Value not inside <AttributeValue/>");
-        final byte[] res0 = Base64Support.decode(childAsString.getValue());
+        final byte[] res0 = Base64Support.decode(b64);
         
         child = children.get(1);
         Assert.assertTrue(child instanceof XSBase64Binary, "Child of result attribute should be a base64Binary");
 
-        childAsString = (XSBase64Binary) child;
-        final byte[] res1 = Base64Support.decode(childAsString.getValue());
+        final String b64_2 = ((XSBase64Binary) child).getValue();
+        assert b64_2 != null;
+
+        final byte[] res1 = Base64Support.decode(b64_2);
 
         //
         // order of results is not guaranteed so sense the result from the length
@@ -412,14 +437,15 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 2);
         Assert.assertEquals(((ByteAttributeValue)attr.getValues().get(0)).getValue(), BYTE_ARRAY_1);
         Assert.assertEquals(((ByteAttributeValue)attr.getValues().get(1)).getValue(), BYTE_ARRAY_2);
     }
 
-}
+}
\ No newline at end of file
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoderTest.java
index b6a8fcee8..427b17bcf 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoderTest.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
 import net.shibboleth.idp.attribute.DateTimeAttributeValue;
@@ -37,6 +39,7 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
@@ -56,6 +59,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /** {@link SAML2DateTimeAttributeTranscoder} unit test. */
+ at SuppressWarnings("javadoc")
 public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private AttributeTranscoderRegistryImpl registry;
@@ -68,13 +72,13 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
 
     private SAMLObjectBuilder<RequestedAttribute> reqAttributeBuilder;
 
-    private final static String ATTR_NAME = "foo";
-    private final static String ATTR_NAMEFORMAT = "Namespace";
-    private final static String ATTR_FRIENDLYNAME = "friendly";
-    private final static String STRING_SECS = "1659979872";
-    private final static String STRING_MSECS = "1659979872969";
-    private final static String STRING_ISO = "2022-08-08T17:31:12.969Z";
-    private final static String STRING_INVALID = "invalid";
+    @Nonnull @NotEmpty private final static String ATTR_NAME = "foo";
+    @Nonnull @NotEmpty private final static String ATTR_NAMEFORMAT = "Namespace";
+    @Nonnull @NotEmpty private final static String ATTR_FRIENDLYNAME = "friendly";
+    @Nonnull @NotEmpty private final static String STRING_SECS = "1659979872";
+    @Nonnull @NotEmpty private final static String STRING_MSECS = "1659979872969";
+    @Nonnull @NotEmpty private final static String STRING_ISO = "2022-08-08T17:31:12.969Z";
+    @Nonnull @NotEmpty private final static String STRING_INVALID = "invalid";
         
     @BeforeClass public void setUp() throws ComponentInitializationException {
         
@@ -121,11 +125,12 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
@@ -141,10 +146,11 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -167,10 +173,11 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 1);
     }
@@ -185,8 +192,10 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -199,10 +208,10 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final List<IdPAttributeValue> values =
                 List.of(new ByteAttributeValue(new byte[] {1, 2, 3,}), new IdPAttributeValue() {
                     @Override
-                    public Object getNativeValue() {
+                    @Nonnull public Object getNativeValue() {
                         return intArray;
                     }
-                    @Override
+                    @Nonnull @Override
                     public String getDisplayValue() {
                         return intArray.toString();
                     }
@@ -214,6 +223,7 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
@@ -228,16 +238,18 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -265,17 +277,19 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
 
         final RequestedAttribute attr = TranscoderSupport.<RequestedAttribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, RequestedAttribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
         Assert.assertTrue(attr.isRequired());
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -286,9 +300,10 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
 
         Assert.assertTrue(child instanceof XSDateTime, "Child of result attribute should be a string");
 
-        final XSDateTime childAsString = (XSDateTime) child;
+        final Instant val = ((XSDateTime) child).getValue();
+        assert val != null;
 
-        Assert.assertEquals(childAsString.getValue().getEpochSecond(), Long.valueOf(STRING_SECS));
+        Assert.assertEquals(val.getEpochSecond(), Long.valueOf(STRING_SECS));
     }
     
     @Test public void singleDecodeString() throws Exception {
@@ -304,10 +319,11 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 1);
         Assert.assertEquals(((DateTimeAttributeValue)attr.getValues().get(0)).getValue().toString(), STRING_ISO);
@@ -328,8 +344,10 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
index be53a4806..3d613edeb 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
 import net.shibboleth.idp.attribute.IdPAttribute;
@@ -38,6 +40,7 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
@@ -56,6 +59,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /** {@link SAML2ScopedStringAttributeTranscoder} unit test. */
+ at SuppressWarnings("javadoc")
 public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private AttributeTranscoderRegistryImpl registry;
@@ -66,14 +70,14 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
 
     private SAMLObjectBuilder<RequestedAttribute> reqAttributeBuilder;
 
-    private final static String ATTR_NAME = "foo";
-    private final static String ATTR_NAMEFORMAT = "Namespace";
-    private final static String ATTR_FRIENDLYNAME = "friendly";
-    private final static String STRING_1 = "Value The First";
-    private final static String STRING_2 = "Second string the value is";
-    private final static String SCOPE_1 = "scope1.example.org";
-    private final static String SCOPE_2 = "scope2";
-    private final static String DELIMITER = "#";
+    @Nonnull @NotEmpty private final static String ATTR_NAME = "foo";
+    @Nonnull @NotEmpty private final static String ATTR_NAMEFORMAT = "Namespace";
+    @Nonnull @NotEmpty private final static String ATTR_FRIENDLYNAME = "friendly";
+    @Nonnull @NotEmpty private final static String STRING_1 = "Value The First";
+    @Nonnull @NotEmpty private final static String STRING_2 = "Second string the value is";
+    @Nonnull @NotEmpty private final static String SCOPE_1 = "scope1.example.org";
+    @Nonnull @NotEmpty private final static String SCOPE_2 = "scope2";
+    @Nonnull @NotEmpty private final static String DELIMITER = "#";
 
     @BeforeClass public void setUp() throws ComponentInitializationException {
         
@@ -120,11 +124,12 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
@@ -140,10 +145,11 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -158,8 +164,10 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -172,11 +180,11 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final List<IdPAttributeValue> values =
                 Arrays.asList(new ByteAttributeValue(new byte[] {1, 2, 3,}), new IdPAttributeValue() {
                     @Override
-                    public Object getNativeValue() {
+                    @Nonnull public Object getNativeValue() {
                         return intArray;
                     }
                     @Override
-                    public String getDisplayValue() {
+                    @Nonnull public String getDisplayValue() {
                         return intArray.toString();
                     }
                 });
@@ -187,6 +195,7 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
@@ -204,16 +213,18 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -244,17 +255,19 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
 
         final RequestedAttribute attr = TranscoderSupport.<RequestedAttribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, RequestedAttribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
         Assert.assertTrue(attr.isRequired());
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -283,10 +296,11 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 1);
         
@@ -310,8 +324,10 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -335,13 +351,15 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
         Assert.assertEquals(children.size(), 2, "Encoding 2 entries");
 
         final String s1 = STRING_1 + DELIMITER + SCOPE_1;
@@ -379,10 +397,11 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 2);
         
@@ -394,4 +413,4 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         Assert.assertTrue(SCOPE_2.equals(value1.getScope()) || SCOPE_2.equals(value2.getScope()));
     }
 
-}
+}
\ No newline at end of file
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
index b5cdac45a..a2bb6982b 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
@@ -23,6 +23,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
 import net.shibboleth.idp.attribute.IdPAttribute;
@@ -37,6 +39,7 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
@@ -55,6 +58,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /** {@link SAML2StringAttributeTranscoder} unit test. */
+ at SuppressWarnings("javadoc")
 public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private AttributeTranscoderRegistryImpl registry;
@@ -65,11 +69,11 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
 
     private SAMLObjectBuilder<RequestedAttribute> reqAttributeBuilder;
 
-    private final static String ATTR_NAME = "foo";
-    private final static String ATTR_NAMEFORMAT = "Namespace";
-    private final static String ATTR_FRIENDLYNAME = "friendly";
-    private final static String STRING_1 = "Value The First";
-    private final static String STRING_2 = "Second string the value is";
+    @Nonnull @NotEmpty private final static String ATTR_NAME = "foo";
+    @Nonnull @NotEmpty private final static String ATTR_NAMEFORMAT = "Namespace";
+    @Nonnull @NotEmpty private final static String ATTR_FRIENDLYNAME = "friendly";
+    @Nonnull @NotEmpty private final static String STRING_1 = "Value The First";
+    @Nonnull @NotEmpty private final static String STRING_2 = "Second string the value is";
 
     @BeforeClass public void setUp() throws ComponentInitializationException {
         
@@ -115,11 +119,12 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
@@ -135,10 +140,11 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -153,8 +159,10 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -167,11 +175,11 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final List<IdPAttributeValue> values =
                 List.of(new ByteAttributeValue(new byte[] {1, 2, 3,}), new IdPAttributeValue() {
                     @Override
-                    public Object getNativeValue() {
+                    @Nonnull public Object getNativeValue() {
                         return intArray;
                     }
                     @Override
-                    public String getDisplayValue() {
+                    @Nonnull public String getDisplayValue() {
                         return intArray.toString();
                     }
                 });
@@ -182,6 +190,7 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
@@ -196,16 +205,18 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -232,17 +243,19 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
 
         final RequestedAttribute attr = TranscoderSupport.<RequestedAttribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, RequestedAttribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
         Assert.assertTrue(attr.isRequired());
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
 
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
 
@@ -271,10 +284,11 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 1);
         Assert.assertEquals(((StringAttributeValue)attr.getValues().get(0)).getValue().toString(), STRING_1);
@@ -295,8 +309,10 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -318,13 +334,15 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
         Assert.assertEquals(children.size(), 3, "Encoding three entries");
 
         for (final XMLObject child: children) {
@@ -351,10 +369,11 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 2);
         Assert.assertEquals(((StringAttributeValue)attr.getValues().get(0)).getValue().toString(), STRING_1);
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
index e75bada79..ca2fd9790 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
@@ -22,7 +22,10 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.idp.attribute.AttributeEncodingException;
@@ -40,6 +43,7 @@ import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistry
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAMLEncoderSupport;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
@@ -59,6 +63,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /** {@link SAML2XMLObjectAttributeTranscoder} unit test. */
+ at SuppressWarnings("javadoc")
 public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
 
     private AttributeTranscoderRegistryImpl registry;
@@ -71,11 +76,11 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
 
     private SAMLObjectBuilder<RequestedAttribute> reqAttributeBuilder;
 
-    private final static String ATTR_NAME = "foo";
-    private final static String ATTR_NAMEFORMAT = "Namespace";
-    private final static String ATTR_FRIENDLYNAME = "friendly";
-    private final static String STRING_1 = "Value The First";
-    private final static String STRING_2 = "Second string the value is";
+    @Nonnull @NotEmpty private final static String ATTR_NAME = "foo";
+    @Nonnull @NotEmpty private final static String ATTR_NAMEFORMAT = "Namespace";
+    @Nonnull @NotEmpty private final static String ATTR_FRIENDLYNAME = "friendly";
+    @Nonnull @NotEmpty private final static String STRING_1 = "Value The First";
+    @Nonnull @NotEmpty private final static String STRING_2 = "Second string the value is";
 
     @BeforeClass public void setUp() throws ComponentInitializationException {
         
@@ -120,11 +125,12 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
@@ -140,10 +146,11 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -158,8 +165,10 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -172,11 +181,11 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final List<IdPAttributeValue> values =
                 List.of(new ByteAttributeValue(new byte[] {1, 2, 3,}), new IdPAttributeValue() {
                     @Override
-                    public Object getNativeValue() {
+                    @Nonnull public Object getNativeValue() {
                         return intArray;
                     }
                     @Override
-                    public String getDisplayValue() {
+                    @Nonnull public String getDisplayValue() {
                         return intArray.toString();
                     }
                 });
@@ -187,6 +196,7 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
@@ -201,24 +211,31 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
+        
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
         Assert.assertEquals(children.get(0).getElementQName(),
                 AttributeValue.DEFAULT_ELEMENT_NAME,
                 "Attribute Value not inside <AttributeValue/>");
-        Assert.assertEquals(children.get(0).getOrderedChildren().size(), 1,
+        
+        final List<XMLObject> nested = children.get(0).getOrderedChildren();
+        assert nested != null;
+        
+        Assert.assertEquals(nested.size(), 1,
                 "Expected exactly one child inside the <AttributeValue/>");
         
-        checkValues(children.get(0).getOrderedChildren().get(0), STRING_1);
+        checkValues(nested.get(0), STRING_1);
     }
 
     @Test public void singleRequested() throws Exception {
@@ -232,25 +249,31 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
 
         final RequestedAttribute attr = TranscoderSupport.<RequestedAttribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, RequestedAttribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
         Assert.assertTrue(attr.isRequired());
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
+        
         Assert.assertEquals(children.size(), 1, "Encoding one entry");
         Assert.assertEquals(children.get(0).getElementQName(),
                 AttributeValue.DEFAULT_ELEMENT_NAME,
                 "Attribute Value not inside <AttributeValue/>");
-        Assert.assertEquals(children.get(0).getOrderedChildren().size(), 1,
-                "Expected exactly one child inside the <AttributeValue/>");
         
-        checkValues(children.get(0).getOrderedChildren().get(0), STRING_1);
+        final List<XMLObject> nested = children.get(0).getOrderedChildren();
+        assert nested != null;
+        
+        Assert.assertEquals(nested.size(), 1, "Expected exactly one child inside the <AttributeValue/>");
+        
+        checkValues(nested.get(0), STRING_1);
     }
     
     @Test public void singleDecode() throws Exception {
@@ -269,10 +292,11 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 1);
         
@@ -300,8 +324,10 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
+        assert attr != null;
         
         Assert.assertTrue(attr instanceof IdPRequestedAttribute);
         Assert.assertEquals(attr.getId(), ATTR_NAME);
@@ -323,29 +349,40 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
 
         final List<XMLObject> children = attr.getOrderedChildren();
+        assert children != null;
+        
         Assert.assertEquals(children.size(), 2, "Encoding two entries");
 
         Assert.assertEquals(children.get(0).getElementQName(),
                 AttributeValue.DEFAULT_ELEMENT_NAME,
                 "Attribute Value not inside <AttributeValue/>");
-        Assert.assertEquals(children.get(0).getOrderedChildren().size(), 1,
+
+        final List<XMLObject> nested = children.get(0).getOrderedChildren();
+        assert nested != null;
+
+        Assert.assertEquals(nested.size(), 1,
                 "Expected exactly one child inside the <AttributeValue/> for first Attribute");
 
         Assert.assertEquals(children.get(1).getElementQName(),
                 AttributeValue.DEFAULT_ELEMENT_NAME,
                 "Attribute Value not inside <AttributeValue/>");
-        Assert.assertEquals(children.get(1).getOrderedChildren().size(), 1,
+
+        final List<XMLObject> nested1 = children.get(1).getOrderedChildren();
+        assert nested1 != null;
+
+        Assert.assertEquals(nested1.size(), 1,
                 "Expected exactly one child inside the <AttributeValue/> for second Attribute");
 
-        checkValues(children.get(0).getOrderedChildren().get(0), STRING_1, STRING_2);
-        checkValues(children.get(1).getOrderedChildren().get(0), STRING_1, STRING_2);
+        checkValues(nested.get(0), STRING_1, STRING_2);
+        checkValues(nested1.get(0), STRING_1, STRING_2);
     }
 
     @Test public void multiDecode() throws Exception {
@@ -371,10 +408,11 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(samlAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).decode(null, samlAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_NAME);
         Assert.assertEquals(attr.getValues().size(), 2);
         
@@ -397,12 +435,13 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
      * @param value that we encode
      * @return an XML object
      */
-    private static XMLObjectAttributeValue objectFor(final String value) {
+    @Nullable private static XMLObjectAttributeValue objectFor(@Nonnull final String value) {
         
         final IdPAttribute inputAttribute = new IdPAttribute(ATTR_NAME);
         inputAttribute.setValues(Collections.singletonList(new StringAttributeValue(value)));
-        return new XMLObjectAttributeValue(
-                SAMLEncoderSupport.encodeStringValue(inputAttribute, new QName("Foo"), value, true));
+        final XMLObject obj = SAMLEncoderSupport.encodeStringValue(inputAttribute, new QName("Foo"), value, true);
+        assert obj != null;
+        return new XMLObjectAttributeValue(obj);
     }
 
     /**
@@ -416,12 +455,12 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         Assert.assertTrue(input instanceof XSString);
         final String s = ((XSString) input).getValue();
 
-        for (String possible : possibles) {
-            if (s.equals(possible)) {
+        for (final String possible : possibles) {
+            if (Objects.equals(s, possible)) {
                 return;
             }
         }
         Assert.assertTrue(false, "No potential match");
     }
 
-}
+}
\ 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