[java-shib-shared] branch main updated: IDP-1793 Use Suppliers for HttpRequest/Response

Rod Widdowson rdw at steadingsoftware.com
Sun Nov 20 14:48:53 UTC 2022


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

rdw pushed a commit to branch main
in repository java-shib-shared.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-shared.git;a=commit;h=76b77abe79608d836e7dc260d7c4d338d8ea8132

The following commit(s) were added to refs/heads/main by this push:
     new 76b77abe IDP-1793 Use Suppliers for HttpRequest/Response
76b77abe is described below

commit 76b77abe79608d836e7dc260d7c4d338d8ea8132
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sun Nov 20 13:51:37 2022 +0000

    IDP-1793 Use Suppliers for HttpRequest/Response
    
    https://shibboleth.atlassian.net/browse/IDP-1793
    
    Introduce a new NonNullSupplier interface and use to supply
    the HttpServletXyz objects.
---
 .../net/shibboleth/shared/net/CookieManager.java   | 11 +++++------
 .../ThreadLocalHttpServletRequestSupplier.java     | 13 +++++++-----
 .../ThreadLocalHttpServletResponseSupplier.java    | 13 +++++++-----
 .../shibboleth/shared/net/CookieManagerTest.java   | 19 +++++++++---------
 .../shared/primitive/NonNullSupplier.java          | 23 +++++++---------------
 5 files changed, 37 insertions(+), 42 deletions(-)

diff --git a/shib-networking/src/main/java/net/shibboleth/shared/net/CookieManager.java b/shib-networking/src/main/java/net/shibboleth/shared/net/CookieManager.java
index 0deb208f..8c6a2a2b 100644
--- a/shib-networking/src/main/java/net/shibboleth/shared/net/CookieManager.java
+++ b/shib-networking/src/main/java/net/shibboleth/shared/net/CookieManager.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.shared.net;
 
-import java.util.function.Supplier;
-
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
@@ -30,6 +28,7 @@ import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.AbstractInitializableComponent;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.NonNullSupplier;
 import net.shibboleth.shared.primitive.StringSupport;
 
 /**
@@ -48,10 +47,10 @@ public final class CookieManager extends AbstractInitializableComponent {
     @Nullable private String cookieDomain;
     
     /** Supplier for the servlet request to read from. */
-    @NonnullAfterInit private Supplier<HttpServletRequest> httpRequestSupplier;
+    @NonnullAfterInit private NonNullSupplier<HttpServletRequest> httpRequestSupplier;
 
     /** Supplier for the servlet response to write to. */
-    @NonnullAfterInit private Supplier<HttpServletResponse> httpResponseSupplier;
+    @NonnullAfterInit private NonNullSupplier<HttpServletResponse> httpResponseSupplier;
     
     /** Is cookie secure? */
     private boolean secure;
@@ -98,7 +97,7 @@ public final class CookieManager extends AbstractInitializableComponent {
      *
      * @param requestSupplier servlet request supplier
      */
-    public void setHttpServletRequestSupplier(@Nonnull final Supplier<HttpServletRequest> requestSupplier) {
+    public void setHttpServletRequestSupplier(@Nonnull final NonNullSupplier<HttpServletRequest> requestSupplier) {
         checkSetterPreconditions();
         httpRequestSupplier = Constraint.isNotNull(requestSupplier, "HttpServletRequest cannot be null");
     }
@@ -120,7 +119,7 @@ public final class CookieManager extends AbstractInitializableComponent {
      *
      * @param responseSupplier servlet response
      */
-    public void setHttpServletResponseSupplier(@Nonnull final Supplier<HttpServletResponse> responseSupplier) {
+    public void setHttpServletResponseSupplier(@Nonnull final NonNullSupplier<HttpServletResponse> responseSupplier) {
         checkSetterPreconditions();
         httpResponseSupplier = Constraint.isNotNull(responseSupplier, "HttpServletResponse cannot be null");
     }
diff --git a/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletRequestSupplier.java b/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletRequestSupplier.java
index 6a5a2ebb..edef6f30 100644
--- a/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletRequestSupplier.java
+++ b/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletRequestSupplier.java
@@ -17,16 +17,17 @@
 
 package net.shibboleth.shared.servlet.impl;
 
-import java.util.function.Supplier;
+import javax.annotation.Nonnull;
 
 import jakarta.servlet.http.HttpServletRequest;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.NonNullSupplier;
 
 /**
- * An implementation of {@link Supplier} which looks up the current thread-local
+ * An implementation of {@link NonNullSupplier} which looks up the current thread-local
  * servlet request obtained from {@link HttpServletRequestResponseContext}.
  */
-public class ThreadLocalHttpServletRequestSupplier implements Supplier<HttpServletRequest> {
+public class ThreadLocalHttpServletRequestSupplier implements NonNullSupplier<HttpServletRequest> {
 
     /**
      * {@inheritDoc}
@@ -34,8 +35,10 @@ public class ThreadLocalHttpServletRequestSupplier implements Supplier<HttpServl
      *
      * @return the current request
      */
-    public HttpServletRequest get() {
-        return Constraint.isNotNull(HttpServletRequestResponseContext.getRequest(),
+    @Nonnull public HttpServletRequest get() {
+        final HttpServletRequest req = Constraint.isNotNull(HttpServletRequestResponseContext.getRequest(),
                 "Current HttpServletRequest has not been loaded via HttpServletRequestResponseContext");
+        assert(req != null);
+        return req;
     }
 }
diff --git a/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletResponseSupplier.java b/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletResponseSupplier.java
index 2d6f4d75..63e07e98 100644
--- a/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletResponseSupplier.java
+++ b/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletResponseSupplier.java
@@ -17,16 +17,17 @@
 
 package net.shibboleth.shared.servlet.impl;
 
-import java.util.function.Supplier;
+import javax.annotation.Nonnull;
 
 import jakarta.servlet.http.HttpServletResponse;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.NonNullSupplier;
 
 /**
- * An implementation of {@link Supplier} which looks up the current thread-local
+ * An implementation of {@link NonNullSupplier} which looks up the current thread-local
  * servlet response obtained from {@link HttpServletRequestResponseContext}.
  */
-public class ThreadLocalHttpServletResponseSupplier implements Supplier<HttpServletResponse> {
+public class ThreadLocalHttpServletResponseSupplier implements NonNullSupplier<HttpServletResponse> {
 
     /**
      * {@inheritDoc}
@@ -34,8 +35,10 @@ public class ThreadLocalHttpServletResponseSupplier implements Supplier<HttpServ
      *
      * @return the current response
      */
-    public HttpServletResponse get() {
-        return Constraint.isNotNull(HttpServletRequestResponseContext.getResponse(),
+    @Nonnull public HttpServletResponse get() {
+        final HttpServletResponse response = Constraint.isNotNull(HttpServletRequestResponseContext.getResponse(),
                 "Current HttpServletResponse has not been loaded via HttpServletRequestResponseContext");
+        assert(response!=null);
+        return response;
     }
 }
diff --git a/shib-networking/src/test/java/net/shibboleth/shared/net/CookieManagerTest.java b/shib-networking/src/test/java/net/shibboleth/shared/net/CookieManagerTest.java
index 2002cd51..17692765 100644
--- a/shib-networking/src/test/java/net/shibboleth/shared/net/CookieManagerTest.java
+++ b/shib-networking/src/test/java/net/shibboleth/shared/net/CookieManagerTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.shared.net;
 
-import java.util.function.Supplier;
-
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 import org.testng.Assert;
@@ -28,6 +26,7 @@ import jakarta.servlet.http.Cookie;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.NonNullSupplier;
 
 /** {@link CookieManager} unit test. */
 @SuppressWarnings("javadoc")
@@ -48,8 +47,8 @@ public class CookieManagerTest {
         MockHttpServletResponse response = new MockHttpServletResponse();
         
         CookieManager cm = new CookieManager();
-        cm.setHttpServletRequestSupplier(new Supplier<>() { public HttpServletRequest get() {return request;}});
-        cm.setHttpServletResponseSupplier(new Supplier<>() { public HttpServletResponse get() {return response;}});
+        cm.setHttpServletRequestSupplier(new NonNullSupplier<>() { public HttpServletRequest get() {return request;}});
+        cm.setHttpServletResponseSupplier(new NonNullSupplier<>() { public HttpServletResponse get() {return response;}});
         cm.initialize();
     }
 
@@ -58,8 +57,8 @@ public class CookieManagerTest {
         MockHttpServletResponse response = new MockHttpServletResponse();
         
         CookieManager cm = new CookieManager();
-        cm.setHttpServletRequestSupplier(new Supplier<>() { public HttpServletRequest get() {return request;}});
-        cm.setHttpServletResponseSupplier(new Supplier<>() { public HttpServletResponse get() {return response;}});
+        cm.setHttpServletRequestSupplier(new NonNullSupplier<>() { public HttpServletRequest get() {return request;}});
+        cm.setHttpServletResponseSupplier(new NonNullSupplier<>() { public HttpServletResponse get() {return response;}});
         cm.setCookiePath("/idp");
         cm.initialize();
 
@@ -80,8 +79,8 @@ public class CookieManagerTest {
         MockHttpServletResponse response = new MockHttpServletResponse();
         
         CookieManager cm = new CookieManager();
-        cm.setHttpServletRequestSupplier(new Supplier<>() { public HttpServletRequest get() {return request;}});
-        cm.setHttpServletResponseSupplier(new Supplier<>() { public HttpServletResponse get() {return response;}});
+        cm.setHttpServletRequestSupplier(new NonNullSupplier<>() { public HttpServletRequest get() {return request;}});
+        cm.setHttpServletResponseSupplier(new NonNullSupplier<>() { public HttpServletResponse get() {return response;}});
         cm.initialize();
         
         cm.addCookie("foo", "bar");
@@ -102,8 +101,8 @@ public class CookieManagerTest {
         MockHttpServletResponse response = new MockHttpServletResponse();
         
         CookieManager cm = new CookieManager();
-        cm.setHttpServletRequestSupplier(new Supplier<>() { public HttpServletRequest get() {return request;}});
-        cm.setHttpServletResponseSupplier(new Supplier<>() { public HttpServletResponse get() {return response;}});
+        cm.setHttpServletRequestSupplier(new NonNullSupplier<>() { public HttpServletRequest get() {return request;}});
+        cm.setHttpServletResponseSupplier(new NonNullSupplier<>() { public HttpServletResponse get() {return response;}});
         cm.initialize();
         
         cm.unsetCookie("foo");
diff --git a/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletRequestSupplier.java b/shib-support/src/main/java/net/shibboleth/shared/primitive/NonNullSupplier.java
similarity index 53%
copy from shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletRequestSupplier.java
copy to shib-support/src/main/java/net/shibboleth/shared/primitive/NonNullSupplier.java
index 6a5a2ebb..8d140f4b 100644
--- a/shib-networking/src/main/java/net/shibboleth/shared/servlet/impl/ThreadLocalHttpServletRequestSupplier.java
+++ b/shib-support/src/main/java/net/shibboleth/shared/primitive/NonNullSupplier.java
@@ -15,27 +15,18 @@
  * limitations under the License.
  */
 
-package net.shibboleth.shared.servlet.impl;
+package net.shibboleth.shared.primitive;
 
 import java.util.function.Supplier;
 
-import jakarta.servlet.http.HttpServletRequest;
-import net.shibboleth.shared.logic.Constraint;
+import javax.annotation.Nonnull;
 
 /**
- * An implementation of {@link Supplier} which looks up the current thread-local
- * servlet request obtained from {@link HttpServletRequestResponseContext}.
+ * Implementation of {@link Supplier} that carries the nonnull annotation
+ * on the {@link #get()} method.
  */
-public class ThreadLocalHttpServletRequestSupplier implements Supplier<HttpServletRequest> {
+public interface NonNullSupplier<T> extends Supplier<T> {
 
-    /**
-     * {@inheritDoc}
-     * Get the current HttpServletRequest from ThreadLocal storage.
-     *
-     * @return the current request
-     */
-    public HttpServletRequest get() {
-        return Constraint.isNotNull(HttpServletRequestResponseContext.getRequest(),
-                "Current HttpServletRequest has not been loaded via HttpServletRequestResponseContext");
-    }
+    /** {@inheritDoc} */
+    @Override @Nonnull T get();
 }

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


More information about the commits mailing list