[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