This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new a590bb55e10 CAMEL-20830: Upgrade jetty. Remove 
ServletRequest/ServletResponse object in Camel headers as they should only be 
accessible via the HttpMessage class. (#14518)
a590bb55e10 is described below

commit a590bb55e1086acef0266111ba003c68d591069f
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Jun 14 08:38:48 2024 +0200

    CAMEL-20830: Upgrade jetty. Remove ServletRequest/ServletResponse object in 
Camel headers as they should only be accessible via the HttpMessage class. 
(#14518)
---
 .../cxf/jaxrs/CxfRsSpringConsumerTest.java         |  1 -
 .../message/DefaultCxfMessageMapperTest.java       |  7 +++--
 components/camel-cxf/camel-cxf-transport/pom.xml   |  9 +++---
 .../transport/message/DefaultCxfMessageMapper.java | 14 ++++-----
 .../message/DefaultCxfMessageMapperTest.java       |  7 +++--
 .../apache/camel/http/common/HttpConverter.java    | 12 ++++----
 .../org/apache/camel/http/common/HttpMessage.java  |  3 --
 .../component/jetty/JettyConverterLoader.java      |  5 ----
 .../camel/component/jetty/JettyConverter.java      |  9 +++---
 .../camel/component/jetty/HttpConverterTest.java   | 33 ++--------------------
 .../component/jetty/HttpGZipEncodingTest.java      |  4 +--
 .../camel/component/jetty/HttpHeaderTest.java      |  4 +--
 .../component/servlet/HttpClientRouteTest.java     |  6 ++--
 .../camel/component/undertow/ExchangeHeaders.java  |  2 --
 .../src/main/java/org/apache/camel/Exchange.java   |  2 ++
 .../ROOT/pages/camel-4x-upgrade-guide-4_7.adoc     | 21 ++++++++++++++
 parent/pom.xml                                     |  2 +-
 17 files changed, 64 insertions(+), 77 deletions(-)

diff --git 
a/components/camel-cxf/camel-cxf-spring-rest/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsSpringConsumerTest.java
 
b/components/camel-cxf/camel-cxf-spring-rest/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsSpringConsumerTest.java
index edef5481aec..e7a7fa11817 100644
--- 
a/components/camel-cxf/camel-cxf-spring-rest/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsSpringConsumerTest.java
+++ 
b/components/camel-cxf/camel-cxf-spring-rest/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsSpringConsumerTest.java
@@ -82,7 +82,6 @@ public class CxfRsSpringConsumerTest extends 
CamelSpringTestSupport {
 
     @Test
     public void testInvokeCxfRsConsumer() throws Exception {
-        System.out.println("port1 is " + port1);
         String address = "http://localhost:"; + port1 + 
"/CxfRsSpringConsumerInvokeService/customerservice/customers/123";
         WebClient wc = WebClient.create(address);
         Customer c = wc.accept("application/json").get(Customer.class);
diff --git 
a/components/camel-cxf/camel-cxf-spring-transport/src/test/java/org/apache/camel/component/cxf/common/message/DefaultCxfMessageMapperTest.java
 
b/components/camel-cxf/camel-cxf-spring-transport/src/test/java/org/apache/camel/component/cxf/common/message/DefaultCxfMessageMapperTest.java
index e63bdaa5598..1be26e77244 100644
--- 
a/components/camel-cxf/camel-cxf-spring-transport/src/test/java/org/apache/camel/component/cxf/common/message/DefaultCxfMessageMapperTest.java
+++ 
b/components/camel-cxf/camel-cxf-spring-transport/src/test/java/org/apache/camel/component/cxf/common/message/DefaultCxfMessageMapperTest.java
@@ -25,6 +25,7 @@ import jakarta.servlet.http.HttpServletRequest;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.cxf.transport.CamelTransportConstants;
 import 
org.apache.camel.component.cxf.transport.message.DefaultCxfMessageMapper;
+import org.apache.camel.http.common.HttpMessage;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.cxf.common.security.SimplePrincipal;
 import org.apache.cxf.message.ExchangeImpl;
@@ -77,6 +78,7 @@ public class DefaultCxfMessageMapperTest {
 
     private Exchange setupCamelExchange(String requestURI, String requestPath, 
HttpServletRequest request) {
         org.apache.camel.Message camelMessage = 
mock(org.apache.camel.Message.class);
+        org.apache.camel.http.common.HttpMessage camelHttpMessage = 
mock(org.apache.camel.http.common.HttpMessage.class);
         Exchange camelExchange = mock(Exchange.class);
         when(camelExchange.getProperty(CamelTransportConstants.CXF_EXCHANGE,
                 org.apache.cxf.message.Exchange.class)).thenReturn(new 
ExchangeImpl());
@@ -92,8 +94,9 @@ public class DefaultCxfMessageMapperTest {
         when(camelMessage.getHeader(Exchange.HTTP_BASE_URI, 
String.class)).thenReturn(requestPath);
         when(camelMessage.getHeader(Exchange.HTTP_METHOD, 
String.class)).thenReturn("GET");
         when(camelMessage.getHeader(Exchange.HTTP_QUERY, 
String.class)).thenReturn("");
-        
when(camelMessage.getHeader(Exchange.HTTP_SERVLET_REQUEST)).thenReturn(request);
-        
when(camelMessage.getHeader(Exchange.HTTP_SERVLET_RESPONSE)).thenReturn(null);
+        
when(camelExchange.getIn(HttpMessage.class)).thenReturn(camelHttpMessage);
+        when(camelHttpMessage.getRequest()).thenReturn(request);
+        when(camelHttpMessage.getResponse()).thenReturn(null);
         when(camelMessage.getBody(InputStream.class)).thenReturn(new 
ByteArrayInputStream("".getBytes()));
         return camelExchange;
     }
diff --git a/components/camel-cxf/camel-cxf-transport/pom.xml 
b/components/camel-cxf/camel-cxf-transport/pom.xml
index 71dd71939fe..d4cd0f2ef6b 100644
--- a/components/camel-cxf/camel-cxf-transport/pom.xml
+++ b/components/camel-cxf/camel-cxf-transport/pom.xml
@@ -36,9 +36,6 @@
         <firstVersion>2.8.0</firstVersion>
         <label>soap,webservice</label>
         <title>CXF Transport</title>
-
-
-
     </properties>
 
     <dependencies>
@@ -46,7 +43,10 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-http-common</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.camel</groupId>
@@ -59,7 +59,6 @@
             <version>${cxf-version}</version>
         </dependency>
 
-
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
diff --git 
a/components/camel-cxf/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/message/DefaultCxfMessageMapper.java
 
b/components/camel-cxf/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/message/DefaultCxfMessageMapper.java
index 916c46260da..6395a90a9e0 100644
--- 
a/components/camel-cxf/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/message/DefaultCxfMessageMapper.java
+++ 
b/components/camel-cxf/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/message/DefaultCxfMessageMapper.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import jakarta.servlet.http.HttpServletRequest;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.http.common.HttpMessage;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.message.Message;
@@ -66,16 +67,13 @@ public class DefaultCxfMessageMapper implements 
CxfMessageMapper {
         answer.put(org.apache.cxf.message.Message.ENCODING, enc);
         answer.put(org.apache.cxf.message.Message.QUERY_STRING, queryString);
 
-        HttpServletRequest request = (HttpServletRequest) 
camelMessage.getHeader(Exchange.HTTP_SERVLET_REQUEST);
-        answer.put(CXF_HTTP_REQUEST, request);
-
-        if (request != null) {
-            setSecurityContext(answer, request);
+        HttpMessage hm = camelExchange.getIn(HttpMessage.class);
+        if (hm != null) {
+            answer.put(CXF_HTTP_REQUEST, hm.getRequest());
+            answer.put(CXF_HTTP_RESPONSE, hm.getResponse());
+            setSecurityContext(answer, hm.getRequest());
         }
 
-        Object response = 
camelMessage.getHeader(Exchange.HTTP_SERVLET_RESPONSE);
-        answer.put(CXF_HTTP_RESPONSE, response);
-
         LOG.trace(
                 "Processing {}, requestContentType = {}, acceptContentTypes = 
{}, encoding = {}, path = {}, basePath = {}, verb = {}",
                 camelExchange, requestContentType, acceptContentTypes, enc, 
path, basePath, verb);
diff --git 
a/components/camel-cxf/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/common/message/DefaultCxfMessageMapperTest.java
 
b/components/camel-cxf/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/common/message/DefaultCxfMessageMapperTest.java
index e63bdaa5598..1be26e77244 100644
--- 
a/components/camel-cxf/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/common/message/DefaultCxfMessageMapperTest.java
+++ 
b/components/camel-cxf/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/common/message/DefaultCxfMessageMapperTest.java
@@ -25,6 +25,7 @@ import jakarta.servlet.http.HttpServletRequest;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.cxf.transport.CamelTransportConstants;
 import 
org.apache.camel.component.cxf.transport.message.DefaultCxfMessageMapper;
+import org.apache.camel.http.common.HttpMessage;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.cxf.common.security.SimplePrincipal;
 import org.apache.cxf.message.ExchangeImpl;
@@ -77,6 +78,7 @@ public class DefaultCxfMessageMapperTest {
 
     private Exchange setupCamelExchange(String requestURI, String requestPath, 
HttpServletRequest request) {
         org.apache.camel.Message camelMessage = 
mock(org.apache.camel.Message.class);
+        org.apache.camel.http.common.HttpMessage camelHttpMessage = 
mock(org.apache.camel.http.common.HttpMessage.class);
         Exchange camelExchange = mock(Exchange.class);
         when(camelExchange.getProperty(CamelTransportConstants.CXF_EXCHANGE,
                 org.apache.cxf.message.Exchange.class)).thenReturn(new 
ExchangeImpl());
@@ -92,8 +94,9 @@ public class DefaultCxfMessageMapperTest {
         when(camelMessage.getHeader(Exchange.HTTP_BASE_URI, 
String.class)).thenReturn(requestPath);
         when(camelMessage.getHeader(Exchange.HTTP_METHOD, 
String.class)).thenReturn("GET");
         when(camelMessage.getHeader(Exchange.HTTP_QUERY, 
String.class)).thenReturn("");
-        
when(camelMessage.getHeader(Exchange.HTTP_SERVLET_REQUEST)).thenReturn(request);
-        
when(camelMessage.getHeader(Exchange.HTTP_SERVLET_RESPONSE)).thenReturn(null);
+        
when(camelExchange.getIn(HttpMessage.class)).thenReturn(camelHttpMessage);
+        when(camelHttpMessage.getRequest()).thenReturn(request);
+        when(camelHttpMessage.getResponse()).thenReturn(null);
         when(camelMessage.getBody(InputStream.class)).thenReturn(new 
ByteArrayInputStream("".getBytes()));
         return camelExchange;
     }
diff --git 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConverter.java
 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConverter.java
index 29e27a5e8d0..ab248ed57c8 100644
--- 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConverter.java
+++ 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConverter.java
@@ -41,18 +41,18 @@ public final class HttpConverter {
 
     @Converter
     public static HttpServletRequest toServletRequest(Message message) {
-        if (message == null) {
-            return null;
+        if (message instanceof HttpMessage hm) {
+            return hm.getRequest();
         }
-        return message.getHeader(Exchange.HTTP_SERVLET_REQUEST, 
HttpServletRequest.class);
+        return null;
     }
 
     @Converter
     public static HttpServletResponse toServletResponse(Message message) {
-        if (message == null) {
-            return null;
+        if (message instanceof HttpMessage hm) {
+            return hm.getResponse();
         }
-        return message.getHeader(Exchange.HTTP_SERVLET_RESPONSE, 
HttpServletResponse.class);
+        return null;
     }
 
     @Converter
diff --git 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpMessage.java
 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpMessage.java
index 56edd680bfe..0e5d612911a 100644
--- 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpMessage.java
+++ 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpMessage.java
@@ -58,9 +58,6 @@ public class HttpMessage extends DefaultMessage {
 
         this.request = request;
         this.response = response;
-        // Put the request and response into the message header
-        this.setHeader(Exchange.HTTP_SERVLET_REQUEST, request);
-        this.setHeader(Exchange.HTTP_SERVLET_RESPONSE, response);
 
         // Check the setting of exchange
         Boolean flag = exchange.getProperty(Exchange.SKIP_WWW_FORM_URLENCODED, 
Boolean.class);
diff --git 
a/components/camel-jetty-common/src/generated/java/org/apache/camel/component/jetty/JettyConverterLoader.java
 
b/components/camel-jetty-common/src/generated/java/org/apache/camel/component/jetty/JettyConverterLoader.java
index 9d022eaf871..5e6ab0ebe6d 100644
--- 
a/components/camel-jetty-common/src/generated/java/org/apache/camel/component/jetty/JettyConverterLoader.java
+++ 
b/components/camel-jetty-common/src/generated/java/org/apache/camel/component/jetty/JettyConverterLoader.java
@@ -40,14 +40,9 @@ public final class JettyConverterLoader implements 
TypeConverterLoader, CamelCon
 
     @Override
     public void load(TypeConverterRegistry registry) throws 
TypeConverterLoaderException {
-        registerConverters(registry);
         registerFallbackConverters(registry);
     }
 
-    private void registerConverters(TypeConverterRegistry registry) {
-        addTypeConverter(registry, java.lang.String.class, 
org.eclipse.jetty.server.Response.class, false,
-            (type, exchange, value) -> 
org.apache.camel.component.jetty.JettyConverter.toString((org.eclipse.jetty.server.Response)
 value));
-    }
 
     private static void addTypeConverter(TypeConverterRegistry registry, 
Class<?> toType, Class<?> fromType, boolean allowNull, 
SimpleTypeConverter.ConversionMethod method) {
         registry.addTypeConverter(toType, fromType, new 
SimpleTypeConverter(allowNull, method));
diff --git 
a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyConverter.java
 
b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyConverter.java
index ced938822d3..8f261df33da 100644
--- 
a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyConverter.java
+++ 
b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyConverter.java
@@ -31,11 +31,6 @@ public final class JettyConverter {
         //Helper class
     }
 
-    @Converter
-    public static String toString(Response response) {
-        return response.toString();
-    }
-
     @Converter(fallback = true)
     @SuppressWarnings("unchecked")
     public static <T> T convertTo(Class<T> type, Exchange exchange, Object 
value, TypeConverterRegistry registry) {
@@ -44,6 +39,10 @@ public final class JettyConverter {
             if (Request.class.isAssignableFrom(value.getClass())) {
                 return (T) MISS_VALUE;
             }
+            // should not try to convert Response as its not possible
+            if (Response.class.isAssignableFrom(value.getClass())) {
+                return (T) MISS_VALUE;
+            }
         }
 
         return null;
diff --git 
a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpConverterTest.java
 
b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpConverterTest.java
index c8a934cf78a..b9d4e381bf3 100644
--- 
a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpConverterTest.java
+++ 
b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpConverterTest.java
@@ -20,7 +20,6 @@ import java.io.InputStream;
 
 import jakarta.servlet.ServletInputStream;
 import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
@@ -40,32 +39,6 @@ public class HttpConverterTest extends BaseJettyTest {
         return false;
     }
 
-    @Test
-    public void testToServletRequestAndResponse() throws Exception {
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("jetty://http://localhost:{{port}}/test";)
-                        // add this node to make sure the convert can work 
within
-                        // DefaultMessageImpl
-                        .convertBodyTo(String.class).process(new Processor() {
-                            public void process(Exchange exchange) {
-                                HttpServletRequest request = 
exchange.getIn(HttpServletRequest.class);
-                                assertNotNull(request, "We should get request 
object here");
-                                HttpServletResponse response = 
exchange.getIn(HttpServletResponse.class);
-                                assertNotNull(response, "We should get 
response object here");
-                                String s = 
exchange.getIn().getBody(String.class);
-                                assertEquals("Hello World", s);
-                            }
-                        }).transform(constant("Bye World"));
-            }
-        });
-        context.start();
-
-        String out = template.requestBody("http://localhost:{{port}}/test";, 
"Hello World", String.class);
-        assertEquals("Bye World", out);
-    }
-
     @Test
     public void testToServletInputStreamWithStreamCaching() throws Exception {
         context.addRoutes(new RouteBuilder() {
@@ -73,7 +46,7 @@ public class HttpConverterTest extends BaseJettyTest {
             public void configure() {
                 from("jetty://http://localhost:{{port}}/test";).process(new 
Processor() {
                     public void process(Exchange exchange) throws Exception {
-                        HttpMessage msg = exchange.getIn(HttpMessage.class);
+                        HttpMessage msg = 
exchange.getMessage(HttpMessage.class);
 
                         // The ServletInputStream should be cached, and you 
can't read message here
                         ServletInputStream sis = 
HttpConverter.toServletInputStream(msg);
@@ -99,7 +72,7 @@ public class HttpConverterTest extends BaseJettyTest {
             public void configure() {
                 
from("jetty://http://localhost:{{port}}/test?disableStreamCache=true";).process(new
 Processor() {
                     public void process(Exchange exchange) throws Exception {
-                        HttpMessage msg = exchange.getIn(HttpMessage.class);
+                        HttpMessage msg = 
exchange.getMessage(HttpMessage.class);
 
                         // The ServletInputStream should not be cached
                         ServletInputStream sis = 
HttpConverter.toServletInputStream(msg);
@@ -126,7 +99,7 @@ public class HttpConverterTest extends BaseJettyTest {
             public void configure() {
                 from("jetty://http://localhost:{{port}}/test";).process(new 
Processor() {
                     public void process(Exchange exchange) {
-                        HttpMessage msg = exchange.getIn(HttpMessage.class);
+                        HttpMessage msg = 
exchange.getMessage(HttpMessage.class);
 
                         InputStream sis = msg.getBody(InputStream.class);
                         assertNotNull(sis);
diff --git 
a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpGZipEncodingTest.java
 
b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpGZipEncodingTest.java
index 54f8ca71d5f..e49041462f2 100644
--- 
a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpGZipEncodingTest.java
+++ 
b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpGZipEncodingTest.java
@@ -25,6 +25,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.http.HttpClientConfigurer;
+import org.apache.camel.http.common.HttpMessage;
 import org.apache.camel.spi.Registry;
 import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
 import org.junit.jupiter.api.Disabled;
@@ -86,8 +87,7 @@ public class HttpGZipEncodingTest extends BaseJettyTest {
                 from("jetty:http://localhost:"; + port1 + "/gzip").process(new 
Processor() {
                     public void process(Exchange exchange) {
                         // check the request method
-                        HttpServletRequest request
-                                = 
exchange.getIn().getHeader(Exchange.HTTP_SERVLET_REQUEST, 
HttpServletRequest.class);
+                        HttpServletRequest request = 
exchange.getMessage(HttpMessage.class).getRequest();
                         if ("POST".equals(request.getMethod())) {
                             String requestBody = 
exchange.getIn().getBody(String.class);
                             assertEquals("<Hello>World</Hello>", requestBody, 
"Get a wrong request string");
diff --git 
a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpHeaderTest.java
 
b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpHeaderTest.java
index 4e15d204e3b..88406fac9f1 100644
--- 
a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpHeaderTest.java
+++ 
b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpHeaderTest.java
@@ -24,6 +24,7 @@ import jakarta.servlet.ServletRequest;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.http.common.HttpMessage;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -73,8 +74,7 @@ public class HttpHeaderTest extends BaseJettyTest {
                 
from("jetty:http://localhost:{{port}}/myapp/mytest";).process(new Processor() {
                     public void process(Exchange exchange) {
                         Map<String, Object> headers = 
exchange.getIn().getHeaders();
-                        ServletRequest request
-                                = 
exchange.getIn().getHeader(Exchange.HTTP_SERVLET_REQUEST, ServletRequest.class);
+                        ServletRequest request = 
exchange.getIn(HttpMessage.class).getRequest();
                         assertNotNull(request);
                         assertEquals("HTTP/1.0", request.getProtocol(), "Get a 
wong http protocol version");
                         for (Entry<String, Object> entry : headers.entrySet()) 
{
diff --git 
a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/HttpClientRouteTest.java
 
b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/HttpClientRouteTest.java
index b47b94c5b30..bdfc5ab2608 100644
--- 
a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/HttpClientRouteTest.java
+++ 
b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/HttpClientRouteTest.java
@@ -25,6 +25,7 @@ import jakarta.servlet.http.HttpServletResponse;
 import org.apache.camel.Exchange;
 import org.apache.camel.FailedToStartRouteException;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.http.common.HttpMessage;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -160,11 +161,10 @@ public class HttpClientRouteTest extends 
ServletCamelRouterTestSupport {
             });
 
             from("servlet:testConverter?matchOnUriPrefix=true")
-                    .convertBodyTo(String.class)
                     .process(exchange -> {
-                        HttpServletRequest request = 
exchange.getIn(HttpServletRequest.class);
+                        HttpServletRequest request = 
exchange.getIn(HttpMessage.class).getRequest();
                         assertNotNull(request, "We should get request object 
here");
-                        HttpServletResponse response = 
exchange.getIn(HttpServletResponse.class);
+                        HttpServletResponse response = 
exchange.getIn(HttpMessage.class).getResponse();
                         assertNotNull(response, "We should get response object 
here");
                         String s = exchange.getIn().getBody(String.class);
                         assertEquals("<request> hello world </request>", s);
diff --git 
a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/ExchangeHeaders.java
 
b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/ExchangeHeaders.java
index 59e50bfb7c5..47af57fb11f 100644
--- 
a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/ExchangeHeaders.java
+++ 
b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/ExchangeHeaders.java
@@ -98,8 +98,6 @@ public final class ExchangeHeaders {
     public static final HttpString HTTP_URI = new HttpString("CamelHttpUri");
     public static final HttpString HTTP_URL = new HttpString("CamelHttpUrl");
     public static final HttpString HTTP_CHUNKED = new 
HttpString("CamelHttpChunked");
-    public static final HttpString HTTP_SERVLET_REQUEST = new 
HttpString("CamelHttpServletRequest");
-    public static final HttpString HTTP_SERVLET_RESPONSE = new 
HttpString("CamelHttpServletResponse");
 
     public static final HttpString INTERCEPTED_ENDPOINT = new 
HttpString("CamelInterceptedEndpoint");
     public static final HttpString INTERCEPT_SEND_TO_ENDPOINT_WHEN_MATCHED
diff --git a/core/camel-api/src/main/java/org/apache/camel/Exchange.java 
b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
index 82d256b5f2d..41cd9b83b82 100644
--- a/core/camel-api/src/main/java/org/apache/camel/Exchange.java
+++ b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
@@ -195,7 +195,9 @@ public interface Exchange extends VariableAware {
     String HTTP_URI = "CamelHttpUri";
     String HTTP_URL = "CamelHttpUrl";
     String HTTP_CHUNKED = "CamelHttpChunked";
+    @Deprecated(since = "4.7.0")
     String HTTP_SERVLET_REQUEST = "CamelHttpServletRequest";
+    @Deprecated(since = "4.7.0")
     String HTTP_SERVLET_RESPONSE = "CamelHttpServletResponse";
 
     @Metadata(label = "interceptFrom,interceptSendToEndpoint", description = 
"The endpoint URI that was intercepted",
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
index 6db2b4b26de..d0adc9c660a 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
@@ -82,6 +82,27 @@ To:
 </route>
 ----
 
+=== camel-jetty / camel-servlet / camel-undertow
+
+When using embedded HTTP server (consumer) then the headers 
`CamelHttpServletRequest` and `CamelHttpServletResponse`
+has been removed.
+
+To gain access to these then you need to use the `HttpMessage` API instead as 
shown below:
+
+[source,java]
+----
+ServletRequest request = 
exchange.getIn().getHeader(Exchange.HTTP_SERVLET_REQUEST, ServletRequest.class);
+ServletResponse request = 
exchange.getIn().getHeader(Exchange.HTTP_SERVLET_RESPONSE, 
ServletResponse.class);
+----
+
+Should be changed to:
+
+[source,java]
+----
+ServletRequest request = exchange.getMessage(HttpMessage.class).getRequest();
+ServletResponse response = 
exchange.getMessage(HttpMessage.class).getResponse();
+----
+
 === camel-seda / camel-disruptor
 
 When using `InOnly` exchange pattern then the producer makes a copy of the 
message to be added to the queue.
diff --git a/parent/pom.xml b/parent/pom.xml
index 456ec091635..3936fe33203 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -273,7 +273,7 @@
         <jcr-version>2.0</jcr-version>
         <jedis-client-version>5.1.3</jedis-client-version>
         <jetcd-version>0.8.2</jetcd-version>
-        <jetty-version>12.0.8</jetty-version>
+        <jetty-version>12.0.10</jetty-version>
         <jetty-plugin-version>${jetty-version}</jetty-plugin-version>
         <jetty-runner-groupId>org.eclipse.jetty</jetty-runner-groupId>
         <jettison-version>1.5.4</jettison-version>

Reply via email to