[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