[java-opensaml COMMIT] in /trunk: opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/Abstrac...

noreply at shibboleth.net noreply at shibboleth.net
Fri Mar 1 18:13:01 EST 2013


Author: putmanb
Date: Fri Mar  1 18:13:00 2013
New Revision: 3242

URL: http://svn.shibboleth.net/view/java-opensaml?rev=3242&view=rev
Log:
For lifecycle reasons, we can't store the HttpServletRequest in a subcontext.  The message context tree may live beyond the initial request/response exchange (e.g. Spring Webflow in the IdP).
Instead Handlers should use a lookup strategy to obtain it.

Added:
    trunk/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/
    trunk/opensaml-messaging-api/src/test/java/org/opensaml/messaging/context/navigate/MockHttpServletRequestLookupStrategy.java   (with props)
Modified:
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/AbstractHttpServletRequestMessageDecoder.java
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/HttpServletRequestContext.java
    trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/binding/SAMLBindingSupport.java
    trunk/opensaml-saml-impl/pom.xml
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/security/ReceivedEndpointSecurityHandler.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/common/binding/security/ReceivedEndpointSecurityHandlerTest.java

Modified: trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/AbstractHttpServletRequestMessageDecoder.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/AbstractHttpServletRequestMessageDecoder.java?rev=3242&r1=3241&r2=3242&view=diff
==============================================================================
--- trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/AbstractHttpServletRequestMessageDecoder.java (original)
+++ trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/AbstractHttpServletRequestMessageDecoder.java Fri Mar  1 18:13:00 2013
@@ -53,7 +53,6 @@
     /** {@inheritDoc} */
     public void decode() throws MessageDecodingException {
         super.decode();
-        getMessageContext().getSubcontext(HttpServletRequestContext.class, true).setHttpServletRequest(getHttpServletRequest());
     }
 
     /** {@inheritDoc} */

Modified: trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/binding/SAMLBindingSupport.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/binding/SAMLBindingSupport.java?rev=3242&r1=3241&r2=3242&view=diff
==============================================================================
--- trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/binding/SAMLBindingSupport.java (original)
+++ trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/binding/SAMLBindingSupport.java Fri Mar  1 18:13:00 2013
@@ -22,13 +22,14 @@
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
+import javax.servlet.http.HttpServletRequest;
 
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 import org.opensaml.messaging.MessageException;
 import org.opensaml.messaging.context.MessageContext;
-import org.opensaml.messaging.decoder.servlet.HttpServletRequestContext;
+import org.opensaml.messaging.context.navigate.ContextDataLookupFunction;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.SignableSAMLObject;
 import org.opensaml.saml.common.messaging.context.SamlBindingContext;
@@ -234,18 +235,20 @@
      * Extract the transport endpoint URI at which this message was received.
      * 
      * @param messageContext current message context
+     * @param requestLookupStrategy the strategy used to look up the HttpServletRequest
      * @return string representing the transport endpoint URI at which the current message was received
-     * @throws MessageException thrown if the endpoint can not be extracted from the message
+     * @throws MessageException thrown if the endpoint can not be looked up from the message
      *                              context and converted to a string representation
      */
-    public static String getActualReceiverEndpointUri(@Nonnull final MessageContext<SAMLObject> messageContext) 
-            throws MessageException {
-        HttpServletRequestContext requestContext = messageContext.getSubcontext(HttpServletRequestContext.class, false);
-        if (requestContext == null || requestContext.getHttpServletRequest() == null) {
-            throw new MessageException("HttpServletRequest could not be obtained from message context");
-        }
-        
-        return requestContext.getHttpServletRequest().getRequestURL().toString();
+    public static String getActualReceiverEndpointUri(@Nonnull final MessageContext<SAMLObject> messageContext, 
+            @Nonnull final ContextDataLookupFunction<MessageContext<?>, HttpServletRequest> requestLookupStrategy) 
+                    throws MessageException {

[... 130 lines stripped ...]


More information about the commits mailing list