predicate instead of boolean
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java
index 9f4a566..fd10636 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java
@@ -25,6 +25,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.function.Predicate;
import jakarta.ws.rs.core.Configuration;
import jakarta.ws.rs.core.Cookie;
@@ -200,15 +201,14 @@
* class or using its {@code toString} method if a header delegate is not available.
*
* @param name the message header.
- * @param value the message header value.
- * @param ignoreCase whether to ignore upper/lower case.
+ * @param valuePredicate value must fulfil this predicate.
* @return {@code true} if and only if a header with the provided name exists having either the exact value or whose
* comma-separated header string contains value as a whole word.
* @see #getHeaders()
* @see #getHeaderString(String)
* @since 4.0
*/
- public boolean containsHeaderString(String name, String value, boolean ignoreCase);
+ public boolean containsHeaderString(String name, Predicate<String> valuePredicate);
/**
* Get message date.
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java
index f9f2549..6482152 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java
@@ -22,6 +22,7 @@
import java.util.Locale;
import java.util.Map;
import java.util.Set;
+import java.util.function.Predicate;
import jakarta.ws.rs.core.EntityTag;
import jakarta.ws.rs.core.Link;
@@ -92,15 +93,14 @@
* Checks whether a header with a specific name and value (or item of the comma-separated value list) exists.
*
* @param name the message header.
- * @param value the message header value.
- * @param ignoreCase whether to ignore upper/lower case.
+ * @param valuePredicate value must fulfil this predicate.
* @return {@code true} if and only if a header with the provided name exists having either the exact value or whose
* comma-separated header string contains value as a whole word.
* @see #getHeaders()
* @see #getHeaderString(String)
* @since 4.0
*/
- public boolean containsHeaderString(String name, String value, boolean ignoreCase);
+ public boolean containsHeaderString(String name, Predicate<String> valuePredicate);
/**
* Get the allowed HTTP methods from the Allow HTTP header.
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerRequestContext.java b/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerRequestContext.java
index c1efb79..36056f3 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerRequestContext.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerRequestContext.java
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.function.Predicate;
import jakarta.ws.rs.core.Cookie;
import jakarta.ws.rs.core.MediaType;
@@ -232,15 +233,14 @@
* Checks whether a header with a specific name and value (or item of the comma-separated value list) exists.
*
* @param name the message header.
- * @param value the message header value.
- * @param ignoreCase whether to ignore upper/lower case.
+ * @param valuePredicate value must fulfil this predicate.
* @return {@code true} if and only if a header with the provided name exists having either the exact value or whose
* comma-separated header string contains value as a whole word.
* @see #getHeaders()
* @see #getHeaderString(String)
* @since 4.0
*/
- public boolean containsHeaderString(String name, String value, boolean ignoreCase);
+ public boolean containsHeaderString(String name, Predicate<String> valuePredicate);
/**
* Get message date.
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerResponseContext.java b/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerResponseContext.java
index 40f3e29..186ef4e 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerResponseContext.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/container/ContainerResponseContext.java
@@ -24,6 +24,7 @@
import java.util.Locale;
import java.util.Map;
import java.util.Set;
+import java.util.function.Predicate;
import jakarta.ws.rs.core.EntityTag;
import jakarta.ws.rs.core.Link;
@@ -122,15 +123,14 @@
* class or using its {@code toString} method if a header delegate is not available.
*
* @param name the message header.
- * @param value the message header value.
- * @param ignoreCase whether to ignore upper/lower case.
+ * @param valuePredicate value must fulfil this predicate.
* @return {@code true} if and only if a header with the provided name exists having either the exact value or whose
* comma-separated header string contains value as a whole word.
* @see #getHeaders()
* @see #getHeaderString(String)
* @since 4.0
*/
- public boolean containsHeaderString(String name, String value, boolean ignoreCase);
+ public boolean containsHeaderString(String name, Predicate<String> valuePredicate);
/**
* Get the allowed HTTP methods from the Allow HTTP header.
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/core/HttpHeaders.java b/jaxrs-api/src/main/java/jakarta/ws/rs/core/HttpHeaders.java
index 7233a1c..8a4c0cc 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/core/HttpHeaders.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/core/HttpHeaders.java
@@ -20,6 +20,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.function.Predicate;
/**
* An injectable interface that provides access to HTTP header information. All methods throw
@@ -68,15 +69,14 @@
* class or using its {@code toString} method if a header delegate is not available.
*
* @param name the message header.
- * @param value the message header value.
- * @param ignoreCase whether to ignore upper/lower case.
+ * @param valuePredicate value must fulfil this predicate.
* @return {@code true} if and only if a header with the provided name exists having either the exact value or whose
* comma-separated header string contains value as a whole word.
* @see #getRequestHeaders()
* @see #getHeaderString(String)
* @since 4.0
*/
- public boolean containsHeaderString(String name, String value, boolean ignoreCase);
+ public boolean containsHeaderString(String name, Predicate<String> valuePredicate);
/**
* Get the values of HTTP request headers. The returned Map is case-insensitive wrt. keys and is read-only. The method