This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git
The following commit(s) were added to refs/heads/master by this push:
new d014d7ac28 FELIX-6770 : Support new methods in Jakarta Servlet 6.1
d014d7ac28 is described below
commit d014d7ac28a7e3331bd7e54028d6b4203502e73d
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Thu Apr 17 08:36:12 2025 +0200
FELIX-6770 : Support new methods in Jakarta Servlet 6.1
---
http/base/pom.xml | 2 +-
.../internal/dispatch/ServletRequestWrapper.java | 5 ++-
.../internal/dispatch/ServletResponseWrapper.java | 42 ++++++++++++++++++++++
http/itest/pom.xml | 2 +-
http/jetty/pom.xml | 2 +-
5 files changed, 47 insertions(+), 6 deletions(-)
diff --git a/http/base/pom.xml b/http/base/pom.xml
index bfb5c8a988..92a7bb7356 100644
--- a/http/base/pom.xml
+++ b/http/base/pom.xml
@@ -99,7 +99,7 @@
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
- <version>6.0.0</version>
+ <version>6.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git
a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestWrapper.java
b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestWrapper.java
index d47f305e69..4eaa39684b 100644
---
a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestWrapper.java
+++
b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestWrapper.java
@@ -64,7 +64,7 @@ class ServletRequestWrapper extends HttpServletRequestWrapper
private static final List<String> FORWARD_ATTRIBUTES =
Arrays.asList(FORWARD_CONTEXT_PATH,
FORWARD_MAPPING, FORWARD_PATH_INFO, FORWARD_QUERY_STRING,
FORWARD_REQUEST_URI, FORWARD_SERVLET_PATH);
- private static final List<String> INCLUDE_ATTRIBUTES =
Arrays.asList(INCLUDE_CONTEXT_PATH,
+ private static final List<String> INCLUDE_ATTRIBUTES =
Arrays.asList(INCLUDE_CONTEXT_PATH,
INCLUDE_MAPPING, INCLUDE_PATH_INFO, INCLUDE_QUERY_STRING,
INCLUDE_REQUEST_URI, INCLUDE_SERVLET_PATH);
private final DispatcherType type;
@@ -122,7 +122,7 @@ class ServletRequestWrapper extends
HttpServletRequestWrapper
else if (FORWARD_ATTRIBUTES.contains(name) ) {
return super.getAttribute(name);
}
- }
+ }
else if (isForwardingDispatcher() && !this.requestInfo.nameMatch)
{
// The jakarta.servlet.forward.* attributes refer to the
information of the *original* request,
@@ -382,7 +382,6 @@ class ServletRequestWrapper extends
HttpServletRequestWrapper
}
@Override
- @SuppressWarnings({ "unchecked", "rawtypes" })
public Collection<Part> getParts() throws IOException, ServletException {
throw new ServletException("No Multipart-Support available");
}
diff --git
a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletResponseWrapper.java
b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletResponseWrapper.java
index 21fe8c4159..f5d1ac53c2 100644
---
a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletResponseWrapper.java
+++
b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletResponseWrapper.java
@@ -150,4 +150,46 @@ final class ServletResponseWrapper extends
HttpServletResponseWrapper
super.sendError(code, message);
}
}
+
+
+ @Override
+ public void sendRedirect(String location, int sc) throws IOException {
+ this.sendRedirect(location, sc, true);
+ }
+
+ @Override
+ public void sendRedirect(String location, boolean clearBuffer) throws
IOException {
+ this.sendRedirect(location, SC_FOUND, clearBuffer);
+ }
+
+ @Override
+ public void sendRedirect(final String location, final int sc, final
boolean clearBuffer) throws IOException {
+ if (this.request.getServletContext().getMajorVersion() > 6
+ || (this.request.getServletContext().getMajorVersion() == 6 &&
this.request.getServletContext().getMinorVersion() >= 1)) {
+ // Servlet API 6.1
+ super.sendRedirect(location, sc, clearBuffer);
+ } else {
+ // Servlet API 6.0
+ if (sc == SC_FOUND && clearBuffer) {
+ this.sendRedirect(location);
+ } else {
+ if (isCommitted()) {
+ throw new IllegalStateException("Response already
committed");
+ }
+
+ // Ignore any call from an included servlet
+ if
(request.getAttribute(RequestDispatcher.INCLUDE_REQUEST_URI) != null) {
+ return;
+ }
+
+ if (clearBuffer) {
+ this.resetBuffer();
+ }
+ this.setStatus(sc);
+ this.setHeader("Location", location);
+
+ this.flushBuffer();
+ }
+ }
+ }
}
diff --git a/http/itest/pom.xml b/http/itest/pom.xml
index aa4b096fdf..23f6adf978 100644
--- a/http/itest/pom.xml
+++ b/http/itest/pom.xml
@@ -45,7 +45,7 @@
<properties>
<felix.java.version>17</felix.java.version>
<http.servlet.api.version>3.0.0</http.servlet.api.version>
- <http.jetty.version>1.0.27-SNAPSHOT</http.jetty.version>
+ <http.jetty.version>1.0.29-SNAPSHOT</http.jetty.version>
<http.jetty.id>org.apache.felix.http.jetty12</http.jetty.id>
</properties>
</profile>
diff --git a/http/jetty/pom.xml b/http/jetty/pom.xml
index f4a1d27e8a..65733fafd7 100644
--- a/http/jetty/pom.xml
+++ b/http/jetty/pom.xml
@@ -494,7 +494,7 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.http.base</artifactId>
- <version>5.1.11-SNAPSHOT</version>
+ <version>5.1.13-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>