[java-opensaml] branch main updated: IDP-2083 - Treat NonnullElements as the default for collections

Scott Cantor cantor.2 at osu.edu
Mon Jun 5 14:13:12 UTC 2023


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

scantor 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=bd7fdde1829b935d5ffb24b708136264925f381e

The following commit(s) were added to refs/heads/main by this push:
     new bd7fdde18 IDP-2083 - Treat NonnullElements as the default for collections
bd7fdde18 is described below

commit bd7fdde1829b935d5ffb24b708136264925f381e
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Jun 5 10:13:10 2023 -0400

    IDP-2083 - Treat NonnullElements as the default for collections
    
    https://shibboleth.atlassian.net/browse/IDP-2083
    
    Reviewed opensaml-messaging-api/impl.
    Added some missing setter component guards.
---
 .../core/xml/persist/impl}/package-info.java       |  9 +++----
 .../opensaml/messaging/context/BaseContext.java    |  3 +--
 .../opensaml/messaging/context/ScratchContext.java |  5 ++--
 .../messaging/context/httpclient/package-info.java |  5 +++-
 .../context/navigate/ChildContextLookup.java       |  6 ++++-
 .../context/navigate/MessageContextLookup.java     |  2 +-
 .../messaging/context/navigate/package-info.java   |  4 ++-
 .../opensaml/messaging/context/package-info.java   |  5 +++-
 .../BaseHttpClientResponseXMLMessageDecoder.java   |  5 ++--
 .../messaging/decoder/httpclient/package-info.java |  5 +++-
 .../opensaml/messaging/decoder/package-info.java   |  5 +++-
 .../AbstractHttpServletRequestMessageDecoder.java  |  7 -----
 .../BaseHttpServletRequestXMLMessageDecoder.java   |  4 ++-
 .../messaging/decoder/servlet/package-info.java    |  3 +++
 .../messaging/encoder/httpclient/package-info.java |  5 +++-
 .../opensaml/messaging/encoder/package-info.java   |  5 +++-
 .../AbstractHttpServletResponseMessageEncoder.java |  3 ++-
 .../servlet/HttpServletResponseMessageEncoder.java |  3 +--
 .../messaging/encoder/servlet/package-info.java    |  3 +++
 .../messaging/error/MessageErrorHandler.java       |  2 +-
 .../error/PipelineMessageErrorHandler.java         |  4 +--
 .../messaging/error/TypedMessageErrorHandler.java  |  2 +-
 .../org/opensaml/messaging/error/package-info.java |  5 +++-
 .../messaging/handler/AbstractMessageHandler.java  |  2 ++
 .../messaging/handler/MessageHandlerChain.java     |  5 ++--
 .../opensaml/messaging/handler/package-info.java   |  5 +++-
 .../org/opensaml/messaging/logic/package-info.java |  5 +++-
 .../java/org/opensaml/messaging/package-info.java  |  5 +++-
 .../messaging/pipeline/BasicMessagePipeline.java   | 31 +++++++++++-----------
 .../messaging/pipeline/MessagePipeline.java        | 12 ++++-----
 .../pipeline/StaticPipelineNameStrategy.java       |  4 +--
 .../httpclient/BasicHttpClientMessagePipeline.java |  4 +--
 .../HttpClientMessagePipelineFactory.java          |  5 ++--
 .../pipeline/httpclient/package-info.java          |  5 +++-
 .../opensaml/messaging/pipeline/package-info.java  |  5 +++-
 .../servlet/BasicHttpServletMessagePipeline.java   |  4 +--
 .../servlet/HttpServletMessagePipelineFactory.java |  5 ++--
 .../messaging/pipeline/servlet/package-info.java   |  5 +++-
 .../impl/AbstractMessageChannelSecurity.java       | 20 +++++++++++---
 .../handler/impl/BasicMessageHandlerChain.java     | 10 ++++---
 .../impl/MessageHandlerErrorStrategyAdapter.java   |  5 ++--
 .../handler/impl/SchemaValidateXMLMessage.java     |  8 ++----
 .../handler/impl/StaticMessageChannelSecurity.java |  2 +-
 .../impl/URLEvaluatingMessageChannelSecurity.java  |  2 +-
 .../messaging/handler/impl/package-info.java       |  5 +++-
 45 files changed, 155 insertions(+), 99 deletions(-)

diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/package-info.java b/opensaml-core-impl/src/main/java/org/opensaml/core/xml/persist/impl/package-info.java
similarity index 82%
copy from opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/package-info.java
copy to opensaml-core-impl/src/main/java/org/opensaml/core/xml/persist/impl/package-info.java
index 4b04c576c..8bb2e3e44 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/package-info.java
+++ b/opensaml-core-impl/src/main/java/org/opensaml/core/xml/persist/impl/package-info.java
@@ -15,9 +15,8 @@
  * limitations under the License.
  */
 
-/**
- * A set of functions used to navigate and lookup data
- * from a tree of {@link org.opensaml.messaging.context.BaseContext}s.
- */
+/** Implementations of XML persistence interfaces. */
+ at NonnullElements
+package org.opensaml.core.xml.persist.impl;
 
-package org.opensaml.messaging.context.navigate;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BaseContext.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BaseContext.java
index 3bbbcb2e7..98d354330 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BaseContext.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/BaseContext.java
@@ -25,7 +25,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
 
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.collection.ClassIndexedSet;
 import net.shibboleth.shared.collection.CollectionSupport;
@@ -73,7 +72,7 @@ public abstract class BaseContext implements Iterable<BaseContext> {
     @Nullable private BaseContext parent;
 
     /** The subcontexts being managed. */
-    @Nonnull @NonnullElements private ClassIndexedSet<BaseContext> subcontexts;
+    @Nonnull private ClassIndexedSet<BaseContext> subcontexts;
     
     /** Constructor. Generates a random context id. */
     public BaseContext() {
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/ScratchContext.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/ScratchContext.java
index cb97fc65f..1b70fb601 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/ScratchContext.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/ScratchContext.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import javax.annotation.Nonnull;
 
 import net.shibboleth.shared.annotation.constraint.Live;
+import net.shibboleth.shared.annotation.constraint.NullableElements;
 
 /**
  * A context subclass for holding arbitrary data in a map.
@@ -32,7 +33,7 @@ import net.shibboleth.shared.annotation.constraint.Live;
 public final class ScratchContext extends BaseContext {
 
     /** Map of scratch data. */
-    @Nonnull private Map<Object,Object> map;
+    @Nonnull @NullableElements private Map<Object,Object> map;
 
     /** Constructor. */
     public ScratchContext() {
@@ -44,7 +45,7 @@ public final class ScratchContext extends BaseContext {
      * 
      * @return the map
      */
-    @Nonnull @Live public Map<Object,Object> getMap() {
+    @Nonnull @NullableElements @Live public Map<Object,Object> getMap() {
         return map;
     }
 
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/package-info.java
index cb66484d9..5d3f23794 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for tracking HTTP message processing state. */
-package org.opensaml.messaging.context.httpclient;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.context.httpclient;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/ChildContextLookup.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/ChildContextLookup.java
index c4fba439d..a7c88ece5 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/ChildContextLookup.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/ChildContextLookup.java
@@ -73,7 +73,11 @@ public class ChildContextLookup<ParentContext extends BaseContext, ChildContext
             return null;
         }
 
-        return input.getSubcontext(childType, autocreate);
+        if (autocreate) {
+            return input.ensureSubcontext(childType);
+        } else {
+            return input.getSubcontext(childType);
+        }
     }
     
 }
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/MessageContextLookup.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/MessageContextLookup.java
index edc61350d..c01a1d1a5 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/MessageContextLookup.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/MessageContextLookup.java
@@ -101,4 +101,4 @@ public class MessageContextLookup<StartContext extends BaseContext>
         }
     }
         
-}
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/package-info.java
index 4b04c576c..6ca7d66dc 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/package-info.java
@@ -19,5 +19,7 @@
  * A set of functions used to navigate and lookup data
  * from a tree of {@link org.opensaml.messaging.context.BaseContext}s.
  */
+ at NonnullElements
+package org.opensaml.messaging.context.navigate;
 
-package org.opensaml.messaging.context.navigate;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/package-info.java
index c2c3ee097..227ddd473 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for tracking message processing state. */
-package org.opensaml.messaging.context;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.context;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/BaseHttpClientResponseXMLMessageDecoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/BaseHttpClientResponseXMLMessageDecoder.java
index 33a36975e..d2cad9a49 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/BaseHttpClientResponseXMLMessageDecoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/BaseHttpClientResponseXMLMessageDecoder.java
@@ -87,8 +87,9 @@ public abstract class BaseHttpClientResponseXMLMessageDecoder extends AbstractHt
      * @param pool parser pool used to deserialize incoming messages
      */
     public void setParserPool(@Nonnull final ParserPool pool) {
-        Constraint.isNotNull(pool, "ParserPool cannot be null");
-        parserPool = pool;
+        checkSetterPreconditions();
+        
+        parserPool = Constraint.isNotNull(pool, "ParserPool cannot be null");
     }
     
     /** {@inheritDoc} */
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/package-info.java
index 0799f73b4..c55c21add 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for decoding HTTP messages. */
-package org.opensaml.messaging.decoder.httpclient;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.decoder.httpclient;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/package-info.java
index 75bd1ce33..8296b9910 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for decoding messages. */
-package org.opensaml.messaging.decoder;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.decoder;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/AbstractHttpServletRequestMessageDecoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/AbstractHttpServletRequestMessageDecoder.java
index 5fa19bbfe..d8da1894c 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/AbstractHttpServletRequestMessageDecoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/AbstractHttpServletRequestMessageDecoder.java
@@ -20,7 +20,6 @@ package org.opensaml.messaging.decoder.servlet;
 import javax.annotation.Nullable;
 
 import org.opensaml.messaging.decoder.AbstractMessageDecoder;
-import org.opensaml.messaging.decoder.MessageDecodingException;
 
 import jakarta.servlet.http.HttpServletRequest;
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
@@ -62,12 +61,6 @@ public abstract class AbstractHttpServletRequestMessageDecoder extends AbstractM
         httpServletRequestSupplier = requestSupplier;
     }
 
-    /** {@inheritDoc} */
-    public void decode() throws MessageDecodingException {
-        super.decode();
-    }
-
-
     /** {@inheritDoc} */
     protected void doInitialize() throws ComponentInitializationException {
         super.doInitialize();
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHttpServletRequestXMLMessageDecoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHttpServletRequestXMLMessageDecoder.java
index 470a24703..9872acbdd 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHttpServletRequestXMLMessageDecoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHttpServletRequestXMLMessageDecoder.java
@@ -97,6 +97,8 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder extends AbstractHt
      * @param pool parser pool used to deserialize incoming messages
      */
     public void setParserPool(@Nonnull final ParserPool pool) {
+        checkSetterPreconditions();
+        
         parserPool = Constraint.isNotNull(pool, "ParserPool cannot be null");
     }
     
@@ -180,4 +182,4 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder extends AbstractHt
         // Default is no-op
     }
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/package-info.java
index e54486da6..240e89269 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for decoding messages that come from an {@link jakarta.servlet.http.HttpServletRequest}. */
+ at NonnullElements
 package org.opensaml.messaging.decoder.servlet;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/package-info.java
index ca271651d..c90b25897 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for encoding HTTP messages. */
-package org.opensaml.messaging.encoder.httpclient;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.encoder.httpclient;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/package-info.java
index 246b0ad47..93a2e0bc4 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for encoding messages. */
-package org.opensaml.messaging.encoder;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.encoder;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/AbstractHttpServletResponseMessageEncoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/AbstractHttpServletResponseMessageEncoder.java
index 23e001559..1498f6519 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/AbstractHttpServletResponseMessageEncoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/AbstractHttpServletResponseMessageEncoder.java
@@ -48,7 +48,8 @@ public abstract class AbstractHttpServletResponseMessageEncoder extends Abstract
     /**
      * {@inheritDoc}
      */
-    public synchronized void setHttpServletResponseSupplier(@Nullable final NonnullSupplier<HttpServletResponse> supplier) {
+    public synchronized void setHttpServletResponseSupplier(
+            @Nullable final NonnullSupplier<HttpServletResponse> supplier) {
         checkSetterPreconditions();
         httpServletResponseSupplier = supplier;
     }
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/HttpServletResponseMessageEncoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/HttpServletResponseMessageEncoder.java
index 8c72cddc2..010a6e8d7 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/HttpServletResponseMessageEncoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/HttpServletResponseMessageEncoder.java
@@ -43,5 +43,4 @@ public interface HttpServletResponseMessageEncoder extends MessageEncoder {
      */
     void setHttpServletResponseSupplier(@Nullable final NonnullSupplier<HttpServletResponse> responseSupplier);
 
-}
-
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/package-info.java
index 1ca0eb34d..ed6f30ffc 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for encoding messages to a {@link jakarta.servlet.http.HttpServletResponse}. */
+ at NonnullElements
 package org.opensaml.messaging.encoder.servlet;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/MessageErrorHandler.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/MessageErrorHandler.java
index ea94f9e36..8d439141a 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/MessageErrorHandler.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/MessageErrorHandler.java
@@ -33,6 +33,6 @@ public interface MessageErrorHandler {
      * @param messageContext the message context being processed, if available
      * @return true if error was successfully handled, false otherwise
      */
-    boolean handleError(@Nonnull Throwable t, @Nonnull MessageContext messageContext);
+    boolean handleError(@Nonnull final Throwable t, @Nonnull final MessageContext messageContext);
 
 }
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/PipelineMessageErrorHandler.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/PipelineMessageErrorHandler.java
index ae8cbaffa..769b30c0f 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/PipelineMessageErrorHandler.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/PipelineMessageErrorHandler.java
@@ -42,7 +42,7 @@ public interface PipelineMessageErrorHandler extends MessageErrorHandler {
      * 
      * @param handler the outbound error handler
      */
-    void setHandler(MessageHandler handler);
+    void setHandler(final MessageHandler handler);
 
     /**
      * Get the message encoder used to encode the outbound error message.
@@ -56,6 +56,6 @@ public interface PipelineMessageErrorHandler extends MessageErrorHandler {
      * 
      * @param messageEncoder the outbound error message encoder
      */
-    void setMessageEncoder(MessageEncoder messageEncoder);
+    void setMessageEncoder(final MessageEncoder messageEncoder);
     
 }
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/TypedMessageErrorHandler.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/TypedMessageErrorHandler.java
index 0351f4a77..989a60c65 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/TypedMessageErrorHandler.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/TypedMessageErrorHandler.java
@@ -31,6 +31,6 @@ public interface TypedMessageErrorHandler extends MessageErrorHandler {
      * @param t the type of error about which to query
      * @return true iff the handle can handle the specified error type
      */
-    boolean handlesError(@Nonnull Throwable t);
+    boolean handlesError(@Nonnull final Throwable t);
 
 }
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/package-info.java
index 3d4188da5..7b1e9f892 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for message-related error handling. */
-package org.opensaml.messaging.error;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.error;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/AbstractMessageHandler.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/AbstractMessageHandler.java
index fe90bf03e..b957dee22 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/AbstractMessageHandler.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/AbstractMessageHandler.java
@@ -207,6 +207,8 @@ public abstract class AbstractMessageHandler extends AbstractInitializableCompon
      * returned it is correct, if false is returned is is not safe to make any assumptions (even if
      * there was an call in flight.
      *
+     * @return true iff the {@link #doPreInvoke(MessageContext)} method was called
+     *
      * @since 5.0.0
      */
     protected boolean isPreInvokeCalled() {
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/MessageHandlerChain.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/MessageHandlerChain.java
index bdbc83d64..7d4bf7127 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/MessageHandlerChain.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/MessageHandlerChain.java
@@ -20,7 +20,8 @@ package org.opensaml.messaging.handler;
 import java.util.List;
 
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 
 /**
@@ -35,6 +36,6 @@ public interface MessageHandlerChain extends MessageHandler {
      * 
      * @return the list of members of the handler chain
      */
-    @NonnullAfterInit @NonnullElements List<MessageHandler> getHandlers();
+    @NonnullAfterInit @Unmodifiable @NotLive List<MessageHandler> getHandlers();
     
 }
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/package-info.java
index f644c7328..b9ed5d82c 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/handler/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for message context handlers. */
-package org.opensaml.messaging.handler;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.handler;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/package-info.java
index 3e261d8d6..c599765e0 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for messaging logic. */
-package org.opensaml.messaging.logic;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.logic;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/package-info.java
index 0a22a866a..f0b68aa10 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** General interfaces and classes related to message processing and bindings to transport protocols. */
-package org.opensaml.messaging;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/BasicMessagePipeline.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/BasicMessagePipeline.java
index 8a40366d1..212354712 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/BasicMessagePipeline.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/BasicMessagePipeline.java
@@ -29,23 +29,22 @@ import net.shibboleth.shared.logic.Constraint;
 /**
  * Basic implementation of {@link MessagePipeline}.
  */
-public class BasicMessagePipeline 
-        implements MessagePipeline {
+public class BasicMessagePipeline implements MessagePipeline {
     
     /** Message encoder. */
     @Nonnull private MessageEncoder encoder;
     
     /** Message decoder. */
-    @Nonnull  private MessageDecoder decoder;
+    @Nonnull private MessageDecoder decoder;
     
     /** Outbound payload message handler. */
-    private MessageHandler outboundPayloadHandler;
+    @Nullable private MessageHandler outboundPayloadHandler;
     
     /** Outbound transport message handler. */
-    private MessageHandler outboundTransportHandler;
+    @Nullable private MessageHandler outboundTransportHandler;
     
     /** Inbound message handler. */
-    private MessageHandler inboundHandler;
+    @Nullable private MessageHandler inboundHandler;
     
     /**
      * Constructor.
@@ -55,8 +54,8 @@ public class BasicMessagePipeline
      */
     public BasicMessagePipeline(@Nonnull final MessageEncoder newEncoder, 
             @Nonnull final MessageDecoder newDecoder) {
-        encoder = Constraint.isNotNull(newEncoder, "MessageEncoder can not be null");
-        decoder = Constraint.isNotNull(newDecoder, "MessageDecoder can not be null");
+        encoder = Constraint.isNotNull(newEncoder, "MessageEncoder cannot be null");
+        decoder = Constraint.isNotNull(newDecoder, "MessageDecoder cannot be null");
     }
 
     /** {@inheritDoc} */
@@ -70,7 +69,7 @@ public class BasicMessagePipeline
      * @param newEncoder the new message encoder
      */
     protected void setEncoder(@Nonnull final MessageEncoder newEncoder) {
-       encoder = Constraint.isNotNull(newEncoder, "MessageEncoder can not be null");
+       encoder = Constraint.isNotNull(newEncoder, "MessageEncoder cannot be null");
     }
 
     /** {@inheritDoc} */
@@ -84,12 +83,12 @@ public class BasicMessagePipeline
      * @param newDecoder the new message decoder
      */
     protected void setDecoder(@Nonnull final MessageDecoder newDecoder) {
-       decoder = Constraint.isNotNull(newDecoder, "MessageDecoder can not be null");
+       decoder = Constraint.isNotNull(newDecoder, "MessageDecoder cannot be null");
     }
 
 
     /** {@inheritDoc} */
-    public MessageHandler getOutboundPayloadMessageHandler() {
+    @Nullable public MessageHandler getOutboundPayloadMessageHandler() {
         return outboundPayloadHandler;
     }
 
@@ -103,7 +102,7 @@ public class BasicMessagePipeline
     }
 
     /** {@inheritDoc} */
-    public MessageHandler getOutboundTransportMessageHandler() {
+    @Nullable public MessageHandler getOutboundTransportMessageHandler() {
         return outboundTransportHandler;
     }
 
@@ -112,12 +111,12 @@ public class BasicMessagePipeline
      * 
      * @param handler the new handler
      */
-    public void setOutboundTransportHandler(final MessageHandler handler) {
+    public void setOutboundTransportHandler(@Nullable final MessageHandler handler) {
         outboundTransportHandler = handler;
     }
 
     /** {@inheritDoc} */
-    public MessageHandler getInboundMessageHandler() {
+    @Nullable public MessageHandler getInboundMessageHandler() {
         return inboundHandler;
     }
     
@@ -126,8 +125,8 @@ public class BasicMessagePipeline
      * 
      * @param handler the new handler
      */
-    public void setInboundHandler(final MessageHandler handler) {
+    public void setInboundHandler(@Nullable final MessageHandler handler) {
         inboundHandler = handler;
     }
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/MessagePipeline.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/MessagePipeline.java
index e1c8eddd7..ac083405f 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/MessagePipeline.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/MessagePipeline.java
@@ -34,14 +34,14 @@ public interface MessagePipeline {
      * 
      * @return the message encoder
      */
-    @Nonnull public MessageEncoder getEncoder();
+    @Nonnull MessageEncoder getEncoder();
     
     /**
      * Get the message decoder instance.
      * 
      * @return the message decoder
      */
-    @Nonnull public MessageDecoder getDecoder();
+    @Nonnull MessageDecoder getDecoder();
     
     /**
      * Get the (optional) outbound payload message handler instance.  
@@ -52,7 +52,7 @@ public interface MessagePipeline {
      * 
      * @return the outbound message handler, may be null
      */
-    @Nullable public MessageHandler getOutboundPayloadMessageHandler();
+    @Nullable MessageHandler getOutboundPayloadMessageHandler();
     
     /**
      * Get the (optional) outbound transport message handler instance.  
@@ -64,13 +64,13 @@ public interface MessagePipeline {
      * 
      * @return the outbound message handler, may be null
      */
-    @Nullable public MessageHandler getOutboundTransportMessageHandler();
+    @Nullable MessageHandler getOutboundTransportMessageHandler();
     
     /**
      * Get the (optional) inbound message handler instance.  
      * 
      * @return the inbound message handler, may be null
      */
-    public MessageHandler getInboundMessageHandler();
+    @Nullable MessageHandler getInboundMessageHandler();
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/StaticPipelineNameStrategy.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/StaticPipelineNameStrategy.java
index 1cb1424ed..727f0a313 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/StaticPipelineNameStrategy.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/StaticPipelineNameStrategy.java
@@ -31,7 +31,7 @@ import net.shibboleth.shared.primitive.StringSupport;
 public class StaticPipelineNameStrategy implements Function<InOutOperationContext, String> {
     
     /** The static pipeline name. */
-    private String pipelineName;
+    @Nullable private String pipelineName;
 
     /**
      * Constructor.
@@ -47,4 +47,4 @@ public class StaticPipelineNameStrategy implements Function<InOutOperationContex
         return pipelineName;
     }
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/BasicHttpClientMessagePipeline.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/BasicHttpClientMessagePipeline.java
index eebc382eb..4a7cfa36e 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/BasicHttpClientMessagePipeline.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/BasicHttpClientMessagePipeline.java
@@ -67,6 +67,4 @@ public class BasicHttpClientMessagePipeline extends BasicMessagePipeline impleme
         super.setDecoder(decoder);
     }
     
-    
-
-}
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/HttpClientMessagePipelineFactory.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/HttpClientMessagePipelineFactory.java
index 304eb8a88..10aae93bc 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/HttpClientMessagePipelineFactory.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/HttpClientMessagePipelineFactory.java
@@ -40,7 +40,6 @@ public interface HttpClientMessagePipelineFactory {
      * 
      * @return a new pipeline instance
      */
-    @Nonnull HttpClientMessagePipeline newInstance(
-            @Nullable final String pipelineName);
+    @Nonnull HttpClientMessagePipeline newInstance(@Nullable final String pipelineName);
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/package-info.java
index a42e675ca..1e2a78c8a 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for HTTP message processing pipelines. */
-package org.opensaml.messaging.pipeline.httpclient;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.pipeline.httpclient;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/package-info.java
index 49b10b19d..965a96c02 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for message processing pipelines. */
-package org.opensaml.messaging.pipeline;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.pipeline;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/BasicHttpServletMessagePipeline.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/BasicHttpServletMessagePipeline.java
index 51fe0c4b1..35dd50228 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/BasicHttpServletMessagePipeline.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/BasicHttpServletMessagePipeline.java
@@ -66,7 +66,5 @@ public class BasicHttpServletMessagePipeline extends BasicMessagePipeline implem
         }
         super.setDecoder(decoder);
     }
-    
-    
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/HttpServletMessagePipelineFactory.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/HttpServletMessagePipelineFactory.java
index 64bf50abd..ca0af0953 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/HttpServletMessagePipelineFactory.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/HttpServletMessagePipelineFactory.java
@@ -40,7 +40,6 @@ public interface HttpServletMessagePipelineFactory {
      * 
      * @return a new pipeline instance
      */
-    @Nonnull HttpServletMessagePipeline newInstance(
-            @Nullable final String pipelineName);
+    @Nonnull HttpServletMessagePipeline newInstance(@Nullable final String pipelineName);
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/package-info.java
index dc519afec..7614ce961 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/package-info.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Interfaces and classes for HTTP Servlet message processing pipelines. */
-package org.opensaml.messaging.pipeline.servlet;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.pipeline.servlet;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/AbstractMessageChannelSecurity.java b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/AbstractMessageChannelSecurity.java
index 4f075f7a0..fd483aaef 100644
--- a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/AbstractMessageChannelSecurity.java
+++ b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/AbstractMessageChannelSecurity.java
@@ -23,6 +23,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.opensaml.messaging.context.BaseContext;
+import org.opensaml.messaging.context.MessageChannelSecurityContext;
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.handler.AbstractMessageHandler;
 import org.opensaml.messaging.handler.MessageHandlerException;
@@ -81,13 +82,26 @@ public abstract class AbstractMessageChannelSecurity extends AbstractMessageHand
     }
     
     /**
-     * Get the parent context on which the {@link org.opensaml.messaging.context.MessageChannelSecurityContext}
-     * will be populated.
+     * Get the parent context on which the {@link MessageChannelSecurityContext} will be populated.
      * 
      * @return the parent context
      */
-    protected BaseContext getParentContext() {
+    @Nullable protected BaseContext getParentContext() {
         return parentContext;
     }
 
+    /**
+     * Get the parent context on which the {@link MessageChannelSecurityContext} will be populated,
+     * raising an {@link IllegalStateException} if null.
+     * 
+     * @return the parent context
+     */
+    @Nonnull protected BaseContext ensureParentContext() {
+        if (parentContext != null) {
+            return parentContext;
+        }
+        
+        throw new IllegalStateException("Parent context was null");
+    }
+
 }
\ No newline at end of file
diff --git a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/BasicMessageHandlerChain.java b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/BasicMessageHandlerChain.java
index d468ec600..caaa31e39 100644
--- a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/BasicMessageHandlerChain.java
+++ b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/BasicMessageHandlerChain.java
@@ -29,7 +29,8 @@ import org.opensaml.messaging.handler.MessageHandlerChain;
 import org.opensaml.messaging.handler.MessageHandlerException;
 
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.collection.CollectionSupport;
 
 /**
@@ -39,7 +40,7 @@ public class BasicMessageHandlerChain extends AbstractMessageHandler
     implements MessageHandlerChain {
 
     /** The list of members of the handler chain. */
-    @NonnullAfterInit @NonnullElements private List<MessageHandler> members;
+    @NonnullAfterInit private List<MessageHandler> members;
     
     /** 
      * {@inheritDoc}
@@ -50,7 +51,7 @@ public class BasicMessageHandlerChain extends AbstractMessageHandler
      * </p>
      * 
      * */
-    @NonnullAfterInit @NonnullElements public List<MessageHandler> getHandlers() {
+    @NonnullAfterInit @Unmodifiable @NotLive public List<MessageHandler> getHandlers() {
         return members;
     }
     
@@ -64,7 +65,7 @@ public class BasicMessageHandlerChain extends AbstractMessageHandler
      * 
      * @param handlers the list of message handler members
      */
-    public void setHandlers(@Nullable @NonnullElements final List<MessageHandler> handlers) {
+    public void setHandlers(@Nullable final List<MessageHandler> handlers) {
         if (handlers != null) {
             members = CollectionSupport.copyToList(handlers);
         } else {
@@ -80,4 +81,5 @@ public class BasicMessageHandlerChain extends AbstractMessageHandler
             }
         }
     }
+
 }
\ No newline at end of file
diff --git a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/MessageHandlerErrorStrategyAdapter.java b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/MessageHandlerErrorStrategyAdapter.java
index c3c4f2adc..a48b1ce8f 100644
--- a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/MessageHandlerErrorStrategyAdapter.java
+++ b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/MessageHandlerErrorStrategyAdapter.java
@@ -21,7 +21,6 @@ import java.util.List;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.primitive.LoggerFactory;
@@ -66,7 +65,7 @@ public class MessageHandlerErrorStrategyAdapter extends AbstractMessageHandler {
     @Nonnull private MessageHandler wrappedHandler;
     
     /** The list of typed error handlers. */
-    @Nonnull @NonnullElements private List<TypedMessageErrorHandler> errorHandlers;
+    @Nonnull private List<TypedMessageErrorHandler> errorHandlers;
     
     /** Flag indicating whether the wrapped handler's exception should be rethrown after being handled successfully. */
     private boolean rethrowIfHandled;
@@ -82,7 +81,7 @@ public class MessageHandlerErrorStrategyAdapter extends AbstractMessageHandler {
      * @param typedErrorHandlers the list of typed error handlers to apply
      */
     public MessageHandlerErrorStrategyAdapter(@Nonnull final MessageHandler messageHandler, 
-            @Nonnull @NonnullElements final List<TypedMessageErrorHandler> typedErrorHandlers) {
+            @Nonnull final List<TypedMessageErrorHandler> typedErrorHandlers) {
         wrappedHandler = Constraint.isNotNull(messageHandler, "Wrapped MessageHandler cannot be null");
         errorHandlers = CollectionSupport.copyToList(typedErrorHandlers);
         
diff --git a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/SchemaValidateXMLMessage.java b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/SchemaValidateXMLMessage.java
index 4132cf91d..b5c203a02 100644
--- a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/SchemaValidateXMLMessage.java
+++ b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/SchemaValidateXMLMessage.java
@@ -73,10 +73,7 @@ public class SchemaValidateXMLMessage extends AbstractMessageHandler {
             return false;
         }
         
-        if (messageContext.getMessage() == null) {
-            log.debug("{} Message context did not contain a message, unable to proceed", getLogPrefix());
-            throw new MessageHandlerException("Message context did not contain a message, unable to proceed.");
-        } else if (!(messageContext.getMessage() instanceof XMLObject)) {
+        if (!(messageContext.getMessage() instanceof XMLObject)) {
             log.debug("{} Message context did not contain an XMLObject, unable to proceed", getLogPrefix());
             throw new MessageHandlerException("Message context did not contain an XMLObject, unable to proceed.");
         }
@@ -90,8 +87,7 @@ public class SchemaValidateXMLMessage extends AbstractMessageHandler {
 
         log.debug("{} Attempting to schema validate incoming message", getLogPrefix());
         
-        final XMLObject message = (XMLObject) messageContext.getMessage();
-        assert message != null;
+        final XMLObject message = (XMLObject) messageContext.ensureMessage();
         if (message.getDOM() == null) {
             log.debug("{} Message doesn't contain a DOM, unable to proceed", getLogPrefix());
             throw new MessageHandlerException("Message doesn't contain a DOM, unable to proceed.");
diff --git a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/StaticMessageChannelSecurity.java b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/StaticMessageChannelSecurity.java
index 304f3dfb1..90a7ca8bc 100644
--- a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/StaticMessageChannelSecurity.java
+++ b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/StaticMessageChannelSecurity.java
@@ -73,7 +73,7 @@ public class StaticMessageChannelSecurity extends AbstractMessageChannelSecurity
     @Override
     protected void doInvoke(@Nonnull final MessageContext messageContext) {
         final MessageChannelSecurityContext channelContext =
-                getParentContext().ensureSubcontext(MessageChannelSecurityContext.class);
+                ensureParentContext().ensureSubcontext(MessageChannelSecurityContext.class);
         channelContext.setConfidentialityActive(isConfidentialityActive());
         channelContext.setIntegrityActive(isIntegrityActive());
     }
diff --git a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/URLEvaluatingMessageChannelSecurity.java b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/URLEvaluatingMessageChannelSecurity.java
index 7e954bbf3..b9cb88c7e 100644
--- a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/URLEvaluatingMessageChannelSecurity.java
+++ b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/URLEvaluatingMessageChannelSecurity.java
@@ -120,7 +120,7 @@ public class URLEvaluatingMessageChannelSecurity extends AbstractMessageChannelS
     @Override
     protected void doInvoke(@Nonnull final MessageContext messageContext) {
         final MessageChannelSecurityContext channelContext =
-                getParentContext().ensureSubcontext(MessageChannelSecurityContext.class);
+                ensureParentContext().ensureSubcontext(MessageChannelSecurityContext.class);
      
         assert urlBuilder != null;
         final String scheme = urlBuilder.getScheme();
diff --git a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/package-info.java b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/package-info.java
index 1d7f86b32..7b5f7c6bd 100644
--- a/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/package-info.java
+++ b/opensaml-messaging-impl/src/main/java/org/opensaml/messaging/handler/impl/package-info.java
@@ -16,4 +16,7 @@
  */
 
 /** Implementations of message context handlers. */
-package org.opensaml.messaging.handler.impl;
\ No newline at end of file
+ at NonnullElements
+package org.opensaml.messaging.handler.impl;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;

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


More information about the commits mailing list