[java-opensaml] 09/12: IDP-1793 Use Suppliers for HttpRequest/Response

Rod Widdowson rdw at steadingsoftware.com
Wed Aug 10 13:08:22 UTC 2022


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

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

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

commit cd905434f2d69d6453f8857b1a240817756beceb
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Aug 2 19:18:15 2022 +0100

    IDP-1793  Use Suppliers for HttpRequest/Response
    
    https://shibboleth.atlassian.net/browse/IDP-1793
    
    org.opensaml.saml.saml2.wssecurity.messaging.impl.WSSecuritySAML20AssertionTokenSecurityHandler
    
    Gains a setter/getter for a Supplier for the HttpServletRequest
    and loses the setter for the raw object.
---
 ...ecuritySAML20AssertionTokenSecurityHandler.java | 44 ++++++++++++----------
 ...itySAML20AssertionTokenSecurityHandlerTest.java | 10 +++--
 2 files changed, 31 insertions(+), 23 deletions(-)

diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java
index 19cc5a370..dc913c68b 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java
@@ -20,6 +20,7 @@ package org.opensaml.saml.saml2.wssecurity.messaging.impl;
 import java.util.Collections;
 import java.util.List;
 import java.util.function.Function;
+import java.util.function.Supplier;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -65,8 +66,8 @@ public class WSSecuritySAML20AssertionTokenSecurityHandler extends AbstractMessa
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(WSSecuritySAML20AssertionTokenSecurityHandler.class);
     
-    /** The HttpServletRequest being processed. */
-    @NonnullAfterInit private HttpServletRequest httpServletRequest;
+    /** Supplier for the Current HTTP request, if available. */
+    @Nullable private Supplier<HttpServletRequest> httpServletRequestSupplier;
     
     /** Flag which indicates whether a failure of Assertion validation should be considered fatal. */
     private boolean invalidFatal;
@@ -121,23 +122,35 @@ public class WSSecuritySAML20AssertionTokenSecurityHandler extends AbstractMessa
     }
 
     /**
-     * Get the HTTP servlet request being processed.
+     * Get the current HTTP request if available.
      * 
-     * @return the HTTP servlet request
+     * @return current HTTP request
      */
-    @NonnullAfterInit public HttpServletRequest getHttpServletRequest() {
-        return httpServletRequest;
+    @Nullable public HttpServletRequest getHttpServletRequest() {
+        if (httpServletRequestSupplier == null) {
+            return null;
+        }
+        return httpServletRequestSupplier.get();
     }
 
     /**
-     * Set the HTTP servlet request being processed.
-     * 
-     * @param request The HTTP servlet request
+     * Get the supplier for  HTTP request if available.
+     *
+     * @return current HTTP request
+     */
+    @Nullable public Supplier<HttpServletRequest> getHttpServletRequestSupplier() {
+        return httpServletRequestSupplier;
+    }
+
+    /**
+     * Set the current HTTP request Supplier.
+     *
+     * @param requestSupplier Supplier for the current HTTP request
      */
-    public void setHttpServletRequest(@Nonnull final HttpServletRequest request) {
+    public void setHttpServletRequestSupplier(@Nullable final Supplier<HttpServletRequest> requestSupplier) {
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        httpServletRequest = Constraint.isNotNull(request, "HttpServletRequest cannot be null");
+
+        httpServletRequestSupplier = requestSupplier;
     }
     
     /**
@@ -229,13 +242,6 @@ public class WSSecuritySAML20AssertionTokenSecurityHandler extends AbstractMessa
         }
     }
 
-    /** {@inheritDoc} */
-    protected void doDestroy() {
-        httpServletRequest = null;
-        
-        super.doDestroy();
-    }
-
 // Checkstyle: ReturnCount OFF
     /** {@inheritDoc} */
     protected void doInvoke(@Nonnull final MessageContext messageContext) throws MessageHandlerException {
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandlerTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandlerTest.java
index e6c78bea9..7afc6c410 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandlerTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandlerTest.java
@@ -21,12 +21,11 @@ import java.net.URISyntaxException;
 import java.security.KeyException;
 import java.security.cert.CertificateException;
 import java.util.function.Function;
+import java.util.function.Supplier;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-
-import net.shibboleth.utilities.java.support.collection.Pair;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import javax.servlet.http.HttpServletRequest;
 
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.XMLObject;
@@ -61,6 +60,9 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import net.shibboleth.utilities.java.support.collection.Pair;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+
 /**
  *
  */
@@ -83,7 +85,7 @@ public class WSSecuritySAML20AssertionTokenSecurityHandlerTest extends XMLObject
         httpServletRequest = buildHttpServletRequest();
         
         handler = new WSSecuritySAML20AssertionTokenSecurityHandler();
-        handler.setHttpServletRequest(httpServletRequest);
+        handler.setHttpServletRequestSupplier(new Supplier<>() {public HttpServletRequest get() {return httpServletRequest;}});
         // do init in the test methods
     }
     

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


More information about the commits mailing list