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 2015/04/29 10:23:05 UTC

[2/5] camel git commit: CAMEL-8716: camel-http - Make it easier to extend DefaultHttpBinding and have default no-arg ctr

CAMEL-8716: camel-http - Make it easier to extend DefaultHttpBinding and have default no-arg ctr


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0dbc0979
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0dbc0979
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0dbc0979

Branch: refs/heads/master
Commit: 0dbc097916465ae0e3850f65b9ee2ade3d32649a
Parents: 4129a58
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Apr 29 08:53:02 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Apr 29 10:26:31 2015 +0200

----------------------------------------------------------------------
 .../component/http/DefaultHttpBinding.java      | 22 +++++++++++++-------
 .../camel/component/http/HttpBinding.java       | 17 +++++++++++++++
 .../camel/component/http/HttpEndpoint.java      | 19 +++++++++++------
 3 files changed, 45 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/0dbc0979/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java b/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
index e1fa34e..580dc00 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
@@ -58,10 +58,9 @@ public class DefaultHttpBinding implements HttpBinding {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultHttpBinding.class);
     private boolean useReaderForPayload;
-    private HeaderFilterStrategy headerFilterStrategy = new HttpHeaderFilterStrategy();
-    private HttpEndpoint endpoint;
+    private boolean transferException;
+    private HeaderFilterStrategy headerFilterStrategy;
 
-    @Deprecated
     public DefaultHttpBinding() {
     }
 
@@ -70,9 +69,10 @@ public class DefaultHttpBinding implements HttpBinding {
         this.headerFilterStrategy = headerFilterStrategy;
     }
 
+    @Deprecated
     public DefaultHttpBinding(HttpEndpoint endpoint) {
-        this.endpoint = endpoint;
         this.headerFilterStrategy = endpoint.getHeaderFilterStrategy();
+        this.transferException = endpoint.isTransferException();
     }
 
     public void readRequest(HttpServletRequest request, HttpMessage message) {
@@ -129,7 +129,7 @@ public class DefaultHttpBinding implements HttpBinding {
             LOG.trace("HTTP method {}", request.getMethod());
             LOG.trace("HTTP query {}", request.getQueryString());
             LOG.trace("HTTP url {}", request.getRequestURL());
-            LOG.trace("HTTP uri {}", request.getRequestURI().toString());
+            LOG.trace("HTTP uri {}", request.getRequestURI());
             LOG.trace("HTTP path {}", request.getPathInfo());
             LOG.trace("HTTP content-type {}", request.getContentType());
         }
@@ -137,7 +137,7 @@ public class DefaultHttpBinding implements HttpBinding {
         // if content type is serialized java object, then de-serialize it to a Java object
         if (request.getContentType() != null && HttpConstants.CONTENT_TYPE_JAVA_SERIALIZED_OBJECT.equals(request.getContentType())) {
             try {
-                InputStream is = endpoint.getCamelContext().getTypeConverter().mandatoryConvertTo(InputStream.class, body);
+                InputStream is = message.getExchange().getContext().getTypeConverter().mandatoryConvertTo(InputStream.class, body);
                 Object object = HttpHelper.deserializeJavaObjectFromStream(is, message.getExchange().getContext());
                 if (object != null) {
                     message.setBody(object);
@@ -246,7 +246,7 @@ public class DefaultHttpBinding implements HttpBinding {
         // 500 for internal server error
         response.setStatus(500);
 
-        if (endpoint != null && endpoint.isTransferException()) {
+        if (isTransferException()) {
             // transfer the exception as a serialized java object
             HttpHelper.writeObjectToServletResponse(response, exception);
         } else {
@@ -468,6 +468,14 @@ public class DefaultHttpBinding implements HttpBinding {
         this.useReaderForPayload = useReaderForPayload;
     }
 
+    public boolean isTransferException() {
+        return transferException;
+    }
+
+    public void setTransferException(boolean transferException) {
+        this.transferException = transferException;
+    }
+
     public HeaderFilterStrategy getHeaderFilterStrategy() {
         return headerFilterStrategy;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/0dbc0979/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
index a045aee..25d804d 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.spi.HeaderFilterStrategy;
@@ -116,6 +117,22 @@ public interface HttpBinding {
     void setUseReaderForPayload(boolean useReaderForPayload);
 
     /**
+     * If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back
+     * serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or
+     * Servlet Camel components). On the producer side the exception will be deserialized and thrown as is,
+     * instead of the HttpOperationFailedException. The caused exception is required to be serialized.
+     */
+    boolean isTransferException();
+
+    /**
+     * If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back
+     * serialized in the response as a application/x-java-serialized-object content type (for example using Jetty or
+     * Servlet Camel components). On the producer side the exception will be deserialized and thrown as is,
+     * instead of the HttpOperationFailedException. The caused exception is required to be serialized.
+     */
+    void setTransferException(boolean transferException);
+
+    /**
      * Gets the header filter strategy
      *
      * @return the strategy

http://git-wip-us.apache.org/repos/asf/camel/blob/0dbc0979/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
index 8bf65e5..ac82939 100644
--- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
+++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
@@ -50,14 +50,19 @@ import org.slf4j.LoggerFactory;
 public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrategyAware {
 
     private static final Logger LOG = LoggerFactory.getLogger(HttpEndpoint.class);
-    private HeaderFilterStrategy headerFilterStrategy = new HttpHeaderFilterStrategy();
-    private HttpBinding binding;
+
     private HttpComponent component;
-    @UriPath @Metadata(required = "true", label = "producer")
-    private URI httpUri;
     private HttpClientParams clientParams;
     private HttpClientConfigurer httpClientConfigurer;
     private HttpConnectionManager httpConnectionManager;
+    private UrlRewrite urlRewrite;
+
+    @UriPath @Metadata(required = "true", label = "producer")
+    private URI httpUri;
+    @UriParam
+    private HeaderFilterStrategy headerFilterStrategy = new HttpHeaderFilterStrategy();
+    @UriParam
+    private HttpBinding binding;
     @UriParam(defaultValue = "true")
     private boolean throwExceptionOnFailure = true;
     @UriParam
@@ -80,7 +85,6 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
     private boolean traceEnabled;
     @UriParam
     private String httpMethodRestrict;
-    private UrlRewrite urlRewrite;
     @UriParam
     private Integer responseBufferSize;
 
@@ -227,7 +231,10 @@ public class HttpEndpoint extends DefaultEndpoint implements HeaderFilterStrateg
 
     public HttpBinding getBinding() {
         if (binding == null) {
-            binding = new DefaultHttpBinding(this);
+            // create a new binding and use the options from this endpoint
+            binding = new DefaultHttpBinding();
+            binding.setHeaderFilterStrategy(getHeaderFilterStrategy());
+            binding.setTransferException(isTransferException());
         }
         return binding;
     }