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 2008/11/26 12:07:52 UTC

svn commit: r720806 - in /activemq/camel/trunk/components: camel-http/src/main/java/org/apache/camel/component/http/ camel-jetty/src/test/java/org/apache/camel/component/jetty/

Author: davsclaus
Date: Wed Nov 26 03:07:50 2008
New Revision: 720806

URL: http://svn.apache.org/viewvc?rev=720806&view=rev
Log:
CAMEL-1109: Applied patch with thanks and added a test for it in camel-jetty

Modified:
    activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpOperationFailedException.java
    activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
    activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyResponseBodyWhenErrorTest.java

Modified: activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpOperationFailedException.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpOperationFailedException.java?rev=720806&r1=720805&r2=720806&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpOperationFailedException.java (original)
+++ activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpOperationFailedException.java Wed Nov 26 03:07:50 2008
@@ -20,24 +20,27 @@
 
 import org.apache.camel.CamelException;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.commons.httpclient.Header;
 import org.apache.commons.httpclient.StatusLine;
 
 public class HttpOperationFailedException extends CamelException {    
     private final String redirectLocation;
     private final int statusCode;
     private final StatusLine statusLine;
+    private final Header[] headers;
     private final InputStream responseBody;
 
-    public HttpOperationFailedException(int statusCode, StatusLine statusLine, String location, InputStream responseBody) {
+    public HttpOperationFailedException(int statusCode, StatusLine statusLine, String location, Header[] headers, InputStream responseBody) {
         super("HTTP operation failed with statusCode: " + statusCode + ", status: " + statusLine + (location != null ? ", redirectLocation: " + location : ""));
         this.statusCode = statusCode;
         this.statusLine = statusLine;
         this.redirectLocation = location;
+        this.headers = headers;
         this.responseBody = responseBody;
     }
 
-    public HttpOperationFailedException(int statusCode, StatusLine statusLine, InputStream responseBody) {
-        this(statusCode, statusLine, null, responseBody);
+    public HttpOperationFailedException(int statusCode, StatusLine statusLine, Header[] headers, InputStream responseBody) {
+        this(statusCode, statusLine, null, headers, responseBody);
     }
 
     public boolean isRedirectError() {
@@ -60,9 +63,12 @@
         return statusCode;
     }
 
+    public Header[] getHeaders() {
+        return headers;
+    }
+
     public InputStream getResponseBody() {
         return responseBody;
     }
-
    
 }
\ No newline at end of file

Modified: activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java?rev=720806&r1=720805&r2=720806&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java (original)
+++ activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java Wed Nov 26 03:07:50 2008
@@ -96,20 +96,21 @@
                 }
             } else {
                 HttpOperationFailedException exception = null;
+                Header[] headers = method.getResponseHeaders();
                 InputStream is =  extractResponseBody(method);
                 if (responseCode >= 300 && responseCode < 400) {
                     String redirectLocation;
                     Header locationHeader = method.getResponseHeader("location");
                     if (locationHeader != null) {
                         redirectLocation = locationHeader.getValue();
-                        exception = new HttpOperationFailedException(responseCode, method.getStatusLine(), redirectLocation, is);
+                        exception = new HttpOperationFailedException(responseCode, method.getStatusLine(), redirectLocation, headers, is);
                     } else {
                         // no redirect location
-                        exception = new HttpOperationFailedException(responseCode, method.getStatusLine(), is);
+                        exception = new HttpOperationFailedException(responseCode, method.getStatusLine(), headers, is);
                     }
                 } else {
                     // internal server error (error code 500)
-                    exception = new HttpOperationFailedException(responseCode, method.getStatusLine(), is);
+                    exception = new HttpOperationFailedException(responseCode, method.getStatusLine(), headers, is);
                 }
 
                 if (exception != null) {                    

Modified: activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyResponseBodyWhenErrorTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyResponseBodyWhenErrorTest.java?rev=720806&r1=720805&r2=720806&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyResponseBodyWhenErrorTest.java (original)
+++ activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyResponseBodyWhenErrorTest.java Wed Nov 26 03:07:50 2008
@@ -38,6 +38,8 @@
             String body = context.getTypeConverter().convertTo(String.class, cause.getResponseBody());
             assertTrue(body.indexOf("Damm") > -1);
             assertTrue(body.indexOf("IllegalArgumentException") > -1);
+            assertNotNull(cause.getHeaders());
+            assertTrue("Should have http header with content type set", cause.getHeaders()[0].getValue().indexOf("text/plain") > -1);
         }
     }