[java-opensaml] 04/12: IDP-1793 Use Suppliers for HttpRequest/Response
Rod Widdowson
rdw at steadingsoftware.com
Wed Aug 10 13:08:17 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-opensaml.
View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=b44591c2d773104ac245283a5c909cac71f7b950
commit b44591c2d773104ac245283a5c909cac71f7b950
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sat Jul 30 16:40:39 2022 +0100
IDP-1793 Use Suppliers for HttpRequest/Response
https://shibboleth.atlassian.net/browse/IDP-1793
org.opensaml.saml.common.binding.security.impl.ReceivedEndpointSecurityHandler
(an impl class) loses the setter for a HttpServletRequest and gains a setter for
a Supplier<HttpServletRequest>.
---
.../impl/ReceivedEndpointSecurityHandler.java | 49 ++++++++++++++--------
.../impl/ReceivedEndpointSecurityHandlerTest.java | 5 ++-
2 files changed, 36 insertions(+), 18 deletions(-)
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/security/impl/ReceivedEndpointSecurityHandler.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/security/impl/ReceivedEndpointSecurityHandler.java
index 461d4ab6c..d9356a726 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/security/impl/ReceivedEndpointSecurityHandler.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/security/impl/ReceivedEndpointSecurityHandler.java
@@ -17,9 +17,20 @@
package org.opensaml.saml.common.binding.security.impl;
+import java.util.function.Supplier;
+
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import javax.servlet.http.HttpServletRequest;
+import org.opensaml.messaging.MessageException;
+import org.opensaml.messaging.context.MessageContext;
+import org.opensaml.messaging.handler.AbstractMessageHandler;
+import org.opensaml.messaging.handler.MessageHandlerException;
+import org.opensaml.saml.common.binding.SAMLBindingSupport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
@@ -30,14 +41,6 @@ import net.shibboleth.utilities.java.support.net.URIException;
import net.shibboleth.utilities.java.support.net.impl.BasicURLComparator;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import org.opensaml.messaging.MessageException;
-import org.opensaml.messaging.context.MessageContext;
-import org.opensaml.messaging.handler.AbstractMessageHandler;
-import org.opensaml.messaging.handler.MessageHandlerException;
-import org.opensaml.saml.common.binding.SAMLBindingSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
/**
* Message handler which checks the validity of the SAML protocol message receiver
* endpoint against requirements indicated in the message.
@@ -51,7 +54,7 @@ public class ReceivedEndpointSecurityHandler extends AbstractMessageHandler {
@Nonnull private URIComparator uriComparator;
/** The HttpServletRequest being processed. */
- @NonnullAfterInit private HttpServletRequest httpServletRequest;
+ @NonnullAfterInit private Supplier<HttpServletRequest> httpServletRequestSupplier;
/** Constructor. */
public ReceivedEndpointSecurityHandler() {
@@ -85,18 +88,30 @@ public class ReceivedEndpointSecurityHandler extends AbstractMessageHandler {
* @return Returns the request.
*/
@NonnullAfterInit public HttpServletRequest getHttpServletRequest() {
- return httpServletRequest;
+ if (httpServletRequestSupplier == null) {
+ return null;
+ }
+ return httpServletRequestSupplier.get();
}
/**
- * Set the HTTP servlet request being processed.
- *
- * @param request The to set.
+ * Get the supplier for HTTP request if available.
+ *
+ * @return current HTTP request
*/
- public void setHttpServletRequest(@Nonnull final HttpServletRequest request) {
+ @Nullable public Supplier<HttpServletRequest> getHttpServletRequestSupplier() {
+ return httpServletRequestSupplier;
+ }
+
+ /**
+ * Set the current HTTP request Supplier.
+ *
+ * @param requestSupplier Supplier for the current HTTP request
+ */
+ public void setHttpServletRequestSupplier(@Nullable final Supplier<HttpServletRequest> requestSupplier) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
- httpServletRequest = Constraint.isNotNull(request, "HttpServletRequest cannot be null");
+
+ httpServletRequestSupplier = requestSupplier;
}
/** {@inheritDoc} */
@@ -106,7 +121,7 @@ public class ReceivedEndpointSecurityHandler extends AbstractMessageHandler {
if (uriComparator == null) {
throw new ComponentInitializationException("URIComparator cannot be null");
- } else if (httpServletRequest == null) {
+ } else if (getHttpServletRequest() == null) {
throw new ComponentInitializationException("HttpServletRequest cannot be null");
}
}
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/common/binding/security/impl/ReceivedEndpointSecurityHandlerTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/common/binding/security/impl/ReceivedEndpointSecurityHandlerTest.java
index 453c264da..ad97b8142 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/common/binding/security/impl/ReceivedEndpointSecurityHandlerTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/common/binding/security/impl/ReceivedEndpointSecurityHandlerTest.java
@@ -19,6 +19,9 @@ package org.opensaml.saml.common.binding.security.impl;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.function.Supplier;
+
+import javax.servlet.http.HttpServletRequest;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
@@ -65,7 +68,7 @@ public class ReceivedEndpointSecurityHandlerTest extends XMLObjectBaseTestCase {
intendedDestinationUri = SAMLBindingSupport.getIntendedDestinationEndpointURI(messageContext);
handler = new ReceivedEndpointSecurityHandler();
- handler.setHttpServletRequest(httpRequest);
+ handler.setHttpServletRequestSupplier(new Supplier<>() { public HttpServletRequest get() {return httpRequest;}});
handler.initialize();
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list