[java-identity-provider] 13/19: IDP-1793 Use Suppliers for HttpRequest/Response
Rod Widdowson
rdw at steadingsoftware.com
Wed Aug 10 13:17:05 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-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=ad0ab72e941e1ee524c5f84163a3d89cb863af10
commit ad0ab72e941e1ee524c5f84163a3d89cb863af10
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 | 10 ++++++++--
.../shibboleth/idp/conf/session-manager-system.xml | 4 ++--
.../src/test/resources/test/test-cas-beans.xml | 4 ++--
.../session/impl/StorageBackedSessionManager.java | 23 ++++++++++++----------
.../StorageBackedIdPSessionSerializerTest.java | 10 ++++++++--
.../impl/testing/SessionManagerBaseTestCase.java | 7 +++++--
6 files changed, 38 insertions(+), 20 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 7880cadfd..e6f4f0060 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
@@ -31,6 +31,12 @@
<bean id="shibboleth.StorageService"
class="org.opensaml.storage.impl.MemoryStorageService" />
+ <bean id="shibboleth.HttpServletRequestSupplier"
+ class="net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletRequestProxy" />
+
+ <bean id="shibboleth.HttpServletResponseSupplier"
+ class="net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletResponseProxy" />
+
<bean id="shibboleth.HttpServletRequest"
class="net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletRequestProxy" />
@@ -51,8 +57,8 @@
class="net.shibboleth.idp.session.impl.StorageBackedSessionManager"
p:cookieManager-ref="shibboleth.CookieManager"
p:storageService-ref="shibboleth.StorageService"
- p:httpServletRequest-ref="shibboleth.HttpServletRequest"
- p:httpServletResponse-ref="shibboleth.HttpServletResponse"
+ p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
+ p:httpServletResponseSupplier-ref="shibboleth.HttpServletResponseSupplier"
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 c2150b286..e893be777 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,8 +63,8 @@
<bean id="shibboleth.SessionManager" class="net.shibboleth.idp.session.impl.StorageBackedSessionManager"
depends-on="shibboleth.OpenSAMLConfig"
- p:httpServletRequest-ref="shibboleth.HttpServletRequest"
- p:httpServletResponse-ref="shibboleth.HttpServletResponse"
+ p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
+ p:httpServletResponseSupplier-ref="shibboleth.HttpServletResponseSupplier"
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 822a42351..13dcea0f6 100644
--- a/idp-conf/src/test/resources/test/test-cas-beans.xml
+++ b/idp-conf/src/test/resources/test/test-cas-beans.xml
@@ -11,8 +11,8 @@
<bean id="shibboleth.SessionManager" class="net.shibboleth.idp.session.impl.StorageBackedSessionManager"
depends-on="shibboleth.OpenSAMLConfig"
- p:httpServletRequest-ref="shibboleth.HttpServletRequest"
- p:httpServletResponse-ref="shibboleth.HttpServletResponse"
+ p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
+ p:httpServletResponseSupplier-ref="shibboleth.HttpServletResponseSupplier"
p:authenticationFlowDescriptors="#{@'shibboleth.AuthenticationFlowDescriptorManager'.getComponents().?[id matches 'authn/(' + '%{idp.authn.flows:Password}'.trim() + ')']}"
p:cookieManager-ref="shibboleth.CookieManager"
p:storageService-ref="shibboleth.StorageService"
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 365920dd0..6025f3198 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;
@@ -121,10 +122,10 @@ 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;
/** Servlet response to write to. */
- @Nullable private HttpServletResponse httpResponse;
+ @Nullable private Supplier<HttpServletResponse> httpResponseSupplier;
/** Inactivity timeout for sessions. */
@Nonnull private Duration sessionTimeout;
@@ -184,25 +185,25 @@ 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) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- httpRequest = request;
+ httpRequestSupplier = requestSupplier;
}
/**
- * Set the servlet response to write to.
+ * Set the {@link Supplier} for the servlet response to write to.
*
- * @param response servlet response
+ * @param responseSupplier servlet response Supplier
*/
- public void setHttpServletResponse(@Nullable final HttpServletResponse response) {
+ public void setHttpServletResponseSupplier(@Nullable final Supplier<HttpServletResponse> responseSupplier) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- httpResponse = response;
+ httpResponseSupplier = responseSupplier;
}
/**
@@ -518,6 +519,7 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
throws SessionException {
ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+ final HttpServletRequest httpRequest = httpRequestSupplier == null?null:httpRequestSupplier.get();
if (httpRequest == null) {
throw new SessionException("No HttpServletRequest available, can't bind to client address");
}
@@ -586,6 +588,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) {
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 30e667515..f35c9ae24 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
@@ -22,6 +22,10 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.time.Instant;
+import java.util.function.Supplier;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.opensaml.storage.impl.MemoryStorageService;
import org.testng.Assert;
@@ -68,8 +72,10 @@ public class StorageBackedIdPSessionSerializerTest {
manager = new StorageBackedSessionManager();
manager.setStorageService(storageService);
manager.setIDGenerator(new SecureRandomIdentifierGenerationStrategy());
- manager.setHttpServletRequest(new ThreadLocalHttpServletRequestProxy());
- manager.setHttpServletResponse(new ThreadLocalHttpServletResponseProxy());
+ final HttpServletRequest requestProxy = new ThreadLocalHttpServletRequestProxy();
+ manager.setHttpServletRequestSupplier(new Supplier<>() {public HttpServletRequest get() {return requestProxy;}});
+ final HttpServletResponse responseProxy = new ThreadLocalHttpServletResponseProxy();
+ manager.setHttpServletResponseSupplier(new Supplier<>() {public HttpServletResponse get() {return responseProxy;}});
manager.setCookieManager(cookieManager);
manager.setId("Test Session Manager");
manager.setTrackSPSessions(true);
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 55f3bd6df..ff60f8f16 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
@@ -18,9 +18,12 @@
package net.shibboleth.idp.session.impl.testing;
import java.time.Duration;
+import java.util.function.Supplier;
import javax.annotation.Nonnull;
import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import net.shibboleth.idp.session.SessionException;
import net.shibboleth.idp.session.impl.StorageBackedSessionManager;
@@ -66,8 +69,8 @@ public class SessionManagerBaseTestCase extends OpenSAMLInitBaseTestCase {
sessionManager.setSessionTimeout(Duration.ofSeconds(15));
sessionManager.setStorageService(storageService);
sessionManager.setIDGenerator(new SecureRandomIdentifierGenerationStrategy());
- sessionManager.setHttpServletRequest(requestProxy);
- sessionManager.setHttpServletResponse(responseProxy);
+ sessionManager.setHttpServletRequestSupplier(new Supplier<>() {public HttpServletRequest get() {return requestProxy;}});
+ sessionManager.setHttpServletResponseSupplier(new Supplier<>() {public HttpServletResponse get() {return responseProxy;}});
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