[java-opensaml] branch main updated: IDP-2069 - Null Handling Task

Rod Widdowson rdw at steadingsoftware.com
Thu Mar 16 13:32:07 UTC 2023


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

rdw pushed a commit to branch main
in repository java-opensaml.

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

The following commit(s) were added to refs/heads/main by this push:
     new f06b9c02c IDP-2069 - Null Handling Task
f06b9c02c is described below

commit f06b9c02cfaaef6af1bad776d456475ac8337cd2
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Thu Mar 16 11:47:05 2023 +0000

    IDP-2069 - Null Handling Task
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    Conitnue annotating the static final String & static final QName
---
 .../impl/AbstractDynamicHTTPMetadataResolver.java  |   7 +-
 .../impl/AbstractDynamicMetadataResolver.java      |  11 ++-
 .../resolver/impl/TemplateRequestURLBuilder.java   |   2 +-
 .../binding/encoding/impl/HTTPPostEncoder.java     |   8 +-
 .../binding/encoding/impl/HTTPPostEncoder.java     |   8 +-
 .../encoding/impl/HTTPPostSimpleSignEncoder.java   |  13 ++-
 .../GlobalNamedCurveRegistryInitializer.java       |   5 +-
 .../org/opensaml/security/crypto/JCAConstants.java | 102 +++++++++++----------
 .../httpclient/HttpClientSecurityConstants.java    |  19 ++--
 .../ServletRequestX509CredentialAdapter.java       |   8 +-
 .../org/opensaml/security/x509/X500DNHandler.java  |   6 +-
 .../impl/EvaluableCredentialCriteriaRegistry.java  |   9 +-
 .../client/http/HttpSOAPRequestParameters.java     |   6 +-
 .../java/org/opensaml/soap/util/SOAPConstants.java |  14 ++-
 .../testing/SecurityProviderTestSupport.java       |   8 +-
 .../xmlsec/encryption/AgreementMethod.java         |  15 +--
 .../opensaml/xmlsec/encryption/CarriedKeyName.java |   9 +-
 .../org/opensaml/xmlsec/encryption/CipherData.java |  13 ++-
 .../xmlsec/encryption/CipherReference.java         |  15 +--
 .../opensaml/xmlsec/encryption/CipherValue.java    |   9 +-
 .../xmlsec/encryption/ConcatKDFParams.java         |  21 +++--
 .../opensaml/xmlsec/encryption/DataReference.java  |   9 +-
 .../org/opensaml/xmlsec/encryption/DerivedKey.java |  17 ++--
 .../opensaml/xmlsec/encryption/DerivedKeyName.java |   7 +-
 .../opensaml/xmlsec/encryption/EncryptedType.java  |  17 ++--
 .../xmlsec/encryption/EncryptionMethod.java        |  15 +--
 .../xmlsec/encryption/EncryptionProperties.java    |  14 +--
 .../xmlsec/encryption/EncryptionProperty.java      |  17 ++--
 .../opensaml/xmlsec/encryption/IterationCount.java |   7 +-
 .../org/opensaml/xmlsec/encryption/KANonce.java    |   9 +-
 .../xmlsec/encryption/KeyDerivationMethod.java     |  13 ++-
 .../org/opensaml/xmlsec/encryption/KeyLength.java  |   7 +-
 .../opensaml/xmlsec/encryption/KeyReference.java   |   9 +-
 .../org/opensaml/xmlsec/encryption/KeySize.java    |  13 ++-
 .../opensaml/xmlsec/encryption/MasterKeyName.java  |   7 +-
 .../org/opensaml/xmlsec/encryption/OAEPparams.java |   9 +-
 .../xmlsec/encryption/OriginatorKeyInfo.java       |   9 +-
 .../opensaml/xmlsec/encryption/OtherSource.java    |   7 +-
 .../opensaml/xmlsec/encryption/PBKDF2Params.java   |  11 ++-
 .../java/org/opensaml/xmlsec/encryption/PRF.java   |  11 ++-
 .../org/opensaml/xmlsec/encryption/Parameters.java |   7 +-
 .../opensaml/xmlsec/encryption/PgenCounter.java    |   9 +-
 .../xmlsec/encryption/RecipientKeyInfo.java        |   9 +-
 .../opensaml/xmlsec/encryption/ReferenceList.java  |   8 +-
 .../opensaml/xmlsec/encryption/ReferenceType.java  |  11 ++-
 .../java/org/opensaml/xmlsec/encryption/Salt.java  |   7 +-
 .../java/org/opensaml/xmlsec/encryption/Seed.java  |   9 +-
 .../org/opensaml/xmlsec/encryption/Specified.java  |   7 +-
 .../org/opensaml/xmlsec/encryption/Transforms.java |  12 ++-
 .../encryption/support/EncryptionConstants.java    |  84 +++++++++--------
 .../impl/DHWithLegacyKDFKeyAgreementProcessor.java |   4 +-
 .../DefaultSecurityConfigurationBootstrap.java     |   9 +-
 .../impl/JavaCryptoValidationInitializer.java      |   7 +-
 .../opensaml/xmlsec/derivation/impl/ConcatKDF.java |   3 +-
 .../opensaml/xmlsec/derivation/impl/PBKDF2.java    |   9 +-
 55 files changed, 430 insertions(+), 281 deletions(-)

diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java
index fe186abd2..6b2b56db4 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java
@@ -51,6 +51,7 @@ import com.google.common.io.ByteStreams;
 import com.google.common.net.MediaType;
 
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.collection.LazySet;
@@ -67,12 +68,12 @@ import net.shibboleth.shared.resolver.ResolverException;
 public abstract class AbstractDynamicHTTPMetadataResolver extends AbstractDynamicMetadataResolver {
     
     /** Default list of supported content MIME types. */
-    public static final String[] DEFAULT_CONTENT_TYPES = 
+    @Nonnull @NotEmpty public static final String[] DEFAULT_CONTENT_TYPES = 
             new String[] {"application/samlmetadata+xml", "application/xml", "text/xml"};
     
     /** MDC attribute representing the current request URI. Will be available during the execution of the 
      * configured {@link HttpClientResponseHandler}. */
-    public static final String MDC_ATTRIB_CURRENT_REQUEST_URI = 
+    @Nonnull @NotEmpty public static final String MDC_ATTRIB_CURRENT_REQUEST_URI = 
             AbstractDynamicHTTPMetadataResolver.class.getName() + ".currentRequestURI";
     
     /** Class logger. */
@@ -393,4 +394,4 @@ public abstract class AbstractDynamicHTTPMetadataResolver extends AbstractDynami
             
     }
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java
index 661afeca4..99b1db6ca 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java
@@ -70,6 +70,7 @@ import com.google.common.base.Predicates;
 
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Positive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
@@ -90,19 +91,19 @@ public abstract class AbstractDynamicMetadataResolver extends AbstractMetadataRe
         implements DynamicMetadataResolver, ClearableMetadataResolver {
     
     /** Metric name for the timer for {@link #fetchFromOriginSource(CriteriaSet)}. */
-    public static final String METRIC_TIMER_FETCH_FROM_ORIGIN_SOURCE = "timer.fetchFromOriginSource";
+    @Nonnull @NotEmpty public static final String METRIC_TIMER_FETCH_FROM_ORIGIN_SOURCE = "timer.fetchFromOriginSource";
     
     /** Metric name for the timer for {@link #resolve(CriteriaSet)}. */
-    public static final String METRIC_TIMER_RESOLVE = "timer.resolve";
+    @Nonnull @NotEmpty public static final String METRIC_TIMER_RESOLVE = "timer.resolve";
     
     /** Metric name for the ratio gauge of fetches to resolve requests. */
-    public static final String METRIC_RATIOGAUGE_FETCH_TO_RESOLVE = "ratioGauge.fetchToResolve";
+    @Nonnull @NotEmpty public static final String METRIC_RATIOGAUGE_FETCH_TO_RESOLVE = "ratioGauge.fetchToResolve";
     
     /** Metric name for the gauge of the number of live entityIDs. */
-    public static final String METRIC_GAUGE_NUM_LIVE_ENTITYIDS = "gauge.numLiveEntityIDs";
+    @Nonnull @NotEmpty public static final String METRIC_GAUGE_NUM_LIVE_ENTITYIDS = "gauge.numLiveEntityIDs";
     
     /** Metric name for the gauge of the persistent cache initialization metrics. */
-    public static final String METRIC_GAUGE_PERSISTENT_CACHE_INIT = "gauge.persistentCacheInitialization";
+    @Nonnull @NotEmpty public static final String METRIC_GAUGE_PERSISTENT_CACHE_INIT = "gauge.persistentCacheInitialization";
     
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(AbstractDynamicMetadataResolver.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/TemplateRequestURLBuilder.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/TemplateRequestURLBuilder.java
index 2e9ac0d16..5136b26e3 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/TemplateRequestURLBuilder.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/TemplateRequestURLBuilder.java
@@ -69,7 +69,7 @@ public class TemplateRequestURLBuilder implements Function<CriteriaSet, String>
     };
 
     /** The Velocity context variable name for the entity ID. */
-    public static final String CONTEXT_KEY_ENTITY_ID = "entityID";
+    @Nonnull @NotEmpty public static final String CONTEXT_KEY_ENTITY_ID = "entityID";
     
     /** Logger. */
     private final Logger log = LoggerFactory.getLogger(TemplateRequestURLBuilder.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/binding/encoding/impl/HTTPPostEncoder.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/binding/encoding/impl/HTTPPostEncoder.java
index ee47bf8af..73d0fea83 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/binding/encoding/impl/HTTPPostEncoder.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/binding/encoding/impl/HTTPPostEncoder.java
@@ -21,6 +21,8 @@ import java.io.OutputStreamWriter;
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
 
+import javax.annotation.Nonnull;
+
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.VelocityEngine;
 import org.opensaml.core.xml.XMLObject;
@@ -32,7 +34,7 @@ import org.opensaml.saml.common.xml.SAMLConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import jakarta.servlet.http.HttpServletResponse;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.codec.Base64Support;
 import net.shibboleth.shared.codec.EncodingException;
 import net.shibboleth.shared.codec.HTMLEncoder;
@@ -40,13 +42,15 @@ import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.servlet.HttpServletSupport;
 import net.shibboleth.shared.xml.SerializeSupport;
 
+import jakarta.servlet.http.HttpServletResponse;
+
 /**
  * SAML 1.X HTTP POST message encoder.
  */
 public class HTTPPostEncoder extends BaseSAML1MessageEncoder {
     
     /** Default template ID. */
-    public static final String DEFAULT_TEMPLATE_ID = "/templates/saml1-post-binding.vm";
+    @Nonnull @NotEmpty public static final String DEFAULT_TEMPLATE_ID = "/templates/saml1-post-binding.vm";
 
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(HTTPPostEncoder.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/encoding/impl/HTTPPostEncoder.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/encoding/impl/HTTPPostEncoder.java
index 0d96c49f5..4e42389c0 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/encoding/impl/HTTPPostEncoder.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/encoding/impl/HTTPPostEncoder.java
@@ -21,6 +21,8 @@ import java.io.OutputStreamWriter;
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
 
+import javax.annotation.Nonnull;
+
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.VelocityEngine;
 import org.opensaml.messaging.context.MessageContext;
@@ -34,7 +36,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Element;
 
-import jakarta.servlet.http.HttpServletResponse;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.codec.Base64Support;
 import net.shibboleth.shared.codec.EncodingException;
 import net.shibboleth.shared.codec.HTMLEncoder;
@@ -42,13 +44,15 @@ import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.servlet.HttpServletSupport;
 import net.shibboleth.shared.xml.SerializeSupport;
 
+import jakarta.servlet.http.HttpServletResponse;
+
 /**
  * SAML 2.0 HTTP Post binding message encoder.
  */
 public class HTTPPostEncoder extends BaseSAML2MessageEncoder {
     
     /** Default template ID. */
-    public static final String DEFAULT_TEMPLATE_ID = "/templates/saml2-post-binding.vm";
+    @Nonnull @NotEmpty public static final String DEFAULT_TEMPLATE_ID = "/templates/saml2-post-binding.vm";
 
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(HTTPPostEncoder.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/encoding/impl/HTTPPostSimpleSignEncoder.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/encoding/impl/HTTPPostSimpleSignEncoder.java
index b6b933ec5..befe7a42c 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/encoding/impl/HTTPPostSimpleSignEncoder.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/encoding/impl/HTTPPostSimpleSignEncoder.java
@@ -19,10 +19,7 @@ package org.opensaml.saml.saml2.binding.encoding.impl;
 
 import java.io.UnsupportedEncodingException;
 
-import net.shibboleth.shared.codec.Base64Support;
-import net.shibboleth.shared.codec.DecodingException;
-import net.shibboleth.shared.codec.EncodingException;
-import net.shibboleth.shared.xml.SerializeSupport;
+import javax.annotation.Nonnull;
 
 import org.apache.velocity.VelocityContext;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
@@ -45,13 +42,19 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Strings;
 
+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.xml.SerializeSupport;
+
 /**
  * SAML 2.0 HTTP-POST-SimpleSign binding message encoder.
  */
 public class HTTPPostSimpleSignEncoder extends HTTPPostEncoder {
     
     /** Default template ID. */
-    public static final String DEFAULT_TEMPLATE_ID = "/templates/saml2-post-simplesign-binding.vm";
+    @Nonnull @NotEmpty public static final String DEFAULT_TEMPLATE_ID = "/templates/saml2-post-simplesign-binding.vm";
 
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(HTTPPostSimpleSignEncoder.class);
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/config/GlobalNamedCurveRegistryInitializer.java b/opensaml-security-api/src/main/java/org/opensaml/security/config/GlobalNamedCurveRegistryInitializer.java
index 5c671e8dd..204121d97 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/config/GlobalNamedCurveRegistryInitializer.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/config/GlobalNamedCurveRegistryInitializer.java
@@ -23,6 +23,8 @@ import java.util.ServiceLoader;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.config.ConfigurationService;
 import org.opensaml.core.config.InitializationException;
 import org.opensaml.core.config.Initializer;
@@ -32,6 +34,7 @@ import org.opensaml.security.crypto.ec.NamedCurveRegistry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.component.InitializableComponent;
 
@@ -41,7 +44,7 @@ import net.shibboleth.shared.component.InitializableComponent;
 public class GlobalNamedCurveRegistryInitializer implements Initializer {
     
     /** Configuration property name for registering curves from Bouncy Castle. */
-    public static final String CONFIG_PROPERTY_REGISTER_BOUNCY_CASTLE_CURVES =
+    @Nonnull @NotEmpty public static final String CONFIG_PROPERTY_REGISTER_BOUNCY_CASTLE_CURVES =
             "opensaml.config.ec.registerBouncyCastleCurves";
     
     /** Logger. */
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/crypto/JCAConstants.java b/opensaml-security-api/src/main/java/org/opensaml/security/crypto/JCAConstants.java
index 13e14aae7..262bf767e 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/crypto/JCAConstants.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/crypto/JCAConstants.java
@@ -19,6 +19,10 @@ package org.opensaml.security.crypto;
 
 import java.security.Key;
 
+import javax.annotation.Nonnull;
+
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * Various useful constants defined in and/or used with the Java Cryptography Architecture (JCA) specification.
  */
@@ -27,183 +31,183 @@ public final class JCAConstants {
     // Key types
     
     /** Key algorithm: "RSA". */
-    public static final String KEY_ALGO_RSA = "RSA";
+    @Nonnull @NotEmpty public static final String KEY_ALGO_RSA = "RSA";
     
     /** Key algorithm: "DSA". */
-    public static final String KEY_ALGO_DSA = "DSA";
+    @Nonnull @NotEmpty public static final String KEY_ALGO_DSA = "DSA";
     
     /** Key algorithm: "EC". */
-    public static final String KEY_ALGO_EC = "EC";
+    @Nonnull @NotEmpty public static final String KEY_ALGO_EC = "EC";
     
     /** Key algorithm: "AES". */
-    public static final String KEY_ALGO_AES = "AES";
+    @Nonnull @NotEmpty public static final String KEY_ALGO_AES = "AES";
     
     /** Key algorithm: "DES". */
-    public static final String KEY_ALGO_DES = "DES";
+    @Nonnull @NotEmpty public static final String KEY_ALGO_DES = "DES";
     
     /** Key algorithm: "DESede". */
-    public static final String KEY_ALGO_DESEDE = "DESede";
+    @Nonnull @NotEmpty public static final String KEY_ALGO_DESEDE = "DESede";
     
     /** Key algorithm: "DH" (returned by {@link Key#getAlgorithm()}). */
-    public static final String KEY_ALGO_DH = "DH";
+    @Nonnull @NotEmpty public static final String KEY_ALGO_DH = "DH";
     
     /** Key algorithm: "DiffieHellman" (used with key and key pair factories, generators, etc). */
-    public static final String KEY_ALGO_DIFFIE_HELLMAN = "DiffieHellman";
+    @Nonnull @NotEmpty public static final String KEY_ALGO_DIFFIE_HELLMAN = "DiffieHellman";
     
     
     
     // Key formats
     
     /** Key format: "RAW". */
-    public static final String KEY_FORMAT_RAW = "RAW";
+    @Nonnull @NotEmpty public static final String KEY_FORMAT_RAW = "RAW";
     
     
     
     // Cipher modes
     
     /** Cipher mode: "ECB". */
-    public static final String CIPHER_MODE_ECB = "ECB";
+    @Nonnull @NotEmpty public static final String CIPHER_MODE_ECB = "ECB";
     
     /** Cipher mode: "CBC". */
-    public static final String CIPHER_MODE_CBC = "CBC";
+    @Nonnull @NotEmpty public static final String CIPHER_MODE_CBC = "CBC";
     
     /** Cipher mode: "GCM". */
-    public static final String CIPHER_MODE_GCM = "GCM";
+    @Nonnull @NotEmpty public static final String CIPHER_MODE_GCM = "GCM";
     
     
     
     // Cipher padding
     
     /** Cipher padding: "NoPadding". */
-    public static final String CIPHER_PADDING_NONE = "NoPadding";
+    @Nonnull @NotEmpty public static final String CIPHER_PADDING_NONE = "NoPadding";
     
     /** Cipher padding: "ISO10126Padding". */
-    public static final String CIPHER_PADDING_ISO10126 = "ISO10126Padding";
+    @Nonnull @NotEmpty public static final String CIPHER_PADDING_ISO10126 = "ISO10126Padding";
     
     /** Cipher padding: "PKCS1Padding". */
-    public static final String CIPHER_PADDING_PKCS1 = "PKCS1Padding";
+    @Nonnull @NotEmpty public static final String CIPHER_PADDING_PKCS1 = "PKCS1Padding";
     
     /** Cipher padding: "OAEPPadding". */
-    public static final String CIPHER_PADDING_OAEP = "OAEPPadding";
+    @Nonnull @NotEmpty public static final String CIPHER_PADDING_OAEP = "OAEPPadding";
     
     
     
     // Symmetric key wrap algorithms
     
     /** Symmetric key wrap algorithm: "DESedeWrap". */
-    public static final String KEYWRAP_ALGO_DESEDE = "DESedeWrap";
+    @Nonnull @NotEmpty public static final String KEYWRAP_ALGO_DESEDE = "DESedeWrap";
     
     /** Symmetric key wrap algorithm: "AESWrap". */
-    public static final String KEYWRAP_ALGO_AES = "AESWrap";
+    @Nonnull @NotEmpty public static final String KEYWRAP_ALGO_AES = "AESWrap";
     
     
     
     // Digest types
     
     /** Digest algorithm: "MD5". */
-    public static final String DIGEST_MD5 = "MD5";
+    @Nonnull @NotEmpty public static final String DIGEST_MD5 = "MD5";
     
     /** Digest algorithm: "RIPEMD160". */
-    public static final String DIGEST_RIPEMD160 = "RIPEMD160";
+    @Nonnull @NotEmpty public static final String DIGEST_RIPEMD160 = "RIPEMD160";
     
     /** Digest algorithm: "SHA-1". */
-    public static final String DIGEST_SHA1 = "SHA-1";
+    @Nonnull @NotEmpty public static final String DIGEST_SHA1 = "SHA-1";
     
     /** Digest algorithm: "SHA-224". */
-    public static final String DIGEST_SHA224 = "SHA-224";
+    @Nonnull @NotEmpty public static final String DIGEST_SHA224 = "SHA-224";
     
     /** Digest algorithm: "SHA-256". */
-    public static final String DIGEST_SHA256 = "SHA-256";
+    @Nonnull @NotEmpty public static final String DIGEST_SHA256 = "SHA-256";
     
     /** Digest algorithm: "SHA-384". */
-    public static final String DIGEST_SHA384 = "SHA-384";
+    @Nonnull @NotEmpty public static final String DIGEST_SHA384 = "SHA-384";
     
     /** Digest algorithm: "SHA-512". */
-    public static final String DIGEST_SHA512 = "SHA-512";
+    @Nonnull @NotEmpty public static final String DIGEST_SHA512 = "SHA-512";
     
     
     
     // Signature types
     
     /** Signature algorithm: "SHA1withDSA". */
-    public static final String SIGNATURE_DSA_SHA1 = "SHA1withDSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_DSA_SHA1 = "SHA1withDSA";
     
     /** Signature algorithm: "SHA224withDSA". */
-    public static final String SIGNATURE_DSA_SHA224 = "SHA224withDSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_DSA_SHA224 = "SHA224withDSA";
     
     /** Signature algorithm: "SHA256withDSA". */
-    public static final String SIGNATURE_DSA_SHA256 = "SHA256withDSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_DSA_SHA256 = "SHA256withDSA";
     
     /** Signature algorithm: "MD5withRSA". */
-    public static final String SIGNATURE_RSA_MD5 = "MD5withRSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_RSA_MD5 = "MD5withRSA";
     
     /** Signature algorithm: "RIPEMD160withRSA". */
-    public static final String SIGNATURE_RSA_RIPEMD160 = "RIPEMD160withRSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_RSA_RIPEMD160 = "RIPEMD160withRSA";
     
     /** Signature algorithm: "SHA1withRSA". */
-    public static final String SIGNATURE_RSA_SHA1 = "SHA1withRSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_RSA_SHA1 = "SHA1withRSA";
     
     /** Signature algorithm: "SHA224withRSA". */
-    public static final String SIGNATURE_RSA_SHA224 = "SHA224withRSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_RSA_SHA224 = "SHA224withRSA";
     
     /** Signature algorithm: "SHA256withRSA". */
-    public static final String SIGNATURE_RSA_SHA256 = "SHA256withRSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_RSA_SHA256 = "SHA256withRSA";
     
     /** Signature algorithm: "SHA384withRSA". */
-    public static final String SIGNATURE_RSA_SHA384 = "SHA384withRSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_RSA_SHA384 = "SHA384withRSA";
     
     /** Signature algorithm: "SHA512withRSA". */
-    public static final String SIGNATURE_RSA_SHA512 = "SHA512withRSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_RSA_SHA512 = "SHA512withRSA";
     
     /** Signature algorithm: "SHA1withECDSA". */
-    public static final String SIGNATURE_ECDSA_SHA1 = "SHA1withECDSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_ECDSA_SHA1 = "SHA1withECDSA";
     
     /** Signature algorithm: "SHA224withECDSA". */
-    public static final String SIGNATURE_ECDSA_SHA224 = "SHA224withECDSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_ECDSA_SHA224 = "SHA224withECDSA";
     
     /** Signature algorithm: "SHA256withECDSA". */
-    public static final String SIGNATURE_ECDSA_SHA256 = "SHA256withECDSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_ECDSA_SHA256 = "SHA256withECDSA";
     
     /** Signature algorithm: "SHA384withECDSA". */
-    public static final String SIGNATURE_ECDSA_SHA384 = "SHA384withECDSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_ECDSA_SHA384 = "SHA384withECDSA";
     
     /** Signature algorithm: "SHA512withECDSA". */
-    public static final String SIGNATURE_ECDSA_SHA512 = "SHA512withECDSA";
+    @Nonnull @NotEmpty public static final String SIGNATURE_ECDSA_SHA512 = "SHA512withECDSA";
     
     
     
     // MAC types
     
     /** MAC algorithm: "HmacMD5". */
-    public static final String HMAC_MD5 = "HmacMD5";
+    @Nonnull @NotEmpty public static final String HMAC_MD5 = "HmacMD5";
     
     /** MAC algorithm: "HMACRIPEMD160". */
-    public static final String HMAC_RIPEMD160 = "HMACRIPEMD160";
+    @Nonnull @NotEmpty public static final String HMAC_RIPEMD160 = "HMACRIPEMD160";
     
     /** MAC algorithm: "HmacSHA1". */
-    public static final String HMAC_SHA1 = "HmacSHA1";
+    @Nonnull @NotEmpty public static final String HMAC_SHA1 = "HmacSHA1";
     
     /** MAC algorithm: "HmacSHA224". */
-    public static final String HMAC_SHA224 = "HmacSHA224";
+    @Nonnull @NotEmpty public static final String HMAC_SHA224 = "HmacSHA224";
     
     /** MAC algorithm: "HmacSHA256". */
-    public static final String HMAC_SHA256 = "HmacSHA256";
+    @Nonnull @NotEmpty public static final String HMAC_SHA256 = "HmacSHA256";
     
     /** MAC algorithm: "HmacSHA384". */
-    public static final String HMAC_SHA384 = "HmacSHA384";
+    @Nonnull @NotEmpty public static final String HMAC_SHA384 = "HmacSHA384";
     
     /** MAC algorithm: "HmacSHA512". */
-    public static final String HMAC_SHA512 = "HmacSHA512";
+    @Nonnull @NotEmpty public static final String HMAC_SHA512 = "HmacSHA512";
     
     
     
     // Key Agreement types
     
     /** Key Agreement algorithm: Diffie-Hellman. */
-    public static final String KEY_AGREEMENT_DH = "DiffieHellman";
+    @Nonnull @NotEmpty public static final String KEY_AGREEMENT_DH = "DiffieHellman";
     
     /** Key Agreement algorithm: Elliptic Curve Diffie-Hellman. */
-    public static final String KEY_AGREEMENT_ECDH = "ECDH";
+    @Nonnull @NotEmpty public static final String KEY_AGREEMENT_ECDH = "ECDH";
 
 
     /** Constructor. Private to disable instantiation. */
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityConstants.java b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityConstants.java
index 1a0439773..9b027109f 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityConstants.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityConstants.java
@@ -17,6 +17,9 @@
 
 package org.opensaml.security.httpclient;
 
+import javax.annotation.Nonnull;
+
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.httpclient.TLSSocketFactory;
 
 
@@ -30,34 +33,34 @@ public final class HttpClientSecurityConstants {
      * {@link org.opensaml.security.trust.TrustEngine}<code><? super </code>
      * {@link org.opensaml.security.x509.X509Credential}<code>></code>.
      */
-    public static final String CONTEXT_KEY_TRUST_ENGINE = "opensaml.TrustEngine";
+    @Nonnull @NotEmpty public static final String CONTEXT_KEY_TRUST_ENGINE = "opensaml.TrustEngine";
     
     /** Context key for a criteria set instance supplied by an HttpClient caller. 
      * Value must be an instance of {@link net.shibboleth.shared.resolver.CriteriaSet}. */
-    public static final String CONTEXT_KEY_CRITERIA_SET = "opensaml.CriteriaSet";
+    @Nonnull @NotEmpty public static final String CONTEXT_KEY_CRITERIA_SET = "opensaml.CriteriaSet";
     
     /** Context key for a server TLS credential evaluation result, populated by specialized instances 
      * of HttpClient socket factories. Type will be a {@link Boolean}. */
-    public static final String CONTEXT_KEY_SERVER_TLS_CREDENTIAL_TRUSTED = "opensaml.ServerTLSCredentialTrusted";
+    @Nonnull @NotEmpty public static final String CONTEXT_KEY_SERVER_TLS_CREDENTIAL_TRUSTED = "opensaml.ServerTLSCredentialTrusted";
     
     /** Context key for indicating whether server TLS evaluation failure should be treated as a fatal error.
      * Type will be a {@link Boolean}. */
-    public static final String CONTEXT_KEY_SERVER_TLS_FAILURE_IS_FATAL = "opensaml.ServerTLSFailureIsFatal";
+    @Nonnull @NotEmpty public static final String CONTEXT_KEY_SERVER_TLS_FAILURE_IS_FATAL = "opensaml.ServerTLSFailureIsFatal";
     
     /** HttpContext key for the client TLS credential. 
      * Must be an instance of {@link org.opensaml.security.x509.X509Credential}. */
-    public static final String CONTEXT_KEY_CLIENT_TLS_CREDENTIAL = "opensaml.ClientTLSCredential";
+    @Nonnull @NotEmpty public static final String CONTEXT_KEY_CLIENT_TLS_CREDENTIAL = "opensaml.ClientTLSCredential";
     
     /** HttpContext key for a a list of TLS protocols to enable on the socket.  
      * Must be an instance of {@link java.util.List}<code><</code>{@link String}<code>></code>. */
-    public static final String CONTEXT_KEY_TLS_PROTOCOLS = TLSSocketFactory.CONTEXT_KEY_TLS_PROTOCOLS;
+    @Nonnull @NotEmpty public static final String CONTEXT_KEY_TLS_PROTOCOLS = TLSSocketFactory.CONTEXT_KEY_TLS_PROTOCOLS;
     
     /** HttpContext key for a a list of TLS cipher suites to enable on the socket.  
      * Must be an instance of {@link java.util.List}<code><</code>{@link String}<code>></code>. */
-    public static final String CONTEXT_KEY_TLS_CIPHER_SUITES = TLSSocketFactory.CONTEXT_KEY_TLS_CIPHER_SUITES;
+    @Nonnull @NotEmpty public static final String CONTEXT_KEY_TLS_CIPHER_SUITES = TLSSocketFactory.CONTEXT_KEY_TLS_CIPHER_SUITES;
     
     /** HttpContext key for an instance of {@link javax.net.ssl.HostnameVerifier}. */
-    public static final String CONTEXT_KEY_HOSTNAME_VERIFIER = TLSSocketFactory.CONTEXT_KEY_HOSTNAME_VERIFIER;
+    @Nonnull @NotEmpty public static final String CONTEXT_KEY_HOSTNAME_VERIFIER = TLSSocketFactory.CONTEXT_KEY_HOSTNAME_VERIFIER;
     
     /** Constructor. */
     private HttpClientSecurityConstants() {}
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/messaging/ServletRequestX509CredentialAdapter.java b/opensaml-security-api/src/main/java/org/opensaml/security/messaging/ServletRequestX509CredentialAdapter.java
index 3bff1980a..34691284a 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/messaging/ServletRequestX509CredentialAdapter.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/messaging/ServletRequestX509CredentialAdapter.java
@@ -33,22 +33,24 @@ import org.opensaml.security.credential.Credential;
 import org.opensaml.security.credential.UsageType;
 import org.opensaml.security.x509.X509Credential;
 
-import jakarta.servlet.ServletRequest;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.collection.CollectionSupport;
 
+import jakarta.servlet.ServletRequest;
+
 /**
  * An adapter that exposes the X.509 certificates contained in the servlet request attribute.
  */
 public class ServletRequestX509CredentialAdapter extends AbstractCredential implements X509Credential {
 
     /** Servlet request attribute to pull certificate info from. */
-    public static final String X509_CERT_REQUEST_ATTRIBUTE = "javax.servlet.request.X509Certificate";
+    @Nonnull @NotEmpty public static final String X509_CERT_REQUEST_ATTRIBUTE = "javax.servlet.request.X509Certificate";
     
     /** Servlet request attribute to pull certificate info from. */
-    public static final String JAKARTA_X509_CERT_REQUEST_ATTRIBUTE = "jakarta.servlet.request.X509Certificate";
+    @Nonnull @NotEmpty public static final String JAKARTA_X509_CERT_REQUEST_ATTRIBUTE = "jakarta.servlet.request.X509Certificate";
     
     /** The entity certificate. */
     @Nonnull private X509Certificate cert;
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/x509/X500DNHandler.java b/opensaml-security-api/src/main/java/org/opensaml/security/x509/X500DNHandler.java
index 3772174e0..697519f33 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/x509/X500DNHandler.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/x509/X500DNHandler.java
@@ -20,6 +20,8 @@ package org.opensaml.security.x509;
 import javax.annotation.Nonnull;
 import javax.security.auth.x500.X500Principal;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * Interface for implementations which handle parsing and serialization of X.500 names
  * represented by {@link X500Principal}.
@@ -27,10 +29,10 @@ import javax.security.auth.x500.X500Principal;
 public interface X500DNHandler {
     
     /** Specifies the string format specified in RFC 1779. */
-    public static final String FORMAT_RFC1779 = X500Principal.RFC1779;
+    @Nonnull @NotEmpty public static final String FORMAT_RFC1779 = X500Principal.RFC1779;
     
     /** Specifies the string format specified in RFC 2253. */
-    public static final String FORMAT_RFC2253 = X500Principal.RFC2253;
+    @Nonnull @NotEmpty public static final String FORMAT_RFC2253 = X500Principal.RFC2253;
     
     /**
      * Parse the string representation of a name and build a new principal instance.
diff --git a/opensaml-security-impl/src/main/java/org/opensaml/security/credential/criteria/impl/EvaluableCredentialCriteriaRegistry.java b/opensaml-security-impl/src/main/java/org/opensaml/security/credential/criteria/impl/EvaluableCredentialCriteriaRegistry.java
index 33a8eecf0..dd1c5776d 100644
--- a/opensaml-security-impl/src/main/java/org/opensaml/security/credential/criteria/impl/EvaluableCredentialCriteriaRegistry.java
+++ b/opensaml-security-impl/src/main/java/org/opensaml/security/credential/criteria/impl/EvaluableCredentialCriteriaRegistry.java
@@ -28,14 +28,15 @@ import java.util.Properties;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.resolver.Criterion;
-
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
 import org.opensaml.security.SecurityException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
+
 /**
  * A registry which manages mappings from types of {@link Criterion} to the class type which can evaluate that
  * criteria's data against a Credential target. That latter class will be a subtype of
@@ -49,7 +50,7 @@ public final class EvaluableCredentialCriteriaRegistry {
      * Properties file storing default mappings from criteria to evaluable credential criteria. Will be loaded as a
      * resource stream relative to this class.
      */
-    public static final String DEFAULT_MAPPINGS_FILE = "/credential-criteria-registry.properties";
+    @Nonnull @NotEmpty public static final String DEFAULT_MAPPINGS_FILE = "/credential-criteria-registry.properties";
 
     /** Storage for the registry mappings. */
     private static Map<Class<? extends Criterion>, Class<? extends EvaluableCredentialCriterion>> registry;
diff --git a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/HttpSOAPRequestParameters.java b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/HttpSOAPRequestParameters.java
index 3f5151a0a..5810d3c51 100644
--- a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/HttpSOAPRequestParameters.java
+++ b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/HttpSOAPRequestParameters.java
@@ -17,11 +17,13 @@
 
 package org.opensaml.soap.client.http;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
 
 import org.opensaml.soap.client.SOAPClient.SOAPRequestParameters;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.primitive.StringSupport;
 
 /** HTTP transported SOAP request parameters. */
@@ -29,7 +31,7 @@ import net.shibboleth.shared.primitive.StringSupport;
 public class HttpSOAPRequestParameters implements SOAPRequestParameters {
 
     /** Name of the HTTP SOAPAction header. */
-    public static final String SOAP_ACTION_HEADER = "SOAPAction";
+    @Nonnull @NotEmpty public static final String SOAP_ACTION_HEADER = "SOAPAction";
 
     /** HTTP SOAPAction header. */
     private String soapAction;
@@ -51,4 +53,4 @@ public class HttpSOAPRequestParameters implements SOAPRequestParameters {
     @Nullable public String getSOAPAction() {
         return soapAction;
     }
-}
\ No newline at end of file
+}
diff --git a/opensaml-soap-api/src/main/java/org/opensaml/soap/util/SOAPConstants.java b/opensaml-soap-api/src/main/java/org/opensaml/soap/util/SOAPConstants.java
index 124dc88a8..7669f30f1 100644
--- a/opensaml-soap-api/src/main/java/org/opensaml/soap/util/SOAPConstants.java
+++ b/opensaml-soap-api/src/main/java/org/opensaml/soap/util/SOAPConstants.java
@@ -17,23 +17,27 @@
 
 package org.opensaml.soap.util;
 
+import javax.annotation.Nonnull;
+
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /** SOAP Related Constants. */
 public final class SOAPConstants {
     
     /** SOAP 1.1 namespace. */
-    public static final String SOAP11_NS = "http://schemas.xmlsoap.org/soap/envelope/";
+    @Nonnull @NotEmpty public static final String SOAP11_NS = "http://schemas.xmlsoap.org/soap/envelope/";
 
     /** SOAP 1.1 prefix. */
-    public static final String SOAP11_PREFIX = "soap11";
+    @Nonnull @NotEmpty public static final String SOAP11_PREFIX = "soap11";
 
     /** SOAP 1.2 namespace. */
-    public static final String SOAP12_NS = "http://www.w3.org/2003/05/soap-envelope";
+    @Nonnull @NotEmpty public static final String SOAP12_NS = "http://www.w3.org/2003/05/soap-envelope";
 
     /** SOAP 1.2 prefix. */
-    public static final String SOAP12_PREFIX = "soap12";
+    @Nonnull @NotEmpty public static final String SOAP12_PREFIX = "soap12";
 
     /** Constructor. */
     private SOAPConstants() {
         
     }
-}
\ No newline at end of file
+}
diff --git a/opensaml-testing/src/main/java/org/opensaml/security/testing/SecurityProviderTestSupport.java b/opensaml-testing/src/main/java/org/opensaml/security/testing/SecurityProviderTestSupport.java
index 8da01cfcb..38bed0335 100644
--- a/opensaml-testing/src/main/java/org/opensaml/security/testing/SecurityProviderTestSupport.java
+++ b/opensaml-testing/src/main/java/org/opensaml/security/testing/SecurityProviderTestSupport.java
@@ -19,8 +19,12 @@ package org.opensaml.security.testing;
 
 import java.security.Security;
 
+import javax.annotation.Nonnull;
+
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * Testing utility class which providers various support functionality related to security providers and Java version, 
  * useful for testing cryptographic components. 
@@ -35,9 +39,9 @@ import org.bouncycastle.jce.provider.BouncyCastleProvider;
  */
 public class SecurityProviderTestSupport {
     
-    public static final String BC_PROVIDER_NAME = "BC";
+    @Nonnull @NotEmpty public static final String BC_PROVIDER_NAME = "BC";
     
-    public static final String SUNEC_PROVIDER_NAME = "SunEC";
+    @Nonnull @NotEmpty public static final String SUNEC_PROVIDER_NAME = "SunEC";
     
     private boolean hadBCOriginally;
     
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/AgreementMethod.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/AgreementMethod.java
index 98eacb592..af7e00a8f 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/AgreementMethod.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/AgreementMethod.java
@@ -17,6 +17,7 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
@@ -24,27 +25,29 @@ import org.opensaml.core.xml.ElementExtensibleXMLObject;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, AgreementMethod element.
  */
 public interface AgreementMethod extends XMLObject, ElementExtensibleXMLObject {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "AgreementMethod";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "AgreementMethod";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "AgreementMethodType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "AgreementMethodType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
     /** Algorithm attribute name. */
-    public static final String ALGORITHM_ATTRIBUTE_NAME = "Algorithm";
+    @Nonnull @NotEmpty public static final String ALGORITHM_ATTRIBUTE_NAME = "Algorithm";
 
     /**
      * Gets the algorithm URI attribute value for this agreement method.
@@ -102,4 +105,4 @@ public interface AgreementMethod extends XMLObject, ElementExtensibleXMLObject {
      */
     public void setRecipientKeyInfo(@Nullable final RecipientKeyInfo newRecipientKeyInfo);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CarriedKeyName.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CarriedKeyName.java
index 7189f94ad..3c94370ed 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CarriedKeyName.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CarriedKeyName.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSString;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, CarriedKeyName element.
  */
 public interface CarriedKeyName extends XSString {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "CarriedKeyName";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "CarriedKeyName";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherData.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherData.java
index cf8b3788e..97576efa9 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherData.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherData.java
@@ -17,29 +17,32 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, CipherData element.
  */
 public interface CipherData extends XMLObject {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "CipherData";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "CipherData";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "CipherDataType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "CipherDataType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
     /**
@@ -69,4 +72,4 @@ public interface CipherData extends XMLObject {
      * @param newCipherReference the new CipherReference child element
      */
     public void setCipherReference(@Nullable final CipherReference newCipherReference);
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherReference.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherReference.java
index c1b0573b1..fb4273ed4 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherReference.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherReference.java
@@ -17,33 +17,36 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, CipherReference element.
  */
 public interface CipherReference extends XMLObject {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "CipherReference";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "CipherReference";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "CipherReferenceType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "CipherReferenceType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
     /** URI attribute name. */
-    public static final String URI_ATTRIB_NAME = "URI";
+    @Nonnull @NotEmpty public static final String URI_ATTRIB_NAME = "URI";
 
     /**
      * Get the URI attribute that describes from where to deference the encrypted data.
@@ -73,4 +76,4 @@ public interface CipherReference extends XMLObject {
      */
     public void setTransforms(@Nullable final Transforms newTransforms);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherValue.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherValue.java
index 0685450eb..ed90a2626 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherValue.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/CipherValue.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSBase64Binary;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, CipherValue element.
  */
 public interface CipherValue extends XSBase64Binary {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "CipherValue";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "CipherValue";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ConcatKDFParams.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ConcatKDFParams.java
index 9d5672227..fee7e8f9a 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ConcatKDFParams.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ConcatKDFParams.java
@@ -17,6 +17,7 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
@@ -24,39 +25,41 @@ import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 import org.opensaml.xmlsec.signature.DigestMethod;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 ConcatKDFParams element.
  */
 public interface ConcatKDFParams extends XMLObject {
     
     /** Element local name. */
-    static final String DEFAULT_ELEMENT_LOCAL_NAME = "ConcatKDFParams";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ConcatKDFParams";
 
     /** Default element name. */
-    static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS, DEFAULT_ELEMENT_LOCAL_NAME,
       EncryptionConstants.XMLENC11_PREFIX);
 
     /** Local name of the XSI type. */
-    static final String TYPE_LOCAL_NAME = "ConcatKDFParamsType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "ConcatKDFParamsType";
 
     /** QName of the XSI type. */
-    static final QName TYPE_NAME =
+    @Nonnull public static final QName TYPE_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, TYPE_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
     /** AlgorithmID attribute name. */
-    static final String ALGORITHM_ID_ATTRIBUTE_NAME = "AlgorithmID";
+    @Nonnull @NotEmpty public static final String ALGORITHM_ID_ATTRIBUTE_NAME = "AlgorithmID";
 
     /** PartyUInfo attribute name. */
-    static final String PARTY_U_INFO_ATTRIBUTE_NAME = "PartyUInfo";
+    @Nonnull @NotEmpty public static final String PARTY_U_INFO_ATTRIBUTE_NAME = "PartyUInfo";
 
     /** PartyVInfo attribute name. */
-    static final String PARTY_V_INFO_ATTRIBUTE_NAME = "PartyVInfo";
+    @Nonnull @NotEmpty public static final String PARTY_V_INFO_ATTRIBUTE_NAME = "PartyVInfo";
 
     /** SuppPubInfo attribute name. */
-    static final String SUPP_PUB_INFO_ATTRIBUTE_NAME = "SuppPubInfo";
+    @Nonnull @NotEmpty public static final String SUPP_PUB_INFO_ATTRIBUTE_NAME = "SuppPubInfo";
 
     /** SuppPrivInfo attribute name. */
-    static final String SUPP_PRIV_INFO_ATTRIBUTE_NAME = "SuppPrivInfo";
+    @Nonnull @NotEmpty public static final String SUPP_PRIV_INFO_ATTRIBUTE_NAME = "SuppPrivInfo";
 
     /**
      * Gets the digest method.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DataReference.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DataReference.java
index 58a8db78d..bcaaa496f 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DataReference.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DataReference.java
@@ -17,20 +17,23 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, DataReference element.
  */
 public interface DataReference extends ReferenceType {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DataReference";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DataReference";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DerivedKey.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DerivedKey.java
index 3d202565c..11144e2ed 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DerivedKey.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DerivedKey.java
@@ -17,39 +17,42 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 DerivedKey element.
  */
 public interface DerivedKey extends XMLObject {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DerivedKey";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DerivedKey";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "DerivedKeyType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "DerivedKeyType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME =
+    @Nonnull public static final QName TYPE_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, TYPE_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
     /** Recipient attribute name. */
-    public static final String RECIPIENT_ATTRIBUTE_NAME = "Recipient";
+    @Nonnull @NotEmpty public static final String RECIPIENT_ATTRIBUTE_NAME = "Recipient";
 
     /** Algorithm attribute name. */
-    public static final String ID_ATTRIBUTE_NAME = "Id";
+    @Nonnull @NotEmpty public static final String ID_ATTRIBUTE_NAME = "Id";
 
     /** Algorithm attribute name. */
-    public static final String TYPE_ATTRIBUTE_NAME = "Type";
+    @Nonnull @NotEmpty public static final String TYPE_ATTRIBUTE_NAME = "Type";
     
     /**
      * Get the KeyDerivationMethod child element.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DerivedKeyName.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DerivedKeyName.java
index 2f1d032c3..c7cbcd973 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DerivedKeyName.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/DerivedKeyName.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSString;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 DerivedKeyName element.
  */
 public interface DerivedKeyName extends XSString {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DerivedKeyName";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DerivedKeyName";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
 }
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedType.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedType.java
index 4b62f9a2e..c1bc2cf52 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedType.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptedType.java
@@ -17,6 +17,7 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
@@ -24,6 +25,8 @@ import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 import org.opensaml.xmlsec.signature.KeyInfo;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, EncryptedType type. This is the base type for
  * {@link EncryptedData} and {@link EncryptedKey} types.
@@ -31,23 +34,23 @@ import org.opensaml.xmlsec.signature.KeyInfo;
 public interface EncryptedType extends XMLObject {
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "EncryptedType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "EncryptedType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
     /** Id attribute name. */
-    public static final String ID_ATTRIB_NAME = "Id";
+    @Nonnull @NotEmpty public static final String ID_ATTRIB_NAME = "Id";
 
     /** Type attribute name. */
-    public static final String TYPE_ATTRIB_NAME = "Type";
+    @Nonnull @NotEmpty public static final String TYPE_ATTRIB_NAME = "Type";
 
     /** MimeType attribute name. */
-    public static final String MIMETYPE_ATTRIB_NAME = "MimeType";
+    @Nonnull @NotEmpty public static final String MIMETYPE_ATTRIB_NAME = "MimeType";
 
     /** Encoding attribute name. */
-    public static final String ENCODING_ATTRIB_NAME = "Encoding";
+    @Nonnull @NotEmpty public static final String ENCODING_ATTRIB_NAME = "Encoding";
 
     /**
      * Gets the unique ID for the XML element.
@@ -161,4 +164,4 @@ public interface EncryptedType extends XMLObject {
      */
     public void setEncryptionProperties(@Nullable final EncryptionProperties newEncryptionProperties);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionMethod.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionMethod.java
index f8cc6eaeb..f96fee25a 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionMethod.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionMethod.java
@@ -17,33 +17,36 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.ElementExtensibleXMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, EncryptionMethod element.
  */
 public interface EncryptionMethod extends ElementExtensibleXMLObject {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptionMethod";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptionMethod";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "EncryptionMethodType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "EncryptionMethodType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
     /** Algorithm attribute name. */
-    public static final String ALGORITHM_ATTRIB_NAME = "Algorithm";
+    @Nonnull @NotEmpty public static final String ALGORITHM_ATTRIB_NAME = "Algorithm";
 
     /**
      * Gets the algorithm URI attribute used in this EncryptionMethod.
@@ -87,4 +90,4 @@ public interface EncryptionMethod extends ElementExtensibleXMLObject {
      */
     public void setOAEPparams(@Nullable final OAEPparams newOAEPparams);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionProperties.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionProperties.java
index 90ae44a15..627a075cf 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionProperties.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionProperties.java
@@ -26,27 +26,29 @@ import javax.xml.namespace.QName;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, EncryptionProperties element.
  */
 public interface EncryptionProperties extends XMLObject {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptionProperties";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptionProperties";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "EncryptionPropertiesType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "EncryptionPropertiesType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
     /** ID attribute name. */
-    public static final String ID_ATTRIB_NAME = "Id";
+    @Nonnull @NotEmpty public static final String ID_ATTRIB_NAME = "Id";
 
     /**
      * Get the ID attribute that uniquely identifies this element.
@@ -69,4 +71,4 @@ public interface EncryptionProperties extends XMLObject {
      */
     @Nonnull public List<EncryptionProperty> getEncryptionProperties();
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionProperty.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionProperty.java
index 7991a294a..3690140c4 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionProperty.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/EncryptionProperty.java
@@ -17,6 +17,7 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
@@ -24,30 +25,32 @@ import org.opensaml.core.xml.AttributeExtensibleXMLObject;
 import org.opensaml.core.xml.ElementExtensibleXMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, EncryptionProperty element.
  */
 public interface EncryptionProperty extends AttributeExtensibleXMLObject, ElementExtensibleXMLObject {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptionProperty";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "EncryptionProperty";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "EncryptionPropertyType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "EncryptionPropertyType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
     /** Target attribute name. */
-    public static final String TARGET_ATTRIB_NAME = "Target";
+    @Nonnull @NotEmpty public static final String TARGET_ATTRIB_NAME = "Target";
 
     /** Id attribute name. */
-    public static final String ID_ATTRIB_NAME = "Id";
+    @Nonnull @NotEmpty public static final String ID_ATTRIB_NAME = "Id";
 
     /**
      * Get the target URI attribute which specifies to which element this. property applies
@@ -77,4 +80,4 @@ public interface EncryptionProperty extends AttributeExtensibleXMLObject, Elemen
      */
     public void setID(@Nullable final String newID);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/IterationCount.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/IterationCount.java
index f8eb8934f..0165faa82 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/IterationCount.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/IterationCount.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSInteger;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 IterationCount element.
  */
 public interface IterationCount extends XSInteger {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "IterationCount";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "IterationCount";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
 }
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KANonce.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KANonce.java
index d5b464215..ea96c1eeb 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KANonce.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KANonce.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSBase64Binary;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, KA-Nonce element.
  */
 public interface KANonce extends XSBase64Binary {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KA-Nonce";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KA-Nonce";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyDerivationMethod.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyDerivationMethod.java
index f14f7cdbf..065a13044 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyDerivationMethod.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyDerivationMethod.java
@@ -17,6 +17,7 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
@@ -24,27 +25,29 @@ import org.opensaml.core.xml.ElementExtensibleXMLObject;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 KeyDerivationMethod element.
  */
 public interface KeyDerivationMethod extends XMLObject, ElementExtensibleXMLObject {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyDerivationMethod";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyDerivationMethod";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "KeyDerivationMethodType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "KeyDerivationMethodType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME =
+    @Nonnull public static final QName TYPE_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, TYPE_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
     /** Algorithm attribute name. */
-    public static final String ALGORITHM_ATTRIBUTE_NAME = "Algorithm";
+    @Nonnull @NotEmpty public static final String ALGORITHM_ATTRIBUTE_NAME = "Algorithm";
 
     /**
      * Gets the algorithm URI attribute.
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyLength.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyLength.java
index 84c20321b..11213f9fd 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyLength.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyLength.java
@@ -17,11 +17,14 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSInteger;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 KeyLength element.
  * 
@@ -32,10 +35,10 @@ import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 public interface KeyLength extends XSInteger {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyLength";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyLength";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
 }
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyReference.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyReference.java
index 0a433038d..6aa340e48 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyReference.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeyReference.java
@@ -17,20 +17,23 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, KeyReference element.
  */
 public interface KeyReference extends ReferenceType {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyReference";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeyReference";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeySize.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeySize.java
index 1570665b5..bee4c9153 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeySize.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/KeySize.java
@@ -17,28 +17,31 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSInteger;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, KeySize element.
  */
 public interface KeySize extends XSInteger {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeySize";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "KeySize";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "KeySizeType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "KeySizeType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/MasterKeyName.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/MasterKeyName.java
index f03435390..ad0c46312 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/MasterKeyName.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/MasterKeyName.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSString;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 MasterKeyName element.
  */
 public interface MasterKeyName extends XSString {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "MasterKeyName";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "MasterKeyName";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
 }
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OAEPparams.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OAEPparams.java
index 32a78ba6d..e330ca829 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OAEPparams.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OAEPparams.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSBase64Binary;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, OAEPparams element.
  */
 public interface OAEPparams extends XSBase64Binary {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "OAEPparams";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "OAEPparams";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OriginatorKeyInfo.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OriginatorKeyInfo.java
index f504eb46e..0ebc369d2 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OriginatorKeyInfo.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OriginatorKeyInfo.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 import org.opensaml.xmlsec.signature.KeyInfo;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, OriginatorKeyInfo element.
  */
 public interface OriginatorKeyInfo extends KeyInfo {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "OriginatorKeyInfo";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "OriginatorKeyInfo";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OtherSource.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OtherSource.java
index 699556bdd..00fde3ff7 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OtherSource.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/OtherSource.java
@@ -17,20 +17,23 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 OtherSource element.
  */
 public interface OtherSource extends AlgorithmIdentifierType {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "OtherSource";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "OtherSource";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
 }
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PBKDF2Params.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PBKDF2Params.java
index 71ab41134..7cf7c36f9 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PBKDF2Params.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PBKDF2Params.java
@@ -17,29 +17,32 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 PBKDF2-params element.
  */
 public interface PBKDF2Params extends XMLObject {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PBKDF2-params";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PBKDF2-params";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "PBKDF2ParameterType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "PBKDF2ParameterType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME =
+    @Nonnull public static final QName TYPE_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, TYPE_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
     /**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PRF.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PRF.java
index 3001acc38..479859444 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PRF.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PRF.java
@@ -17,27 +17,30 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 1.1, PRF element.
  */
 public interface PRF extends AlgorithmIdentifierType {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PRF";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PRF";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
     
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "PRFAlgorithmIdentifierType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "PRFAlgorithmIdentifierType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC11_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC11_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC11_PREFIX);
 
 }
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Parameters.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Parameters.java
index 3b5c4de0a..9c5ff8502 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Parameters.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Parameters.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 1.1, Parameters element.
  */
 public interface Parameters extends XMLObject {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Parameters";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Parameters";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC11_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
 }
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PgenCounter.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PgenCounter.java
index e5fab43ae..160d2f64f 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PgenCounter.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/PgenCounter.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 import org.opensaml.xmlsec.signature.CryptoBinary;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, pgenCounter element.
  */
 public interface PgenCounter extends CryptoBinary {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "pgenCounter";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "pgenCounter";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/RecipientKeyInfo.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/RecipientKeyInfo.java
index a08fa65cf..11945a04d 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/RecipientKeyInfo.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/RecipientKeyInfo.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 import org.opensaml.xmlsec.signature.KeyInfo;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, RecipientKeyInfo element.
  */
 public interface RecipientKeyInfo extends KeyInfo {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RecipientKeyInfo";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RecipientKeyInfo";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ReferenceList.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ReferenceList.java
index 2cd1087ed..01e22675a 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ReferenceList.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ReferenceList.java
@@ -25,16 +25,18 @@ import javax.xml.namespace.QName;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, ReferenceList element.
  */
 public interface ReferenceList extends XMLObject {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ReferenceList";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ReferenceList";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
     /**
@@ -58,4 +60,4 @@ public interface ReferenceList extends XMLObject {
      */
     @Nonnull public List<KeyReference> getKeyReferences();
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ReferenceType.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ReferenceType.java
index 50ccb4cb7..b2d1b3772 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ReferenceType.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/ReferenceType.java
@@ -17,12 +17,15 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.ElementExtensibleXMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, ReferenceType type. This is the base type for
  * {@link DataReference} and {@link KeyReference} types.
@@ -30,14 +33,14 @@ import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 public interface ReferenceType extends ElementExtensibleXMLObject {
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "ReferenceType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "ReferenceType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
     /** URI attribute name. */
-    public static final String URI_ATTRIB_NAME = "URI";
+    @Nonnull @NotEmpty public static final String URI_ATTRIB_NAME = "URI";
 
     /**
      * Get the URI attribute which indicates the referent of this reference.
@@ -53,4 +56,4 @@ public interface ReferenceType extends ElementExtensibleXMLObject {
      */
     public void setURI(@Nullable final String newURI);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Salt.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Salt.java
index 955032eed..d4d771a86 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Salt.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Salt.java
@@ -17,22 +17,25 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 Salt element.
  */
 public interface Salt extends XMLObject {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Salt";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Salt";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
     
     /**
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Seed.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Seed.java
index 6f977fba3..851fdebfb 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Seed.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Seed.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 import org.opensaml.xmlsec.signature.CryptoBinary;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Digital Signature, version 20020212, seed element.
  */
 public interface Seed extends CryptoBinary {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "seed";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "seed";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Specified.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Specified.java
index 8cb8e5993..ff290b4f6 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Specified.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Specified.java
@@ -17,21 +17,24 @@
 
 package org.opensaml.xmlsec.encryption;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import org.opensaml.core.xml.schema.XSBase64Binary;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption 1.1 Specified element.
  */
 public interface Specified extends XSBase64Binary {
     
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Specified";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Specified";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME =
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME =
             new QName(EncryptionConstants.XMLENC11_NS, DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC11_PREFIX);
 
 }
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Transforms.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Transforms.java
index e998d3a5d..35cac699e 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Transforms.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/Transforms.java
@@ -26,23 +26,25 @@ import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 import org.opensaml.xmlsec.signature.Transform;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * XMLObject representing XML Encryption, version 20021210, Transforms element.
  */
 public interface Transforms extends XMLObject {
 
     /** Element local name. */
-    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Transforms";
+    @Nonnull @NotEmpty public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Transforms";
 
     /** Default element name. */
-    public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
+    @Nonnull public static final QName DEFAULT_ELEMENT_NAME = new QName(EncryptionConstants.XMLENC_NS,
             DEFAULT_ELEMENT_LOCAL_NAME, EncryptionConstants.XMLENC_PREFIX);
 
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "TransformsType";
+    @Nonnull @NotEmpty public static final String TYPE_LOCAL_NAME = "TransformsType";
 
     /** QName of the XSI type. */
-    public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
+    @Nonnull public static final QName TYPE_NAME = new QName(EncryptionConstants.XMLENC_NS, TYPE_LOCAL_NAME,
             EncryptionConstants.XMLENC_PREFIX);
 
     /**
@@ -52,4 +54,4 @@ public interface Transforms extends XMLObject {
      */
     @Nonnull public List<Transform> getTransforms();
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/EncryptionConstants.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/EncryptionConstants.java
index db175ffbd..cde2895c8 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/EncryptionConstants.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/EncryptionConstants.java
@@ -17,151 +17,155 @@
 
 package org.opensaml.xmlsec.encryption.support;
 
+import javax.annotation.Nonnull;
+
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * Constants defined in or related to the XML Encryption 1.0 and 1.1 specifications.
  */
 public final class EncryptionConstants {
 
     /** XML Encryption namespace. */
-    public static final String XMLENC_NS = "http://www.w3.org/2001/04/xmlenc#";
+    @Nonnull @NotEmpty public static final String XMLENC_NS = "http://www.w3.org/2001/04/xmlenc#";
 
     /** XML Encryption QName prefix. */
-    public static final String XMLENC_PREFIX = "xenc";
+    @Nonnull @NotEmpty public static final String XMLENC_PREFIX = "xenc";
 
     // *********************************************************
     // URI values which represent type attribute values
     // *********************************************************
     /** URI for Content. */
-    public static final String TYPE_CONTENT = XMLENC_NS + "Content";
+    @Nonnull @NotEmpty public static final String TYPE_CONTENT = XMLENC_NS + "Content";
 
     /** URI for Element. */
-    public static final String TYPE_ELEMENT = XMLENC_NS + "Element";
+    @Nonnull @NotEmpty public static final String TYPE_ELEMENT = XMLENC_NS + "Element";
 
     /** URI for EncryptionProperties. */
-    public static final String TYPE_ENCRYPTION_PROPERTIES = XMLENC_NS + "EncryptionProperties";
+    @Nonnull @NotEmpty public static final String TYPE_ENCRYPTION_PROPERTIES = XMLENC_NS + "EncryptionProperties";
 
     /** URI for EncryptedKey. */
-    public static final String TYPE_ENCRYPTED_KEY = XMLENC_NS + "EncryptedKey";
+    @Nonnull @NotEmpty public static final String TYPE_ENCRYPTED_KEY = XMLENC_NS + "EncryptedKey";
 
     /** URI for DHKeyValue. */
-    public static final String TYPE_KEYINFO_DH_KEYVALUE = XMLENC_NS + "DHKeyValue";
+    @Nonnull @NotEmpty public static final String TYPE_KEYINFO_DH_KEYVALUE = XMLENC_NS + "DHKeyValue";
 
     // *************************************************
     // Block encryption algorithms
     // *************************************************
     /** Block Encryption - REQUIRED TRIPLEDES. */
-    public static final String ALGO_ID_BLOCKCIPHER_TRIPLEDES = XMLENC_NS + "tripledes-cbc";
+    @Nonnull @NotEmpty public static final String ALGO_ID_BLOCKCIPHER_TRIPLEDES = XMLENC_NS + "tripledes-cbc";
 
     /** Block Encryption - REQUIRED AES-128. */
-    public static final String ALGO_ID_BLOCKCIPHER_AES128 = XMLENC_NS + "aes128-cbc";
+    @Nonnull @NotEmpty public static final String ALGO_ID_BLOCKCIPHER_AES128 = XMLENC_NS + "aes128-cbc";
 
     /** Block Encryption - REQUIRED AES-256. */
-    public static final String ALGO_ID_BLOCKCIPHER_AES256 = XMLENC_NS + "aes256-cbc";
+    @Nonnull @NotEmpty public static final String ALGO_ID_BLOCKCIPHER_AES256 = XMLENC_NS + "aes256-cbc";
 
     /** Block Encryption - OPTIONAL AES-192. */
-    public static final String ALGO_ID_BLOCKCIPHER_AES192 = XMLENC_NS + "aes192-cbc";
+    @Nonnull @NotEmpty public static final String ALGO_ID_BLOCKCIPHER_AES192 = XMLENC_NS + "aes192-cbc";
 
     // *************************************************
     // Key Transport
     // *************************************************
     /** Key Transport - OPTIONAL RSA-v1.5. */
-    public static final String ALGO_ID_KEYTRANSPORT_RSA15 = XMLENC_NS + "rsa-1_5";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYTRANSPORT_RSA15 = XMLENC_NS + "rsa-1_5";
 
     /** Key Transport - REQUIRED RSA-OAEP (including MGF1 with SHA1). */
-    public static final String ALGO_ID_KEYTRANSPORT_RSAOAEP = XMLENC_NS + "rsa-oaep-mgf1p";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYTRANSPORT_RSAOAEP = XMLENC_NS + "rsa-oaep-mgf1p";
 
     // *************************************************
     // Key Agreement
     // *************************************************
     /** Key Agreement - OPTIONAL Diffie-Hellman with Legacy Key Derivation Function. */
-    public static final String ALGO_ID_KEYAGREEMENT_DH = XMLENC_NS + "dh";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYAGREEMENT_DH = XMLENC_NS + "dh";
     
     /** URI for DHKeyValue. */
-    public static final String TYPE_DH_KEY_VALUE = XMLENC_NS + "DHKeyValue";
+    @Nonnull @NotEmpty public static final String TYPE_DH_KEY_VALUE = XMLENC_NS + "DHKeyValue";
 
     // *************************************************
     // Symmetric Key Wrap
     // *************************************************
     /** Symmetric Key Wrap - REQUIRED TRIPLEDES KeyWrap. */
-    public static final String ALGO_ID_KEYWRAP_TRIPLEDES = XMLENC_NS + "kw-tripledes";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYWRAP_TRIPLEDES = XMLENC_NS + "kw-tripledes";
 
     /** Symmetric Key Wrap - REQUIRED AES-128 KeyWrap. */
-    public static final String ALGO_ID_KEYWRAP_AES128 = XMLENC_NS + "kw-aes128";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYWRAP_AES128 = XMLENC_NS + "kw-aes128";
 
     /** Symmetric Key Wrap - REQUIRED AES-256 KeyWrap. */
-    public static final String ALGO_ID_KEYWRAP_AES256 = XMLENC_NS + "kw-aes256";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYWRAP_AES256 = XMLENC_NS + "kw-aes256";
 
     /** Symmetric Key Wrap - OPTIONAL AES-192 KeyWrap. */
-    public static final String ALGO_ID_KEYWRAP_AES192 = XMLENC_NS + "kw-aes192";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYWRAP_AES192 = XMLENC_NS + "kw-aes192";
 
     // *************************************************
     // Message Digest
     // *************************************************
     /** Message Digest - REQUIRED SHA256. */
-    public static final String ALGO_ID_DIGEST_SHA256 = XMLENC_NS + "sha256";
+    @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_SHA256 = XMLENC_NS + "sha256";
 
     /** Message Digest - OPTIONAL SHA512. */
-    public static final String ALGO_ID_DIGEST_SHA512 = XMLENC_NS + "sha512";
+    @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_SHA512 = XMLENC_NS + "sha512";
 
     /** Message Digest - OPTIONAL RIPEMD-160. */
-    public static final String ALGO_ID_DIGEST_RIPEMD160 = XMLENC_NS + "ripemd160";
+    @Nonnull @NotEmpty public static final String ALGO_ID_DIGEST_RIPEMD160 = XMLENC_NS + "ripemd160";
 
     // *********************************************************
     // Some additional algorithm URIs from XML Encryption 1.1
     // *********************************************************
     /** XML Encryption 1.1 namespace. */
-    public static final String XMLENC11_NS = "http://www.w3.org/2009/xmlenc11#";
+    @Nonnull @NotEmpty public static final String XMLENC11_NS = "http://www.w3.org/2009/xmlenc11#";
 
     /** XML Encryption 1.1 QName prefix. */
-    public static final String XMLENC11_PREFIX = "xenc11";
+    @Nonnull @NotEmpty public static final String XMLENC11_PREFIX = "xenc11";
     
     /** Key Transport - OPTIONAL RSA-OAEP.  */
-    public static final String ALGO_ID_KEYTRANSPORT_RSAOAEP11 = XMLENC11_NS + "rsa-oaep";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYTRANSPORT_RSAOAEP11 = XMLENC11_NS + "rsa-oaep";
 
     /** Block Encryption - REQUIRED AES128-GCM. */
-    public static final String ALGO_ID_BLOCKCIPHER_AES128_GCM = XMLENC11_NS + "aes128-gcm";
+    @Nonnull @NotEmpty public static final String ALGO_ID_BLOCKCIPHER_AES128_GCM = XMLENC11_NS + "aes128-gcm";
         
     /** Block Encryption - OPTIONAL AES192-GCM. */
-    public static final String ALGO_ID_BLOCKCIPHER_AES192_GCM = XMLENC11_NS + "aes192-gcm";
+    @Nonnull @NotEmpty public static final String ALGO_ID_BLOCKCIPHER_AES192_GCM = XMLENC11_NS + "aes192-gcm";
 
     /** Block Encryption - OPTIONAL AES256-GCM. */
-    public static final String ALGO_ID_BLOCKCIPHER_AES256_GCM = XMLENC11_NS + "aes256-gcm";
+    @Nonnull @NotEmpty public static final String ALGO_ID_BLOCKCIPHER_AES256_GCM = XMLENC11_NS + "aes256-gcm";
     
     /** Mask Generation Function - MGF1 with SHA-1. */
-    public static final String ALGO_ID_MGF1_SHA1 = XMLENC11_NS + "mgf1sha1";
+    @Nonnull @NotEmpty public static final String ALGO_ID_MGF1_SHA1 = XMLENC11_NS + "mgf1sha1";
 
     /** Mask Generation Function - MGF1 with SHA-224. */
-    public static final String ALGO_ID_MGF1_SHA224 = XMLENC11_NS + "mgf1sha224";
+    @Nonnull @NotEmpty public static final String ALGO_ID_MGF1_SHA224 = XMLENC11_NS + "mgf1sha224";
 
     /** Mask Generation Function - MGF1 with SHA-256. */
-    public static final String ALGO_ID_MGF1_SHA256 = XMLENC11_NS + "mgf1sha256";
+    @Nonnull @NotEmpty public static final String ALGO_ID_MGF1_SHA256 = XMLENC11_NS + "mgf1sha256";
 
     /** Mask Generation Function - MGF1 with SHA-384. */
-    public static final String ALGO_ID_MGF1_SHA384 = XMLENC11_NS + "mgf1sha384";
+    @Nonnull @NotEmpty public static final String ALGO_ID_MGF1_SHA384 = XMLENC11_NS + "mgf1sha384";
 
     /** Mask Generation Function - MGF1 with SHA-512. */
-    public static final String ALGO_ID_MGF1_SHA512 = XMLENC11_NS + "mgf1sha512";
+    @Nonnull @NotEmpty public static final String ALGO_ID_MGF1_SHA512 = XMLENC11_NS + "mgf1sha512";
 
     /** URI for DerivedKey. */
-    public static final String TYPE_DERIVED_KEY = XMLENC11_NS + "DerivedKey";
+    @Nonnull @NotEmpty public static final String TYPE_DERIVED_KEY = XMLENC11_NS + "DerivedKey";
         
     /** URI for ECKeyValue. */
-    public static final String TYPE_EC_KEY_VALUE = XMLENC11_NS + "ECKeyValue";
+    @Nonnull @NotEmpty public static final String TYPE_EC_KEY_VALUE = XMLENC11_NS + "ECKeyValue";
         
     /** Key Agreement - Diffie-Hellman with Explicit Key Derivation Function. */
-    public static final String ALGO_ID_KEYAGREEMENT_DH_EXPLICIT_KDF = XMLENC11_NS + "dh-es";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYAGREEMENT_DH_EXPLICIT_KDF = XMLENC11_NS + "dh-es";
         
     /** Key Agreement - Elliptic Curve Diffie-Hellman (ECDH) Ephemeral-Static Mode. */
-    public static final String ALGO_ID_KEYAGREEMENT_ECDH_ES = XMLENC11_NS + "ECDH-ES";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYAGREEMENT_ECDH_ES = XMLENC11_NS + "ECDH-ES";
         
     /** Key Derivation Method - ConcatKDF. */
-    public static final String ALGO_ID_KEYDERIVATION_CONCATKDF = XMLENC11_NS + "ConcatKDF";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYDERIVATION_CONCATKDF = XMLENC11_NS + "ConcatKDF";
         
     /** Key Derivation Method - PBKDF2. */
-    public static final String ALGO_ID_KEYDERIVATION_PBKDF2 = XMLENC11_NS + "pbkdf2";
+    @Nonnull @NotEmpty public static final String ALGO_ID_KEYDERIVATION_PBKDF2 = XMLENC11_NS + "pbkdf2";
         
     /** Constructor. */
     private EncryptionConstants() {
 
     }
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/agreement/impl/DHWithLegacyKDFKeyAgreementProcessor.java b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/agreement/impl/DHWithLegacyKDFKeyAgreementProcessor.java
index a8638fbc0..3bc8fc031 100644
--- a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/agreement/impl/DHWithLegacyKDFKeyAgreementProcessor.java
+++ b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/agreement/impl/DHWithLegacyKDFKeyAgreementProcessor.java
@@ -41,6 +41,8 @@ import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * Implementation of {@link KeyAgreementProcessor} which performs Diffie-Hellman
  * Ephemeral-Static Mode key agreement with Legacy Key Derivation Function as defined in XML Encryption 1.1.
@@ -48,7 +50,7 @@ import org.slf4j.LoggerFactory;
 public class DHWithLegacyKDFKeyAgreementProcessor extends AbstractKeyAgreementProcessor {
     
     /** Default digest method. */
-    public static final String DEFAULT_DIGEST_METHOD = EncryptionConstants.ALGO_ID_DIGEST_SHA256;
+    @Nonnull @NotEmpty public static final String DEFAULT_DIGEST_METHOD = EncryptionConstants.ALGO_ID_DIGEST_SHA256;
     
     /** Logger. */
     private final Logger log = LoggerFactory.getLogger(DHWithLegacyKDFKeyAgreementProcessor.class);
diff --git a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/impl/DefaultSecurityConfigurationBootstrap.java b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/impl/DefaultSecurityConfigurationBootstrap.java
index 1ad687929..167a0488d 100644
--- a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/impl/DefaultSecurityConfigurationBootstrap.java
+++ b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/impl/DefaultSecurityConfigurationBootstrap.java
@@ -62,6 +62,7 @@ import org.opensaml.xmlsec.signature.support.SignatureConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 
@@ -73,13 +74,13 @@ import net.shibboleth.shared.component.ComponentInitializationException;
 public class DefaultSecurityConfigurationBootstrap {
     
     /** Config property name for ECDH default Key Derivation Function (KDF). */
-    public static final String CONFIG_PROPERTY_ECDH_DEFAULT_KDF = "opensaml.config.ecdh.defaultKDF";
+    @Nonnull @NotEmpty public static final String CONFIG_PROPERTY_ECDH_DEFAULT_KDF = "opensaml.config.ecdh.defaultKDF";
     
     /** Config property value for default KDF: ConcatKDF. */
-    public static final String CONCATKDF = "ConcatKDF";
+    @Nonnull @NotEmpty public static final String CONCATKDF = "ConcatKDF";
     
     /** Config property value for default KDF: PBKDF2. */
-    public static final String PBKDF2 = "PBKDF2";
+    @Nonnull @NotEmpty public static final String PBKDF2 = "PBKDF2";
     
     /** Logger. */
     private static final Logger LOG = LoggerFactory.getLogger(DefaultSecurityConfigurationBootstrap.class);
@@ -397,4 +398,4 @@ public class DefaultSecurityConfigurationBootstrap {
         return namedManager;
     }
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/impl/JavaCryptoValidationInitializer.java b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/impl/JavaCryptoValidationInitializer.java
index ebbde1ff7..72791af20 100644
--- a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/impl/JavaCryptoValidationInitializer.java
+++ b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/config/impl/JavaCryptoValidationInitializer.java
@@ -20,6 +20,7 @@ package org.opensaml.xmlsec.config.impl;
 import java.security.NoSuchAlgorithmException;
 import java.util.Properties;
 
+import javax.annotation.Nonnull;
 import javax.crypto.Cipher;
 import javax.crypto.NoSuchPaddingException;
 
@@ -29,6 +30,8 @@ import org.opensaml.core.config.Initializer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
 /**
  * An initializer which validates the Java Cryptographic Architecture environment is usable.
  * 
@@ -48,7 +51,7 @@ import org.slf4j.LoggerFactory;
 public class JavaCryptoValidationInitializer implements Initializer {
     
     /** Configuration property determining whether invalid result is fatal or not. */
-    public static final String CONFIG_PROPERTY_FAIL_IS_FATAL = "opensaml.config.xmlsec.cryptoValidationIsFatal";
+    @Nonnull @NotEmpty public static final String CONFIG_PROPERTY_FAIL_IS_FATAL = "opensaml.config.xmlsec.cryptoValidationIsFatal";
     
     /** Logger. */
     private Logger log = LoggerFactory.getLogger(JavaCryptoValidationInitializer.class);
@@ -90,4 +93,4 @@ public class JavaCryptoValidationInitializer implements Initializer {
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/derivation/impl/ConcatKDF.java b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/derivation/impl/ConcatKDF.java
index 208af3f33..75572e64e 100644
--- a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/derivation/impl/ConcatKDF.java
+++ b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/derivation/impl/ConcatKDF.java
@@ -55,6 +55,7 @@ import org.opensaml.xmlsec.signature.support.SignatureConstants;
 import com.google.common.primitives.Bytes;
 
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.AbstractInitializableComponent;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.Constraint;
@@ -91,7 +92,7 @@ public class ConcatKDF extends AbstractInitializableComponent
         implements KeyDerivation, XMLExpressableKeyAgreementParameter, CloneableKeyAgreementParameter {
     
     /** Default digest method. */
-    public static final String DEFAULT_DIGEST_METHOD = EncryptionConstants.ALGO_ID_DIGEST_SHA256;
+    @Nonnull @NotEmpty public static final String DEFAULT_DIGEST_METHOD = EncryptionConstants.ALGO_ID_DIGEST_SHA256;
     
     /** Digest method. */
     @NonnullAfterInit private String digestMethod;
diff --git a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/derivation/impl/PBKDF2.java b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/derivation/impl/PBKDF2.java
index fa70c2e70..2255d5394 100644
--- a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/derivation/impl/PBKDF2.java
+++ b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/derivation/impl/PBKDF2.java
@@ -54,6 +54,7 @@ import org.opensaml.xmlsec.signature.support.SignatureConstants;
 import com.google.common.base.Charsets;
 
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+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;
@@ -69,16 +70,16 @@ public class PBKDF2 extends AbstractInitializableComponent
         implements KeyDerivation, XMLExpressableKeyAgreementParameter, CloneableKeyAgreementParameter {
     
     /** Default PRF. */
-    public static final String DEFAULT_PRF = SignatureConstants.ALGO_ID_MAC_HMAC_SHA256;
+    @Nonnull @NotEmpty public static final String DEFAULT_PRF = SignatureConstants.ALGO_ID_MAC_HMAC_SHA256;
     
     /** Default iteration count. */
-    public static final Integer DEFAULT_ITERATION_COUNT = 2000;
+    @Nonnull public static final Integer DEFAULT_ITERATION_COUNT = 2000;
     
     /** Default length for generated salt, in bytes. */
-    public static final Integer DEFAULT_GENERATED_SALT_LENGTH = 8;
+    @Nonnull public static final Integer DEFAULT_GENERATED_SALT_LENGTH = 8;
     
     /** Base algorithm ID for PBKDF2 SecretKeyFactory. */
-    private static final String PBKDF2_JCA_ALGORITHM_BASE = "PBKDF2With";
+    @Nonnull private static final String PBKDF2_JCA_ALGORITHM_BASE = "PBKDF2With";
     
     /** Base64-encoded salt value. */
     @Nullable private String salt;

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


More information about the commits mailing list