You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/10/28 08:55:39 UTC

[camel] branch master updated: CAMEL-11961: Fixed ClassCastException in HttpMessage

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

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


The following commit(s) were added to refs/heads/master by this push:
     new a958b9e  CAMEL-11961: Fixed ClassCastException in HttpMessage
a958b9e is described below

commit a958b9e833afac7d1a1b9ecdaa569764b4db5805
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Oct 28 10:40:04 2017 +0200

    CAMEL-11961: Fixed ClassCastException in HttpMessage
---
 .../org/apache/camel/http/common/CamelServlet.java  |  5 ++---
 .../org/apache/camel/http/common/HttpMessage.java   | 21 ++++++++++-----------
 .../component/jetty/CamelContinuationServlet.java   |  5 ++---
 3 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/CamelServlet.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/CamelServlet.java
index ed94745..2bfcaba 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/CamelServlet.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/CamelServlet.java
@@ -31,7 +31,6 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -152,7 +151,7 @@ public class CamelServlet extends HttpServlet {
         }
         
         // create exchange and set data on it
-        Exchange exchange = new DefaultExchange(consumer.getEndpoint(), ExchangePattern.InOut);
+        Exchange exchange = consumer.getEndpoint().createExchange(ExchangePattern.InOut);
 
         if (consumer.getEndpoint().isBridgeEndpoint()) {
             exchange.setProperty(Exchange.SKIP_GZIP_ENCODING, Boolean.TRUE);
@@ -166,7 +165,7 @@ public class CamelServlet extends HttpServlet {
         // does some class resolution
         ClassLoader oldTccl = overrideTccl(exchange);
         HttpHelper.setCharsetFromContentType(request.getContentType(), exchange);
-        exchange.setIn(new HttpMessage(exchange, request, response));
+        exchange.setIn(new HttpMessage(exchange, consumer.getEndpoint(), request, response));
         // set context path as header
         String contextPath = consumer.getEndpoint().getPath();
         exchange.getIn().setHeader("CamelServletContextPath", contextPath);
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 a96d580..a799a08 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
@@ -30,12 +30,14 @@ import org.apache.camel.util.ObjectHelper;
  */
 public class HttpMessage extends DefaultMessage {
 
-    private HttpServletRequest request;
-    private HttpServletResponse response;
+    private final HttpServletRequest request;
+    private final HttpServletResponse response;
+    private final HttpCommonEndpoint endpoint;
 
-    public HttpMessage(Exchange exchange, HttpServletRequest request, HttpServletResponse response) {
+    public HttpMessage(Exchange exchange, HttpCommonEndpoint endpoint, HttpServletRequest request, HttpServletResponse response) {
         setExchange(exchange);
         setCamelContext(exchange.getContext());
+        this.endpoint = endpoint;
 
         this.request = request;
         this.response = response;
@@ -51,13 +53,14 @@ public class HttpMessage extends DefaultMessage {
 
         // use binding to read the request allowing end users to use their
         // implementation of the binding
-        getEndpoint().getHttpBinding().readRequest(request, this);
+        endpoint.getHttpBinding().readRequest(request, this);
     }
 
-    private HttpMessage(HttpServletRequest request, HttpServletResponse response, Exchange exchange) {
+    private HttpMessage(HttpServletRequest request, HttpServletResponse response, Exchange exchange, HttpCommonEndpoint endpoint) {
         this.request = request;
         this.response = response;
         setExchange(getExchange());
+        this.endpoint = endpoint;
         setCamelContext(exchange.getContext());
     }
 
@@ -72,7 +75,7 @@ public class HttpMessage extends DefaultMessage {
     @Override
     protected Object createBody() {
         try {
-            return getEndpoint().getHttpBinding().parseBody(this);
+            return endpoint.getHttpBinding().parseBody(this);
         } catch (IOException e) {
             throw new RuntimeCamelException(e);
         }
@@ -80,11 +83,7 @@ public class HttpMessage extends DefaultMessage {
 
     @Override
     public HttpMessage newInstance() {
-        return new HttpMessage(request, response, getExchange());
-    }
-
-    private HttpCommonEndpoint getEndpoint() {
-        return (HttpCommonEndpoint) getExchange().getFromEndpoint();
+        return new HttpMessage(request, response, getExchange(), endpoint);
     }
 
     @Override
diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
index 4953570..f6e3d83 100644
--- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
+++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
@@ -34,7 +34,6 @@ import org.apache.camel.http.common.HttpConstants;
 import org.apache.camel.http.common.HttpConsumer;
 import org.apache.camel.http.common.HttpHelper;
 import org.apache.camel.http.common.HttpMessage;
-import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
 import org.eclipse.jetty.continuation.Continuation;
@@ -161,7 +160,7 @@ public class CamelContinuationServlet extends CamelServlet {
             }
 
             // a new request so create an exchange
-            final Exchange exchange = new DefaultExchange(consumer.getEndpoint(), ExchangePattern.InOut);
+            final Exchange exchange = consumer.getEndpoint().createExchange(ExchangePattern.InOut);
 
             if (consumer.getEndpoint().isBridgeEndpoint()) {
                 exchange.setProperty(Exchange.SKIP_GZIP_ENCODING, Boolean.TRUE);
@@ -173,7 +172,7 @@ public class CamelContinuationServlet extends CamelServlet {
             
             HttpHelper.setCharsetFromContentType(request.getContentType(), exchange);
             
-            exchange.setIn(new HttpMessage(exchange, request, response));
+            exchange.setIn(new HttpMessage(exchange, consumer.getEndpoint(), request, response));
             // set context path as header
             String contextPath = consumer.getEndpoint().getPath();
             exchange.getIn().setHeader("CamelServletContextPath", contextPath);

-- 
To stop receiving notification emails like this one, please contact
['"commits@camel.apache.org" <co...@camel.apache.org>'].