[java-identity-provider] 02/02: IDP-1793 Use Suppliers for HttpRequest/Response

Rod Widdowson rdw at steadingsoftware.com
Sun Aug 14 14:58:32 UTC 2022


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

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

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=8a0d16a4145327e37a71fe2ff91d6e43148e506b

commit 8a0d16a4145327e37a71fe2ff91d6e43148e506b
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sat Aug 6 14:34:47 2022 +0100

    IDP-1793  Use Suppliers for HttpRequest/Response
    
    https://shibboleth.atlassian.net/browse/IDP-1793
    
    net.shibboleth.idp.session.impl.StorageBackedSessionManager
    looses setters for HttpServletRequest and Response and instead
    gains setters for Suppliers of same.
---
 .../src/test/resources/spring/test-flow-beans.xml   |  2 +-
 .../shibboleth/idp/conf/session-manager-system.xml  |  2 +-
 idp-conf/src/test/resources/test/test-cas-beans.xml |  4 ++--
 .../IdPInitiatedSSORequestMessageDecoderTest.java   | 11 +++++------
 .../IdPInitiatedSSORequestMessageDecoderTest.java   |  9 ++++-----
 .../session/impl/StorageBackedSessionManager.java   | 16 ++++++++++------
 .../idp/session/impl/DestroySessionsTest.java       | 21 ++++++++++-----------
 .../impl/StorageBackedIdPSessionSerializerTest.java |  5 +++--
 .../impl/testing/SessionManagerBaseTestCase.java    |  2 +-
 9 files changed, 37 insertions(+), 35 deletions(-)

diff --git a/idp-cas-impl/src/test/resources/spring/test-flow-beans.xml b/idp-cas-impl/src/test/resources/spring/test-flow-beans.xml
index e7d739731..32de351af 100644
--- a/idp-cas-impl/src/test/resources/spring/test-flow-beans.xml
+++ b/idp-cas-impl/src/test/resources/spring/test-flow-beans.xml
@@ -57,7 +57,7 @@
           class="net.shibboleth.idp.session.impl.StorageBackedSessionManager"
           p:cookieManager-ref="shibboleth.CookieManager"
           p:storageService-ref="shibboleth.StorageService"
-          p:httpServletRequest-ref="shibboleth.HttpServletRequest"
+          p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
           p:consistentAddress="true"
           p:sessionTimeout="PT60M"
           p:sessionSlop="0"
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/session-manager-system.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/session-manager-system.xml
index 5ce32c836..acc6e9c55 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/session-manager-system.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/session-manager-system.xml
@@ -63,7 +63,7 @@
     
     <bean id="shibboleth.SessionManager" class="net.shibboleth.idp.session.impl.StorageBackedSessionManager"
             depends-on="shibboleth.OpenSAMLConfig"
-            p:httpServletRequest-ref="shibboleth.HttpServletRequest"
+            p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
             p:authenticationFlowDescriptors="#{@'shibboleth.AuthenticationFlowDescriptorManager'.getComponents()}"
             p:cookieManager-ref="shibboleth.CookieManager"
             p:cookieName="%{idp.session.cookieName:shib_idp_session}"
diff --git a/idp-conf/src/test/resources/test/test-cas-beans.xml b/idp-conf/src/test/resources/test/test-cas-beans.xml
index 81b2320ef..7852f4538 100644
--- a/idp-conf/src/test/resources/test/test-cas-beans.xml
+++ b/idp-conf/src/test/resources/test/test-cas-beans.xml
@@ -11,7 +11,7 @@
 
     <bean id="shibboleth.SessionManager" class="net.shibboleth.idp.session.impl.StorageBackedSessionManager"
           depends-on="shibboleth.OpenSAMLConfig"
-          p:httpServletRequest-ref="shibboleth.HttpServletRequest"
+          p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
           p:authenticationFlowDescriptors="#{@'shibboleth.AuthenticationFlowDescriptorManager'.getComponents().?[id matches 'authn/(' + '%{idp.authn.flows:Password}'.trim() + ')']}"
           p:cookieManager-ref="shibboleth.CookieManager"
           p:storageService-ref="shibboleth.StorageService"
@@ -58,4 +58,4 @@
     <bean id="shibboleth.CASProxyValidateIdPSessionPredicate"
           class="net.shibboleth.idp.test.flows.cas.ToggleablePredicate" />
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
index 1e9965305..1be2c544c 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
@@ -17,16 +17,10 @@
 
 package net.shibboleth.idp.saml.saml1.profile.impl;
 
-import net.shibboleth.idp.saml.profile.impl.BaseIdPInitiatedSSORequestMessageDecoder;
-import net.shibboleth.idp.saml.profile.impl.IdPInitiatedSSORequest;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
 import java.util.function.Supplier;
 
-import javax.servlet.http.HttpServletRequest;
-
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.decoder.MessageDecodingException;
 import org.opensaml.saml.common.messaging.context.SAMLBindingContext;
@@ -37,6 +31,11 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import jakarta.servlet.http.HttpServletRequest;
+import net.shibboleth.idp.saml.profile.impl.BaseIdPInitiatedSSORequestMessageDecoder;
+import net.shibboleth.idp.saml.profile.impl.IdPInitiatedSSORequest;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+
 /**
  * Test the {@link IdPInitiatedSSORequestMessageDecoder}.
  */
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
index b469499ef..d2b9d391d 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
@@ -17,15 +17,10 @@
 
 package net.shibboleth.idp.saml.saml2.profile.impl;
 
-import net.shibboleth.idp.saml.profile.impl.BaseIdPInitiatedSSORequestMessageDecoder;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
 import java.util.function.Supplier;
 
-import javax.servlet.http.HttpServletRequest;
-
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.decoder.MessageDecodingException;
@@ -38,6 +33,10 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import jakarta.servlet.http.HttpServletRequest;
+import net.shibboleth.idp.saml.profile.impl.BaseIdPInitiatedSSORequestMessageDecoder;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+
 /**
  * Test the {@link IdPInitiatedSSORequestMessageDecoder}.
  */
diff --git a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java
index 698d38ce1..bd8effc94 100644
--- a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java
+++ b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Objects;
 import java.util.function.BiPredicate;
+import java.util.function.Supplier;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -119,7 +120,7 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
     @Nonnull private final Logger log = LoggerFactory.getLogger(StorageBackedSessionManager.class);
 
     /** Servlet request to read from. */
-    @Nullable private HttpServletRequest httpRequest;
+    @Nullable private Supplier<HttpServletRequest> httpRequestSupplier;
 
     /** Inactivity timeout for sessions. */
     @Nonnull private Duration sessionTimeout;
@@ -179,13 +180,14 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
     }
 
     /**
-     * Set the servlet request to read from.
+     * Set the {@link Supplier} for the servlet request to read from.
      * 
-     * @param request servlet request
+     * @param requestSupplier servlet request Supplier
      */
-    public void setHttpServletRequest(@Nullable final HttpServletRequest request) {
+    public void setHttpServletRequestSupplier(@Nullable final Supplier<HttpServletRequest> requestSupplier) {
         checkSetterPreconditions();
-        httpRequest = request;
+
+        httpRequestSupplier = requestSupplier;
     }
 
     /**
@@ -486,6 +488,7 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
             throws SessionException {
         checkComponentActive();
 
+        final HttpServletRequest httpRequest = httpRequestSupplier == null?null:httpRequestSupplier.get();
         if (httpRequest == null) {
             throw new SessionException("No HttpServletRequest available, can't bind to client address");
         }
@@ -554,6 +557,7 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
         if (criteria != null) {
             final HttpServletRequestCriterion requestCriterion = criteria.get(HttpServletRequestCriterion.class);
             if (requestCriterion != null) {
+                final HttpServletRequest httpRequest = httpRequestSupplier == null?null:httpRequestSupplier.get();
                 if (httpRequest != null) {
                     final Cookie[] cookies = httpRequest.getCookies();
                     if (cookies != null) {
@@ -894,4 +898,4 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
index 7265a9aee..aaf5421bc 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
@@ -20,8 +20,17 @@ package net.shibboleth.idp.session.impl;
 import java.time.Duration;
 import java.util.Collections;
 
-import jakarta.servlet.http.Cookie;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.storage.StorageSerializer;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+import org.springframework.webflow.execution.Event;
+import org.springframework.webflow.execution.RequestContext;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
+import jakarta.servlet.http.Cookie;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
@@ -40,16 +49,6 @@ import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseConte
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
 
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.storage.StorageSerializer;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.webflow.execution.Event;
-import org.springframework.webflow.execution.RequestContext;
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
 /** {@link DestroySessions} unit test. */
 public class DestroySessionsTest extends SessionManagerBaseTestCase {
     
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedIdPSessionSerializerTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedIdPSessionSerializerTest.java
index cffae85a5..7021ca643 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedIdPSessionSerializerTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedIdPSessionSerializerTest.java
@@ -76,7 +76,8 @@ public class StorageBackedIdPSessionSerializerTest {
         manager = new StorageBackedSessionManager();
         manager.setStorageService(storageService);
         manager.setIDGenerator(new SecureRandomIdentifierGenerationStrategy());
-        manager.setHttpServletRequest(new ThreadLocalHttpServletRequestProxy());
+        final HttpServletRequest requestProxy = new ThreadLocalHttpServletRequestProxy();
+        manager.setHttpServletRequestSupplier(new Supplier<>() {public HttpServletRequest get() {return requestProxy;}});
         manager.setCookieManager(cookieManager);
         manager.setId("Test Session Manager");
         manager.setTrackSPSessions(true);
@@ -174,4 +175,4 @@ public class StorageBackedIdPSessionSerializerTest {
             return Files.streamToString(stream);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
index 810545625..f0059565a 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
@@ -68,7 +68,7 @@ public class SessionManagerBaseTestCase extends OpenSAMLInitBaseTestCase {
         sessionManager.setSessionTimeout(Duration.ofSeconds(15));
         sessionManager.setStorageService(storageService);
         sessionManager.setIDGenerator(new SecureRandomIdentifierGenerationStrategy());
-        sessionManager.setHttpServletRequest(requestProxy);
+        sessionManager.setHttpServletRequestSupplier(new Supplier<>() {public HttpServletRequest get() {return requestProxy;}});
         sessionManager.setCookieManager(cookieManager);
         sessionManager.setId("Test Session Manager");
 

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


More information about the commits mailing list