[java-opensaml] branch main updated: IDP-1793 Use Suppliers for HttpRequest/Response
Rod Widdowson
rdw at steadingsoftware.com
Sun Aug 14 15:23:51 UTC 2022
This is an automated email from the git hooks/post-receive script.
rdw 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=a66d5f100d8e9a64522ec42e90754c1f891f8405
The following commit(s) were added to refs/heads/main by this push:
new a66d5f100 IDP-1793 Use Suppliers for HttpRequest/Response
a66d5f100 is described below
commit a66d5f100d8e9a64522ec42e90754c1f891f8405
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sun Aug 7 20:00:08 2022 +0100
IDP-1793 Use Suppliers for HttpRequest/Response
https://shibboleth.atlassian.net/browse/IDP-1793
org.opensaml.storage.impl.client.ClientStorageService
Gains a setter/getter for a Supplier for the HttpServletRequest
and loses the setter for the raw object.
---
.../storage/impl/client/ClientStorageService.java | 46 ++++++++++++----------
.../AbstractBaseClientStorageServiceTest.java | 5 +--
2 files changed, 28 insertions(+), 23 deletions(-)
diff --git a/opensaml-storage-impl/src/main/java/org/opensaml/storage/impl/client/ClientStorageService.java b/opensaml-storage-impl/src/main/java/org/opensaml/storage/impl/client/ClientStorageService.java
index ebf9ff103..47eed104d 100644
--- a/opensaml-storage-impl/src/main/java/org/opensaml/storage/impl/client/ClientStorageService.java
+++ b/opensaml-storage-impl/src/main/java/org/opensaml/storage/impl/client/ClientStorageService.java
@@ -26,6 +26,7 @@ import java.util.TimerTask;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.function.Supplier;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -97,8 +98,8 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
/** Sizes to report for context, key, and value limits when particular sources are used. */
@Nonnull @NotEmpty private Map<ClientStorageSource,Integer> capabilityMap;
- /** Servlet request. */
- @NonnullAfterInit private HttpServletRequest httpServletRequest;
+ /** Servlet request Supplier. */
+ @NonnullAfterInit private Supplier<HttpServletRequest> httpServletRequestSupplier;
/** Manages creation of cookies. */
@NonnullAfterInit private CookieManager cookieManager;
@@ -161,17 +162,24 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
public boolean isClustered() {
return true;
}
-
/**
- * Set the servlet request in which to manage per-request data.
+ * Set the Supplier for the servlet request in which to manage per-request data.
*
- * @param request servlet request in which to manage data
+ * @param requestSupplier supplier for the servlet request in which to manage data
*/
- public void setHttpServletRequest(@Nonnull final HttpServletRequest request) {
+ public void setHttpServletRequestSupplier(@Nonnull final Supplier<HttpServletRequest> requestSupplier) {
checkSetterPreconditions();
-
- httpServletRequest = Constraint.isNotNull(request, "HttpServletRequest cannot be null");
+ httpServletRequestSupplier = Constraint.isNotNull(requestSupplier, "HttpServletRequest cannot be null");
+ }
+
+ /**
+ * Get the current HTTP request if available.
+ *
+ * @return current HTTP request
+ */
+ @Nonnull private HttpServletRequest getHttpServletRequest() {
+ return httpServletRequestSupplier.get();
}
/**
@@ -190,7 +198,6 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
*/
public void setCookieManager(@Nonnull final CookieManager manager) {
checkSetterPreconditions();
-
cookieManager = Constraint.isNotNull(manager, "CookieManager cannot be null");
}
@@ -210,7 +217,6 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
*/
public void setStorageName(@Nonnull @NotEmpty final String name) {
checkSetterPreconditions();
-
storageName = Constraint.isNotNull(StringSupport.trimOrNull(name), "Storage name cannot be null or empty");
}
@@ -230,7 +236,6 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
*/
public void setDataSealer(@Nonnull final DataSealer sealer) {
checkSetterPreconditions();
-
dataSealer = Constraint.isNotNull(sealer, "DataSealer cannot be null");
}
@@ -299,8 +304,8 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
- if (httpServletRequest == null) {
- throw new ComponentInitializationException("HttpServletRequest must be set");
+ if (httpServletRequestSupplier == null) {
+ throw new ComponentInitializationException("HttpServletRequestSupplier must be set");
} else if (dataSealer == null || cookieManager == null) {
throw new ComponentInitializationException("DataSealer and CookieManager must be set");
}
@@ -315,7 +320,8 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
/** {@inheritDoc} */
@Override
@Nonnull protected ReadWriteLock getLock() {
- final HttpSession session = Constraint.isNotNull(httpServletRequest.getSession(), "HttpSession cannot be null");
+ final HttpSession session = Constraint.isNotNull(getHttpServletRequest().getSession(),
+ "HttpSession cannot be null");
// Uses a lock bound to the session, creating one if this is the first attempt.
@@ -340,7 +346,7 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
throws IOException {
try {
- final HttpSession session = Constraint.isNotNull(httpServletRequest.getSession(),
+ final HttpSession session = Constraint.isNotNull(getHttpServletRequest().getSession(),
"HttpSession cannot be null");
final Object store = Constraint.isNotNull(session.getAttribute(STORAGE_ATTRIBUTE + '.' + storageName),
"Storage object was not present in session");
@@ -354,7 +360,7 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
@Override
protected void setDirty() throws IOException {
try {
- final HttpSession session = Constraint.isNotNull(httpServletRequest.getSession(),
+ final HttpSession session = Constraint.isNotNull(getHttpServletRequest().getSession(),
"HttpSession cannot be null");
final Object store = session.getAttribute(STORAGE_ATTRIBUTE + '.' + storageName);
@@ -381,7 +387,7 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
try {
lock.lock();
- final HttpSession session = Constraint.isNotNull(httpServletRequest.getSession(),
+ final HttpSession session = Constraint.isNotNull(getHttpServletRequest().getSession(),
"HttpSession cannot be null");
final Object object = session.getAttribute(STORAGE_ATTRIBUTE + '.' + storageName);
if (object != null && object instanceof ClientStorageServiceStore) {
@@ -410,7 +416,7 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
try {
lock.lock();
- final HttpSession session = Constraint.isNotNull(httpServletRequest.getSession(),
+ final HttpSession session = Constraint.isNotNull(getHttpServletRequest().getSession(),
"HttpSession cannot be null");
return session.getAttribute(STORAGE_ATTRIBUTE + '.' + storageName) instanceof ClientStorageServiceStore;
} catch (final ConstraintViolationException e) {
@@ -476,7 +482,7 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
try {
lock.lock();
- final HttpSession session = Constraint.isNotNull(httpServletRequest.getSession(),
+ final HttpSession session = Constraint.isNotNull(getHttpServletRequest().getSession(),
"HttpSession cannot be null");
session.setAttribute(STORAGE_ATTRIBUTE + '.' + storageName, storageObject);
} finally {
@@ -500,7 +506,7 @@ public class ClientStorageService extends AbstractMapBackedStorageService implem
try {
lock.lock();
- final HttpSession session = Constraint.isNotNull(httpServletRequest.getSession(),
+ final HttpSession session = Constraint.isNotNull(getHttpServletRequest().getSession(),
"HttpSession cannot be null");
final Object object = session.getAttribute(STORAGE_ATTRIBUTE + '.' + storageName);
diff --git a/opensaml-storage-impl/src/test/java/org/opensaml/storage/impl/client/AbstractBaseClientStorageServiceTest.java b/opensaml-storage-impl/src/test/java/org/opensaml/storage/impl/client/AbstractBaseClientStorageServiceTest.java
index 5473ddea2..0fddd2998 100644
--- a/opensaml-storage-impl/src/test/java/org/opensaml/storage/impl/client/AbstractBaseClientStorageServiceTest.java
+++ b/opensaml-storage-impl/src/test/java/org/opensaml/storage/impl/client/AbstractBaseClientStorageServiceTest.java
@@ -22,7 +22,6 @@ import org.testng.Assert;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.net.CookieManager;
-import net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletRequestProxy;
import net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletRequestSupplier;
import net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletResponseSupplier;
import net.shibboleth.utilities.java.support.resource.Resource;
@@ -78,10 +77,10 @@ public class AbstractBaseClientStorageServiceTest {
ss.setDataSealer(sealer);
- ss.setHttpServletRequest(new ThreadLocalHttpServletRequestProxy());
+ ss.setHttpServletRequestSupplier(new ThreadLocalHttpServletRequestSupplier());
ss.initialize();
return ss;
}
-}
\ No newline at end of file
+}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list