[java-opensaml] branch main updated: IDP-2069 - Null handling task
Scott Cantor
cantor.2 at osu.edu
Wed Mar 8 15:46:29 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=5be0e69ec2190c7a3ef5399d90253fffebbde4be
The following commit(s) were added to refs/heads/main by this push:
new 5be0e69ec IDP-2069 - Null handling task
5be0e69ec is described below
commit 5be0e69ec2190c7a3ef5399d90253fffebbde4be
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Mar 8 10:46:26 2023 -0500
IDP-2069 - Null handling task
https://shibboleth.atlassian.net/browse/IDP-2069
Sanitized opensaml-messaging-api.
Added ensureIn/OutboundMessageContext methods to InOutOperationContext.
---
.../opensaml/messaging/context/BaseContext.java | 7 ++--
.../messaging/context/InOutOperationContext.java | 33 ++++++++++++++++++
.../httpclient/HttpClientRequestContext.java | 2 +-
.../context/navigate/RootContextLookup.java | 1 +
.../messaging/decoder/AbstractMessageDecoder.java | 18 ++++------
.../opensaml/messaging/decoder/MessageDecoder.java | 4 ++-
.../AbstractHttpClientResponseMessageDecoder.java | 15 +-------
.../BaseHttpClientResponseXMLMessageDecoder.java | 28 +++++++--------
.../AbstractHttpServletRequestMessageDecoder.java | 11 +++---
.../BaseHttpServletRequestXMLMessageDecoder.java | 40 ++++++++++++----------
.../messaging/encoder/AbstractMessageEncoder.java | 10 ------
.../opensaml/messaging/encoder/MessageEncoder.java | 4 ++-
.../AbstractHttpClientRequestMessageEncoder.java | 7 ----
.../BaseHttpClientRequestXMLMessageEncoder.java | 17 ++++++---
.../AbstractHttpServletResponseMessageEncoder.java | 6 ++--
.../BaseHttpServletResponseXMLMessageEncoder.java | 17 ++++++---
.../messaging/error/MessageErrorHandler.java | 4 ++-
.../messaging/error/TypedMessageErrorHandler.java | 4 ++-
.../messaging/error/servlet/package-info.java | 19 ----------
.../messaging/handler/AbstractMessageHandler.java | 9 +++--
.../NoConfidentialityMessageChannelPredicate.java | 2 +-
.../logic/NoIntegrityMessageChannelPredicate.java | 2 +-
.../messaging/pipeline/BasicMessagePipeline.java | 14 ++++----
.../httpclient/BasicHttpClientMessagePipeline.java | 8 ++---
.../httpclient/HttpClientMessagePipeline.java | 6 ++--
.../servlet/BasicHttpServletMessagePipeline.java | 8 ++---
.../servlet/HttpServletMessagePipeline.java | 6 ++--
.../context/InOutOperationContextText.java | 3 +-
.../opensaml/messaging/context/TestContext.java | 1 -
.../context/navigate/MessageContextLookupTest.java | 25 +++++---------
.../RecursiveTypedParentContextLookupTest.java | 14 +++-----
.../handler/AbstractMessageHandlerTest.java | 27 +++++++++++----
32 files changed, 193 insertions(+), 179 deletions(-)
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 82f534c7d..955de3c4e 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
@@ -23,15 +23,17 @@ import java.util.Iterator;
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.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import org.opensaml.messaging.MessageRuntimeException;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
/**
* Base implementation of a component which represents the context used to store state
@@ -57,6 +59,7 @@ import org.slf4j.LoggerFactory;
* to this convention, auto-creation will fail.
* </p>
*/
+ at NotThreadSafe
public abstract class BaseContext implements Iterable<BaseContext> {
/** Logger. */
@@ -239,7 +242,7 @@ public abstract class BaseContext implements Iterable<BaseContext> {
log.trace("New subcontext with type '{}' is currently a subcontext of "
+ "parent with type '{}', removing it",
new Object[]{subcontext.getClass().getName(), oldParent.getClass().getName(),});
- subcontext.getParent().removeSubcontext(subcontext);
+ oldParent.removeSubcontext(subcontext);
}
// Set parent pointer of new subcontext to this instance
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/InOutOperationContext.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/InOutOperationContext.java
index 209bec067..f4a260111 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/InOutOperationContext.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/InOutOperationContext.java
@@ -17,6 +17,7 @@
package org.opensaml.messaging.context;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
/**
@@ -58,6 +59,22 @@ public class InOutOperationContext extends BaseContext {
return inboundContext;
}
+ /**
+ * Gets the inbound message context, creating an empty one if it does not already exist.
+ *
+ * @return an existing, or new, inbound message context
+ *
+ * @since 5.0.0
+ */
+ @Nonnull public MessageContext ensureInboundMessageContext() {
+ if (inboundContext != null) {
+ return inboundContext;
+ }
+
+ setInboundMessageContext(new MessageContext());
+ return ensureInboundMessageContext();
+ }
+
/**
* Sets the inbound message context.
*
@@ -85,6 +102,22 @@ public class InOutOperationContext extends BaseContext {
@Nullable public MessageContext getOutboundMessageContext() {
return outboundContext;
}
+
+ /**
+ * Gets the outbound message context, creating an empty one if it does not already exist.
+ *
+ * @return an existing, or new, outbound message context
+ *
+ * @since 5.0.0
+ */
+ @Nonnull public MessageContext ensureOutboundMessageContext() {
+ if (outboundContext != null) {
+ return outboundContext;
+ }
+
+ setOutboundMessageContext(new MessageContext());
+ return ensureOutboundMessageContext();
+ }
/**
* Sets the outbound message context.
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/HttpClientRequestContext.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/HttpClientRequestContext.java
index eeac9117a..b394f380b 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/HttpClientRequestContext.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/HttpClientRequestContext.java
@@ -29,7 +29,7 @@ import org.opensaml.messaging.context.BaseContext;
public final class HttpClientRequestContext extends BaseContext {
/** The HttpClientContext instance. */
- private HttpClientContext httpClientContext;
+ @Nullable private HttpClientContext httpClientContext;
/**
* Get the {@link HttpClientContext} instance.
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/RootContextLookup.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/RootContextLookup.java
index e40aabef9..535ce0b17 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/RootContextLookup.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/navigate/RootContextLookup.java
@@ -60,6 +60,7 @@ public class RootContextLookup<StartContext extends BaseContext, RootContext ext
if (input.getParent() == null){
if (claz != null) {
if (claz.isInstance(input)) {
+ assert claz != null;
return claz.cast(input);
}
throw new ClassCastException("Root context was not of the expected type");
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/AbstractMessageDecoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/AbstractMessageDecoder.java
index f5d4790dd..467702837 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/AbstractMessageDecoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/AbstractMessageDecoder.java
@@ -17,6 +17,8 @@
package org.opensaml.messaging.decoder;
+import javax.annotation.Nullable;
+
import org.opensaml.messaging.context.MessageContext;
import net.shibboleth.shared.component.AbstractInitializableComponent;
@@ -29,11 +31,10 @@ public abstract class AbstractMessageDecoder extends AbstractInitializableCompon
implements MessageDecoder, UnmodifiableComponent {
/** Message context. */
- private MessageContext messageContext;
+ @Nullable private MessageContext messageContext;
/** {@inheritDoc} */
- @Override
- public MessageContext getMessageContext() {
+ @Nullable public MessageContext getMessageContext() {
return messageContext;
}
@@ -42,23 +43,15 @@ public abstract class AbstractMessageDecoder extends AbstractInitializableCompon
*
* @param context the message context
*/
- protected void setMessageContext(final MessageContext context) {
+ protected void setMessageContext(@Nullable final MessageContext context) {
messageContext = context;
}
/** {@inheritDoc} */
- @Override
public void decode() throws MessageDecodingException {
checkComponentActive();
doDecode();
}
-
- /** {@inheritDoc} */
- protected void doDestroy() {
- messageContext = null;
-
- super.doDestroy();
- }
/**
* Performs the decoding logic. By the time this is called, this decoder has already been initialized and checked to
@@ -67,4 +60,5 @@ public abstract class AbstractMessageDecoder extends AbstractInitializableCompon
* @throws MessageDecodingException thrown if there is a problem decoding the message
*/
protected abstract void doDecode() throws MessageDecodingException;
+
}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/MessageDecoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/MessageDecoder.java
index 1d0434072..9de044fc7 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/MessageDecoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/MessageDecoder.java
@@ -17,6 +17,8 @@
package org.opensaml.messaging.decoder;
+import javax.annotation.Nullable;
+
import org.opensaml.messaging.context.MessageContext;
import net.shibboleth.shared.component.DestructableComponent;
@@ -45,5 +47,5 @@ public interface MessageDecoder extends InitializableComponent, DestructableComp
*
* @return the decoded message context
*/
- MessageContext getMessageContext();
+ @Nullable MessageContext getMessageContext();
}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/AbstractHttpClientResponseMessageDecoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/AbstractHttpClientResponseMessageDecoder.java
index 7e0c36ad0..86e8086b0 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/AbstractHttpClientResponseMessageDecoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/AbstractHttpClientResponseMessageDecoder.java
@@ -21,7 +21,6 @@ import javax.annotation.Nullable;
import org.apache.hc.core5.http.ClassicHttpResponse;
import org.opensaml.messaging.decoder.AbstractMessageDecoder;
-import org.opensaml.messaging.decoder.MessageDecodingException;
import net.shibboleth.shared.component.ComponentInitializationException;
@@ -32,7 +31,7 @@ public abstract class AbstractHttpClientResponseMessageDecoder extends AbstractM
implements HttpClientResponseMessageDecoder {
/** The HTTP client response. */
- private ClassicHttpResponse response;
+ @Nullable private ClassicHttpResponse response;
/** {@inheritDoc} */
@Nullable public ClassicHttpResponse getHttpResponse() {
@@ -45,18 +44,6 @@ public abstract class AbstractHttpClientResponseMessageDecoder extends AbstractM
response = clientResponse;
}
-
- /** {@inheritDoc} */
- public void decode() throws MessageDecodingException {
- super.decode();
- }
-
- /** {@inheritDoc} */
- protected void doDestroy() {
- response = null;
-
- super.doDestroy();
- }
/** {@inheritDoc} */
protected void doInitialize() throws ComponentInitializationException {
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 7bf6f7b3a..33a36975e 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
@@ -20,9 +20,12 @@ package org.opensaml.messaging.decoder.httpclient;
import java.io.InputStream;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.xml.ParserPool;
import net.shibboleth.shared.xml.SerializeSupport;
import net.shibboleth.shared.xml.XMLParserException;
@@ -32,9 +35,10 @@ import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
import org.opensaml.core.xml.io.MarshallingException;
import org.opensaml.core.xml.io.UnmarshallingException;
import org.opensaml.core.xml.util.XMLObjectSupport;
+import org.opensaml.messaging.context.MessageContext;
import org.opensaml.messaging.decoder.MessageDecodingException;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
import org.w3c.dom.Element;
/**
@@ -44,13 +48,13 @@ import org.w3c.dom.Element;
public abstract class BaseHttpClientResponseXMLMessageDecoder extends AbstractHttpClientResponseMessageDecoder {
/** Used to log protocol messages. */
- private Logger protocolMessageLog = LoggerFactory.getLogger("PROTOCOL_MESSAGE");
+ @Nonnull private Logger protocolMessageLog = LoggerFactory.getLogger("PROTOCOL_MESSAGE");
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(BaseHttpClientResponseXMLMessageDecoder.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(BaseHttpClientResponseXMLMessageDecoder.class);
/** Parser pool used to deserialize the message. */
- private ParserPool parserPool;
+ @NonnullAfterInit private ParserPool parserPool;
/** Constructor. */
public BaseHttpClientResponseXMLMessageDecoder() {
@@ -73,7 +77,7 @@ public abstract class BaseHttpClientResponseXMLMessageDecoder extends AbstractHt
*
* @return parser pool used to deserialize incoming messages
*/
- @Nonnull public ParserPool getParserPool() {
+ @NonnullAfterInit public ParserPool getParserPool() {
return parserPool;
}
@@ -87,13 +91,6 @@ public abstract class BaseHttpClientResponseXMLMessageDecoder extends AbstractHt
parserPool = pool;
}
- /** {@inheritDoc} */
- protected void doDestroy() {
- parserPool = null;
-
- super.doDestroy();
- }
-
/** {@inheritDoc} */
protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
@@ -128,8 +125,9 @@ public abstract class BaseHttpClientResponseXMLMessageDecoder extends AbstractHt
*
* @return the XMLObject message considered to be the protocol message for logging purposes
*/
- protected Object getMessageToLog() {
- return getMessageContext().getMessage();
+ @Nullable protected Object getMessageToLog() {
+ final MessageContext mc = getMessageContext();
+ return mc != null ? mc.getMessage() : null;
}
/**
@@ -141,7 +139,7 @@ public abstract class BaseHttpClientResponseXMLMessageDecoder extends AbstractHt
*
* @throws MessageDecodingException thrown if there is a problem deserializing and unmarshalling the message
*/
- protected XMLObject unmarshallMessage(final InputStream messageStream) throws MessageDecodingException {
+ protected XMLObject unmarshallMessage(@Nonnull final InputStream messageStream) throws MessageDecodingException {
try {
final XMLObject message = XMLObjectSupport.unmarshallFromInputStream(getParserPool(), messageStream);
return message;
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 2a073c655..f49c558fd 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
@@ -36,12 +36,12 @@ public abstract class AbstractHttpServletRequestMessageDecoder extends AbstractM
@Nullable private NonnullSupplier<HttpServletRequest> httpServletRequestSupplier;
/** {@inheritDoc} */
- @Override
@Nullable public HttpServletRequest getHttpServletRequest() {
- if (httpServletRequestSupplier == null) {
- return null;
+ if (httpServletRequestSupplier != null) {
+ return httpServletRequestSupplier.get();
}
- return httpServletRequestSupplier.get();
+
+ return null;
}
/**
@@ -75,4 +75,5 @@ public abstract class AbstractHttpServletRequestMessageDecoder extends AbstractM
throw new ComponentInitializationException("HTTP Servlet request cannot be null");
}
}
-}
+
+}
\ No newline at end of file
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 2ff0cd130..470a24703 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
@@ -20,21 +20,25 @@ package org.opensaml.messaging.decoder.servlet;
import java.io.InputStream;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
import org.opensaml.core.xml.io.MarshallingException;
import org.opensaml.core.xml.io.UnmarshallingException;
import org.opensaml.core.xml.util.XMLObjectSupport;
+import org.opensaml.messaging.context.MessageContext;
import org.opensaml.messaging.decoder.MessageDecoder;
import org.opensaml.messaging.decoder.MessageDecodingException;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
import org.w3c.dom.Element;
import jakarta.servlet.http.HttpServletRequest;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.xml.ParserPool;
import net.shibboleth.shared.xml.SerializeSupport;
import net.shibboleth.shared.xml.XMLParserException;
@@ -51,7 +55,7 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder extends AbstractHt
@Nonnull private final Logger log = LoggerFactory.getLogger(BaseHttpServletRequestXMLMessageDecoder.class);
/** Parser pool used to deserialize the message. */
- @Nonnull private ParserPool parserPool;
+ @NonnullAfterInit private ParserPool parserPool;
/** Constructor. */
public BaseHttpServletRequestXMLMessageDecoder() {
@@ -62,9 +66,14 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder extends AbstractHt
public void decode() throws MessageDecodingException {
log.debug("Beginning to decode message from HttpServletRequest");
- log.debug("HttpServletRequest indicated Content-Type: {}", getHttpServletRequest().getContentType());
+ final HttpServletRequest request = getHttpServletRequest();
+ if (request == null) {
+ throw new MessageDecodingException("HttpServletRequest was null");
+ }
+
+ log.debug("HttpServletRequest indicated Content-Type: {}", request.getContentType());
- validateHttpRequest(getHttpServletRequest());
+ validateHttpRequest(request);
super.decode();
@@ -78,7 +87,7 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder extends AbstractHt
*
* @return parser pool used to deserialize incoming messages
*/
- @Nonnull public ParserPool getParserPool() {
+ @NonnullAfterInit public ParserPool getParserPool() {
return parserPool;
}
@@ -88,15 +97,7 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder 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;
- }
-
- /** {@inheritDoc} */
- protected void doDestroy() {
- parserPool = null;
-
- super.doDestroy();
+ parserPool = Constraint.isNotNull(pool, "ParserPool cannot be null");
}
/** {@inheritDoc} */
@@ -114,7 +115,7 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder extends AbstractHt
protected void logDecodedMessage() {
if (protocolMessageLog.isDebugEnabled() ){
final Object message = getMessageToLog();
- if (message == null || !(message instanceof XMLObject)) {
+ if (!(message instanceof XMLObject)) {
log.warn("Decoded message was null or unsupported, nothing to log");
return;
}
@@ -133,8 +134,9 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder extends AbstractHt
*
* @return the XMLObject message considered to be the protocol message for logging purposes
*/
- protected Object getMessageToLog() {
- return getMessageContext().getMessage();
+ @Nullable protected Object getMessageToLog() {
+ final MessageContext mc = getMessageContext();
+ return mc != null ? mc.getMessage() : null;
}
/**
@@ -146,7 +148,7 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder extends AbstractHt
*
* @throws MessageDecodingException thrown if there is a problem deserializing and unmarshalling the message
*/
- protected XMLObject unmarshallMessage(final InputStream messageStream) throws MessageDecodingException {
+ protected XMLObject unmarshallMessage(@Nonnull final InputStream messageStream) throws MessageDecodingException {
try {
final XMLObject message = XMLObjectSupport.unmarshallFromInputStream(getParserPool(), messageStream);
return message;
@@ -174,7 +176,7 @@ public abstract class BaseHttpServletRequestXMLMessageDecoder extends AbstractHt
*
* @throws MessageDecodingException if request is not considered valid
*/
- protected void validateHttpRequest(final HttpServletRequest request) throws MessageDecodingException {
+ protected void validateHttpRequest(@Nonnull final HttpServletRequest request) throws MessageDecodingException {
// Default is no-op
}
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/AbstractMessageEncoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/AbstractMessageEncoder.java
index 9028610bc..6d5f5cc02 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/AbstractMessageEncoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/AbstractMessageEncoder.java
@@ -35,7 +35,6 @@ public abstract class AbstractMessageEncoder extends AbstractInitializableCompon
@Nullable private MessageContext messageContext;
/** {@inheritDoc} */
- @Override
public synchronized void setMessageContext(@Nullable final MessageContext context) {
checkSetterPreconditions();
@@ -43,7 +42,6 @@ public abstract class AbstractMessageEncoder extends AbstractInitializableCompon
}
/** {@inheritDoc} */
- @Override
public void encode() throws MessageEncodingException {
checkComponentActive();
doEncode();
@@ -53,7 +51,6 @@ public abstract class AbstractMessageEncoder extends AbstractInitializableCompon
*
* Default implementation is a no-op.
*/
- @Override
public void prepareContext() throws MessageEncodingException {
}
@@ -67,13 +64,6 @@ public abstract class AbstractMessageEncoder extends AbstractInitializableCompon
return messageContext;
}
- /** {@inheritDoc} */
- protected void doDestroy() {
- messageContext = null;
-
- super.doDestroy();
- }
-
/** {@inheritDoc} */
protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/MessageEncoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/MessageEncoder.java
index 7a8a79dd9..7f3a32dc5 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/MessageEncoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/MessageEncoder.java
@@ -17,6 +17,8 @@
package org.opensaml.messaging.encoder;
+import javax.annotation.Nullable;
+
import org.opensaml.messaging.context.MessageContext;
import net.shibboleth.shared.component.DestructableComponent;
@@ -69,5 +71,5 @@ public interface MessageEncoder extends InitializableComponent, DestructableComp
*
* @param messageContext the message context
*/
- void setMessageContext(MessageContext messageContext);
+ void setMessageContext(@Nullable MessageContext messageContext);
}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/AbstractHttpClientRequestMessageEncoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/AbstractHttpClientRequestMessageEncoder.java
index 0bb1077b8..1b3bdb3d0 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/AbstractHttpClientRequestMessageEncoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/AbstractHttpClientRequestMessageEncoder.java
@@ -46,13 +46,6 @@ public abstract class AbstractHttpClientRequestMessageEncoder extends AbstractMe
request = httpRequest;
}
- /** {@inheritDoc} */
- protected void doDestroy() {
- request = null;
-
- super.doDestroy();
- }
-
/** {@inheritDoc} */
protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/BaseHttpClientRequestXMLMessageEncoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/BaseHttpClientRequestXMLMessageEncoder.java
index 2bd325465..e0f0e1f4a 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/BaseHttpClientRequestXMLMessageEncoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/BaseHttpClientRequestXMLMessageEncoder.java
@@ -23,11 +23,13 @@ import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.io.MarshallingException;
import org.opensaml.core.xml.util.XMLObjectSupport;
+import org.opensaml.messaging.context.MessageContext;
import org.opensaml.messaging.encoder.MessageEncodingException;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
import org.w3c.dom.Element;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.xml.SerializeSupport;
/**
@@ -43,8 +45,14 @@ public abstract class BaseHttpClientRequestXMLMessageEncoder extends AbstractHt
/** {@inheritDoc} */
public void encode() throws MessageEncodingException {
- if (log.isDebugEnabled() && getMessageContext().getMessage() != null) {
- log.debug("Beginning encode of message of type: {}", getMessageContext().getMessage().getClass().getName());
+ if (log.isDebugEnabled()) {
+ final MessageContext mc = getMessageContext();
+ if (mc != null) {
+ final Object msg = mc.getMessage();
+ if (msg != null) {
+ log.debug("Beginning encode of message of type: {}", msg.getClass().getName());
+ }
+ }
}
super.encode();
@@ -80,7 +88,8 @@ public abstract class BaseHttpClientRequestXMLMessageEncoder extends AbstractHt
* @return the XMLObject message considered to be the protocol message for logging purposes
*/
@Nullable protected Object getMessageToLog() {
- return getMessageContext().getMessage();
+ final MessageContext mc = getMessageContext();
+ return mc != null ? mc.getMessage() : null;
}
/**
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 41889ddfe..9d2294f17 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
@@ -38,10 +38,10 @@ public abstract class AbstractHttpServletResponseMessageEncoder extends Abstract
* {@inheritDoc}
*/
@Nullable public HttpServletResponse getHttpServletResponse() {
- if (httpServletResponseSupplier == null) {
- return null;
+ if (httpServletResponseSupplier != null) {
+ return httpServletResponseSupplier.get();
}
- return httpServletResponseSupplier.get();
+ return null;
}
/**
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/BaseHttpServletResponseXMLMessageEncoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/BaseHttpServletResponseXMLMessageEncoder.java
index eda7f59d9..cbe024bf4 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/BaseHttpServletResponseXMLMessageEncoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/servlet/BaseHttpServletResponseXMLMessageEncoder.java
@@ -23,11 +23,13 @@ import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.io.MarshallingException;
import org.opensaml.core.xml.util.XMLObjectSupport;
+import org.opensaml.messaging.context.MessageContext;
import org.opensaml.messaging.encoder.MessageEncodingException;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
import org.w3c.dom.Element;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.xml.SerializeSupport;
/**
@@ -43,8 +45,14 @@ public abstract class BaseHttpServletResponseXMLMessageEncoder extends Abstract
/** {@inheritDoc} */
public void encode() throws MessageEncodingException {
- if (log.isDebugEnabled() && getMessageContext().getMessage() != null) {
- log.debug("Beginning encode of message of type: {}", getMessageContext().getMessage().getClass().getName());
+ if (log.isDebugEnabled()) {
+ final MessageContext mc = getMessageContext();
+ if (mc != null) {
+ final Object msg = mc.getMessage();
+ if (msg != null) {
+ log.debug("Beginning encode of message of type: {}", msg.getClass().getName());
+ }
+ }
}
super.encode();
@@ -80,7 +88,8 @@ public abstract class BaseHttpServletResponseXMLMessageEncoder extends Abstract
* @return the XMLObject message considered to be the protocol message for logging purposes
*/
@Nullable protected Object getMessageToLog() {
- return getMessageContext().getMessage();
+ final MessageContext mc = getMessageContext();
+ return mc != null ? mc.getMessage() : null;
}
/**
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 33259ab6b..ea94f9e36 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
@@ -17,6 +17,8 @@
package org.opensaml.messaging.error;
+import javax.annotation.Nonnull;
+
import org.opensaml.messaging.context.MessageContext;
/**
@@ -31,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(Throwable t, MessageContext messageContext);
+ boolean handleError(@Nonnull Throwable t, @Nonnull MessageContext messageContext);
}
\ 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 3a954ab2a..0351f4a77 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
@@ -17,6 +17,8 @@
package org.opensaml.messaging.error;
+import javax.annotation.Nonnull;
+
/**
* A specialization of error handler that explicitly indicates that it is capable of handling
* one or more types of throwable errors.
@@ -29,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(Throwable t);
+ boolean handlesError(@Nonnull Throwable t);
}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/servlet/package-info.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/servlet/package-info.java
deleted file mode 100644
index 483de072e..000000000
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/error/servlet/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements. See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/** Classes for message-related error handling in a servlet environment. */
-package org.opensaml.messaging.error.servlet;
\ No newline at end of file
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 971787111..162434300 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
@@ -23,14 +23,13 @@ import javax.annotation.Nonnull;
import org.opensaml.messaging.context.MessageContext;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Predicates;
import net.shibboleth.shared.annotation.Prototype;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.component.AbstractInitializableComponent;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.PredicateSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* A base abstract implementation of {@link MessageHandler}.
@@ -39,14 +38,14 @@ import net.shibboleth.shared.logic.Constraint;
public abstract class AbstractMessageHandler extends AbstractInitializableComponent implements MessageHandler {
/** Logger. */
- private Logger log = LoggerFactory.getLogger(AbstractMessageHandler.class);
+ @Nonnull private Logger log = LoggerFactory.getLogger(AbstractMessageHandler.class);
/** Condition dictating whether to run or not. */
@Nonnull private Predicate<MessageContext> activationCondition;
/** Constructor. */
public AbstractMessageHandler() {
- activationCondition = Predicates.alwaysTrue();
+ activationCondition = PredicateSupport.alwaysTrue();
}
/**
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/NoConfidentialityMessageChannelPredicate.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/NoConfidentialityMessageChannelPredicate.java
index 74be672ba..880e86c4b 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/NoConfidentialityMessageChannelPredicate.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/NoConfidentialityMessageChannelPredicate.java
@@ -35,7 +35,7 @@ public class NoConfidentialityMessageChannelPredicate implements Predicate<Messa
/** {@inheritDoc} */
public boolean test(@Nullable final MessageContext input) {
return input == null
- || !input.getSubcontext(MessageChannelSecurityContext.class, true).isConfidentialityActive();
+ || !input.getOrCreateSubcontext(MessageChannelSecurityContext.class).isConfidentialityActive();
}
}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/NoIntegrityMessageChannelPredicate.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/NoIntegrityMessageChannelPredicate.java
index 35a47bbc9..b7706cf27 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/NoIntegrityMessageChannelPredicate.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/logic/NoIntegrityMessageChannelPredicate.java
@@ -34,7 +34,7 @@ public class NoIntegrityMessageChannelPredicate implements Predicate<MessageCont
/** {@inheritDoc} */
public boolean test(@Nullable final MessageContext input) {
- return input == null || !input.getSubcontext(MessageChannelSecurityContext.class, true).isIntegrityActive();
+ return input == null || !input.getOrCreateSubcontext(MessageChannelSecurityContext.class).isIntegrityActive();
}
}
\ No newline at end of file
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 15db7f799..8a40366d1 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
@@ -33,10 +33,10 @@ public class BasicMessagePipeline
implements MessagePipeline {
/** Message encoder. */
- private MessageEncoder encoder;
+ @Nonnull private MessageEncoder encoder;
/** Message decoder. */
- private MessageDecoder decoder;
+ @Nonnull private MessageDecoder decoder;
/** Outbound payload message handler. */
private MessageHandler outboundPayloadHandler;
@@ -55,12 +55,12 @@ public class BasicMessagePipeline
*/
public BasicMessagePipeline(@Nonnull final MessageEncoder newEncoder,
@Nonnull final MessageDecoder newDecoder) {
- setEncoder(newEncoder);
- setDecoder(newDecoder);
+ encoder = Constraint.isNotNull(newEncoder, "MessageEncoder can not be null");
+ decoder = Constraint.isNotNull(newDecoder, "MessageDecoder can not be null");
}
/** {@inheritDoc} */
- public MessageEncoder getEncoder() {
+ @Nonnull public MessageEncoder getEncoder() {
return encoder;
}
@@ -70,11 +70,11 @@ 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 can not be null");
}
/** {@inheritDoc} */
- public MessageDecoder getDecoder() {
+ @Nonnull public MessageDecoder getDecoder() {
return decoder;
}
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 3914f3de9..eebc382eb 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
@@ -42,12 +42,12 @@ public class BasicHttpClientMessagePipeline extends BasicMessagePipeline impleme
}
/** {@inheritDoc} */
- public HttpClientRequestMessageEncoder getEncoder() {
+ @Nonnull public HttpClientRequestMessageEncoder getEncoder() {
return (HttpClientRequestMessageEncoder) super.getEncoder();
}
/** {@inheritDoc} */
- protected void setEncoder(final MessageEncoder encoder) {
+ protected void setEncoder(@Nonnull final MessageEncoder encoder) {
if (!(encoder instanceof HttpClientRequestMessageEncoder)) {
throw new IllegalArgumentException("HttpClientRequestMessageEncoder is required");
}
@@ -55,12 +55,12 @@ public class BasicHttpClientMessagePipeline extends BasicMessagePipeline impleme
}
/** {@inheritDoc} */
- public HttpClientResponseMessageDecoder getDecoder() {
+ @Nonnull public HttpClientResponseMessageDecoder getDecoder() {
return (HttpClientResponseMessageDecoder) super.getDecoder();
}
/** {@inheritDoc} */
- protected void setDecoder(final MessageDecoder decoder) {
+ protected void setDecoder(@Nonnull final MessageDecoder decoder) {
if (!(decoder instanceof HttpClientResponseMessageDecoder)) {
throw new IllegalArgumentException("HttpClientResponseMessageDecoder is required");
}
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/HttpClientMessagePipeline.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/HttpClientMessagePipeline.java
index df5da9506..e3fd8fee4 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/HttpClientMessagePipeline.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/httpclient/HttpClientMessagePipeline.java
@@ -17,6 +17,8 @@
package org.opensaml.messaging.pipeline.httpclient;
+import javax.annotation.Nonnull;
+
import org.opensaml.messaging.decoder.httpclient.HttpClientResponseMessageDecoder;
import org.opensaml.messaging.encoder.httpclient.HttpClientRequestMessageEncoder;
import org.opensaml.messaging.pipeline.MessagePipeline;
@@ -31,13 +33,13 @@ public interface HttpClientMessagePipeline extends MessagePipeline {
*
* <p>Narrows the super-interface return type to {@link HttpClientRequestMessageEncoder}.</p>
*/
- public HttpClientRequestMessageEncoder getEncoder();
+ @Nonnull public HttpClientRequestMessageEncoder getEncoder();
/**
* {@inheritDoc}
*
* <p>Narrows the super-interface return type to {@link HttpClientResponseMessageDecoder}.</p>
*/
- public HttpClientResponseMessageDecoder getDecoder();
+ @Nonnull public HttpClientResponseMessageDecoder getDecoder();
}
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 fdf027d75..51fe0c4b1 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
@@ -42,12 +42,12 @@ public class BasicHttpServletMessagePipeline extends BasicMessagePipeline implem
}
/** {@inheritDoc} */
- public HttpServletResponseMessageEncoder getEncoder() {
+ @Nonnull public HttpServletResponseMessageEncoder getEncoder() {
return (HttpServletResponseMessageEncoder) super.getEncoder();
}
/** {@inheritDoc} */
- protected void setEncoder(final MessageEncoder encoder) {
+ protected void setEncoder(@Nonnull final MessageEncoder encoder) {
if (!(encoder instanceof HttpServletResponseMessageEncoder)) {
throw new IllegalArgumentException("HttpServletResponseMessageEncoder is required");
}
@@ -55,12 +55,12 @@ public class BasicHttpServletMessagePipeline extends BasicMessagePipeline implem
}
/** {@inheritDoc} */
- public HttpServletRequestMessageDecoder getDecoder() {
+ @Nonnull public HttpServletRequestMessageDecoder getDecoder() {
return (HttpServletRequestMessageDecoder) super.getDecoder();
}
/** {@inheritDoc} */
- protected void setDecoder(final MessageDecoder decoder) {
+ protected void setDecoder(@Nonnull final MessageDecoder decoder) {
if (!(decoder instanceof HttpServletRequestMessageDecoder)) {
throw new IllegalArgumentException("HttpServletRequestMessageDecoder is required");
}
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/HttpServletMessagePipeline.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/HttpServletMessagePipeline.java
index 163059cd5..14162ea07 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/HttpServletMessagePipeline.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/pipeline/servlet/HttpServletMessagePipeline.java
@@ -17,6 +17,8 @@
package org.opensaml.messaging.pipeline.servlet;
+import javax.annotation.Nonnull;
+
import org.opensaml.messaging.decoder.servlet.HttpServletRequestMessageDecoder;
import org.opensaml.messaging.encoder.servlet.HttpServletResponseMessageEncoder;
import org.opensaml.messaging.pipeline.MessagePipeline;
@@ -31,13 +33,13 @@ public interface HttpServletMessagePipeline extends MessagePipeline {
*
* <p>Narrows the super-interface return type to {@link HttpServletResponseMessageEncoder}.</p>
*/
- public HttpServletResponseMessageEncoder getEncoder();
+ @Nonnull public HttpServletResponseMessageEncoder getEncoder();
/**
* {@inheritDoc}
*
* <p>Narrows the super-interface return type to {@link HttpServletRequestMessageDecoder}.</p>
*/
- public HttpServletRequestMessageDecoder getDecoder();
+ @Nonnull public HttpServletRequestMessageDecoder getDecoder();
}
diff --git a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/InOutOperationContextText.java b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/InOutOperationContextText.java
index d6188fe21..424c2422b 100644
--- a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/InOutOperationContextText.java
+++ b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/InOutOperationContextText.java
@@ -21,8 +21,9 @@ import org.testng.Assert;
import org.testng.annotations.Test;
/**
- *
+ * Unit test for {@link InOutOperationContext}.
*/
+ at SuppressWarnings("javadoc")
public class InOutOperationContextText {
@Test
diff --git a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/TestContext.java b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/TestContext.java
index 7200991b7..be8d30df5 100644
--- a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/TestContext.java
+++ b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/TestContext.java
@@ -17,7 +17,6 @@
package org.opensaml.messaging.context;
-import org.opensaml.messaging.context.BaseContext;
/**
* A concrete test context implementation for use in unit tests.
diff --git a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/MessageContextLookupTest.java b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/MessageContextLookupTest.java
index ca44cea0a..64f6ae4ac 100644
--- a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/MessageContextLookupTest.java
+++ b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/MessageContextLookupTest.java
@@ -25,8 +25,10 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import net.shibboleth.shared.logic.ConstraintViolationException;
-
+/**
+ * Unit test for {@link MessageContextLookup}.
+ */
+ at SuppressWarnings("javadoc")
public class MessageContextLookupTest {
private InOutOperationContext opContext;
@@ -39,7 +41,7 @@ public class MessageContextLookupTest {
@Test
public void testInboundFromSame() {
MockContext input = new MockContext();
- opContext.getInboundMessageContext().addSubcontext(input);
+ opContext.ensureInboundMessageContext().addSubcontext(input);
MessageContextLookup<BaseContext> lookup = new MessageContextLookup<>(Direction.INBOUND);
Assert.assertSame(lookup.apply(input), opContext.getInboundMessageContext());
}
@@ -47,7 +49,7 @@ public class MessageContextLookupTest {
@Test
public void testOutboundFromSame() {
MockContext input = new MockContext();
- opContext.getOutboundMessageContext().addSubcontext(input);
+ opContext.ensureOutboundMessageContext().addSubcontext(input);
MessageContextLookup<BaseContext> lookup = new MessageContextLookup<>(Direction.OUTBOUND);
Assert.assertSame(lookup.apply(input), opContext.getOutboundMessageContext());
}
@@ -55,7 +57,7 @@ public class MessageContextLookupTest {
@Test
public void testInboundFromCrosswalk() {
MockContext input = new MockContext();
- opContext.getOutboundMessageContext().addSubcontext(input);
+ opContext.ensureOutboundMessageContext().addSubcontext(input);
MessageContextLookup<BaseContext> lookup = new MessageContextLookup<>(Direction.INBOUND);
Assert.assertSame(lookup.apply(input), opContext.getInboundMessageContext());
}
@@ -63,7 +65,7 @@ public class MessageContextLookupTest {
@Test
public void testOutboundFromCrosswalk() {
MockContext input = new MockContext();
- opContext.getInboundMessageContext().addSubcontext(input);
+ opContext.ensureInboundMessageContext().addSubcontext(input);
MessageContextLookup<BaseContext> lookup = new MessageContextLookup<>(Direction.OUTBOUND);
Assert.assertSame(lookup.apply(input), opContext.getOutboundMessageContext());
}
@@ -74,17 +76,6 @@ public class MessageContextLookupTest {
Assert.assertNull(lookup.apply(new MessageContext()));
}
- @Test(expectedExceptions=ConstraintViolationException.class)
- public void testCtorNoDirection() {
- new MessageContextLookup<>(null);
- }
-
- @Test(expectedExceptions=ConstraintViolationException.class)
- public void testCtorNoLookup() {
- new MessageContextLookup<>(Direction.INBOUND, null);
- }
-
-
// Helpers
private static class MockContext extends BaseContext {
diff --git a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/RecursiveTypedParentContextLookupTest.java b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/RecursiveTypedParentContextLookupTest.java
index 5758a6c55..9147c630a 100644
--- a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/RecursiveTypedParentContextLookupTest.java
+++ b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/RecursiveTypedParentContextLookupTest.java
@@ -23,13 +23,14 @@ import org.opensaml.messaging.context.MessageContext;
import org.testng.Assert;
import org.testng.annotations.Test;
-import net.shibboleth.shared.logic.ConstraintViolationException;
-
/**
- *
+ * Unit test for {@link RecursiveTypedParentContextLookup}.
*/
public class RecursiveTypedParentContextLookupTest {
+ /**
+ * Unit test.
+ */
@Test
public void testBasic() {
MockContext1 mc1 = new MockContext1();
@@ -39,7 +40,7 @@ public class RecursiveTypedParentContextLookupTest {
InOutOperationContext opContext = new InOutOperationContext(null, null);
opContext.setInboundMessageContext(in);
- opContext.getInboundMessageContext().addSubcontext(mc1);
+ opContext.ensureInboundMessageContext().addSubcontext(mc1);
mc1.addSubcontext(mc2);
mc2.addSubcontext(mc3);
@@ -52,11 +53,6 @@ public class RecursiveTypedParentContextLookupTest {
Assert.assertNull(new RecursiveTypedParentContextLookup<>(InOutOperationContext.class).apply(null));
}
- @Test(expectedExceptions=ConstraintViolationException.class)
- public void testCtor() {
- new RecursiveTypedParentContextLookup<>(null);
- }
-
// Helpers
public static class MockContext1 extends BaseContext {
diff --git a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/handler/AbstractMessageHandlerTest.java b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/handler/AbstractMessageHandlerTest.java
index bdfcccfb1..3043e9d96 100644
--- a/opensaml-messaging-api/src/test/java/org/opensaml/messaging/handler/AbstractMessageHandlerTest.java
+++ b/opensaml-messaging-api/src/test/java/org/opensaml/messaging/handler/AbstractMessageHandlerTest.java
@@ -24,7 +24,7 @@ import org.opensaml.messaging.context.MessageContext;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.google.common.base.Predicates;
+import net.shibboleth.shared.logic.PredicateSupport;
/** Unit test for {@link AbstractMessageHandler}. */
public class AbstractMessageHandlerTest {
@@ -129,23 +129,33 @@ public class AbstractMessageHandlerTest {
}
}
+ /**
+ * Test handler with an always true activation condition.
+ *
+ * @throws Exception
+ */
@Test
public void testTrueActivationCondition() throws Exception {
final MockMutatingHandler handler = new MockMutatingHandler();
- handler.setActivationCondition(Predicates.alwaysTrue());
+ handler.setActivationCondition(PredicateSupport.alwaysTrue());
handler.initialize();
MessageContext messageContext = new MessageContext();
handler.invoke(messageContext);
Assert.assertTrue(messageContext.containsSubcontext(MockContext.class));
- Assert.assertEquals(messageContext.getSubcontext(MockContext.class).value, "hello");
+ Assert.assertEquals(messageContext.getOrCreateSubcontext(MockContext.class).value, "hello");
}
+ /**
+ * Test handler with an always false activation condition.
+ *
+ * @throws Exception
+ */
@Test
public void testFalseActivationCondition() throws Exception {
final MockMutatingHandler handler = new MockMutatingHandler();
- handler.setActivationCondition(Predicates.alwaysFalse());
+ handler.setActivationCondition(PredicateSupport.alwaysFalse());
handler.initialize();
MessageContext messageContext = new MessageContext();
@@ -211,12 +221,17 @@ public class AbstractMessageHandlerTest {
private class MockMutatingHandler extends AbstractMessageHandler {
- protected void doInvoke(MessageContext messageContext) throws MessageHandlerException {
- messageContext.getSubcontext(MockContext.class, true).value = "hello";
+ protected void doInvoke(@Nonnull MessageContext messageContext) throws MessageHandlerException {
+ messageContext.getOrCreateSubcontext(MockContext.class).value = "hello";
}
}
+ /**
+ * Mock context
+ */
public static class MockContext extends BaseContext {
+
+ /** Mock value. */
public String value;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list