[java-opensaml] 01/02: IDP-1793 Use Suppliers for HttpRequest/Response
Rod Widdowson
rdw at steadingsoftware.com
Sat Jan 7 14:23:26 UTC 2023
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=acff2ed90fb1c11ceca0ac6dabf66e813c6008be
commit acff2ed90fb1c11ceca0ac6dabf66e813c6008be
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sat Jan 7 14:03:18 2023 +0000
IDP-1793 Use Suppliers for HttpRequest/Response
https://shibboleth.atlassian.net/browse/IDP-1793
Missed class: IPRangePredicate
---
.../opensaml/profile/logic/IPRangePredicate.java | 28 ++++++++++++----------
.../profile/logic/IPRangePredicateTest.java | 9 +++++--
2 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/opensaml-profile-api/src/main/java/org/opensaml/profile/logic/IPRangePredicate.java b/opensaml-profile-api/src/main/java/org/opensaml/profile/logic/IPRangePredicate.java
index 20c54708e..de6a08146 100644
--- a/opensaml-profile-api/src/main/java/org/opensaml/profile/logic/IPRangePredicate.java
+++ b/opensaml-profile-api/src/main/java/org/opensaml/profile/logic/IPRangePredicate.java
@@ -20,6 +20,8 @@ package org.opensaml.profile.logic;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -32,17 +34,18 @@ import jakarta.servlet.http.HttpServletRequest;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.net.IPRange;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.shared.primitive.NonnullSupplier;
import net.shibboleth.shared.servlet.HttpServletSupport;
-import java.util.function.Predicate;
-
/**
* A {@link Predicate} that checks if a request is from a set of one or more {@link IPRange}s.
*/
public class IPRangePredicate implements Predicate<BaseContext> {
/** Servlet request to evaluate. */
- @Nullable private HttpServletRequest httpRequest;
+ @Nullable private Supplier<HttpServletRequest> httpRequestSupplier;
/** IP ranges to match against. */
@Nonnull @NonnullElements private Collection<IPRange> addressRanges;
@@ -54,9 +57,9 @@ public class IPRangePredicate implements Predicate<BaseContext> {
/**
* Set the address ranges to check against.
- *
+ *
* @param ranges address ranges to check against
- *
+ *
* @since 3.3.0
*/
public void setRanges(@Nonnull @NonnullElements final Collection<IPRange> ranges) {
@@ -64,19 +67,20 @@ public class IPRangePredicate implements Predicate<BaseContext> {
addressRanges = List.copyOf(ranges);
}
-
+
/**
- * Set the servlet request to evaluate.
- *
- * @param request servlet request to evaluate
+ * Set the Supplier for the servlet request to evaluate.
+ *
+ * @param request servlet request supplier to use
*/
- public void setHttpServletRequest(@Nonnull final HttpServletRequest request) {
- httpRequest = Constraint.isNotNull(request, "HttpServletRequest cannot be null");
+ public void setHttpServletRequestSupplier(@Nonnull final Supplier<HttpServletRequest> supplier) {
+ httpRequestSupplier = Constraint.isNotNull(supplier, "HttpServletRequestSupplier cannot be null");
}
/** {@inheritDoc} */
public boolean test(@Nullable final BaseContext input) {
- final String address = httpRequest != null ? HttpServletSupport.getRemoteAddr(httpRequest) : null;
+ final HttpServletRequest request = httpRequestSupplier != null ? httpRequestSupplier.get() : null;
+ final String address = request != null ? HttpServletSupport.getRemoteAddr(request) : null;
if (address == null || !InetAddresses.isInetAddress(address)) {
return false;
}
diff --git a/opensaml-profile-api/src/test/java/org/opensaml/profile/logic/IPRangePredicateTest.java b/opensaml-profile-api/src/test/java/org/opensaml/profile/logic/IPRangePredicateTest.java
index 5feba47ed..d17dc6e9d 100644
--- a/opensaml-profile-api/src/test/java/org/opensaml/profile/logic/IPRangePredicateTest.java
+++ b/opensaml-profile-api/src/test/java/org/opensaml/profile/logic/IPRangePredicateTest.java
@@ -18,7 +18,9 @@
package org.opensaml.profile.logic;
import java.util.Map;
+import java.util.function.Supplier;
+import net.shibboleth.shared.primitive.NonnullSupplier;
import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
import net.shibboleth.shared.spring.util.ApplicationContextBuilder;
@@ -28,6 +30,8 @@ import org.springframework.mock.web.MockHttpServletRequest;
import org.testng.Assert;
import org.testng.annotations.Test;
+import jakarta.servlet.http.HttpServletRequest;
+
/**
* Unit test of {@link IPRangePredicate}.
*/
@@ -45,9 +49,10 @@ public class IPRangePredicateTest {
Assert.assertEquals(map.size(), 2);
final MockHttpServletRequest request = new MockHttpServletRequest();
+ final Supplier<HttpServletRequest> supplier = NonnullSupplier.of(request);
IPRangePredicate condition = map.get("three");
- condition.setHttpServletRequest(request);
+ condition.setHttpServletRequestSupplier(supplier);
request.setRemoteAddr("192.168.1.128");
Assert.assertTrue(condition.test(null));
@@ -59,7 +64,7 @@ public class IPRangePredicateTest {
Assert.assertFalse(condition.test(null));
condition = map.get("four");
- condition.setHttpServletRequest(request);
+ condition.setHttpServletRequestSupplier(supplier);
request.setRemoteAddr("2620:df:8000:ff14:0:0:0:2");
Assert.assertTrue(condition.test(null));
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list