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 2010/10/01 10:34:54 UTC

svn commit: r1003431 - in /camel/trunk/components/camel-restlet/src: main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java test/java/org/apache/camel/component/restlet/RestletProducerGetResponseCodeTest.java

Author: davsclaus
Date: Fri Oct  1 08:34:53 2010
New Revision: 1003431

URL: http://svn.apache.org/viewvc?rev=1003431&view=rev
Log:
CAMEL-3185: Fixed restlet producer not setting status code.

Added:
    camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletProducerGetResponseCodeTest.java
      - copied, changed from r1003390, camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletProducerGetTest.java
Modified:
    camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java

Modified: camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java?rev=1003431&r1=1003430&r2=1003431&view=diff
==============================================================================
--- camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java (original)
+++ camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java Fri Oct  1 08:34:53 2010
@@ -222,8 +222,8 @@ public class DefaultRestletBinding imple
         response.setEntity(text, mediaType);
 
         if (exchange.getProperty(Exchange.CHARSET_NAME) != null) {
-            response.getEntity().setCharacterSet(CharacterSet.valueOf(exchange.getProperty(Exchange.CHARSET_NAME,
-                    String.class)));
+            CharacterSet cs = CharacterSet.valueOf(exchange.getProperty(Exchange.CHARSET_NAME, String.class));
+            response.getEntity().setCharacterSet(cs);
         }
     }
 
@@ -238,16 +238,21 @@ public class DefaultRestletBinding imple
             }
         }
 
+        // set response code
+        int responseCode = response.getStatus().getCode();
+        exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, responseCode);
+
+        // get content type
+        MediaType mediaType = response.getEntity().getMediaType();
+        if (mediaType != null) {
+            exchange.getOut().setHeader(Exchange.CONTENT_TYPE, mediaType.toString());
+        }
+
         String text = response.getEntity().getText();
         if (LOG.isDebugEnabled()) {
             LOG.debug("Populate exchange from Restlet response: " + text);
         }
-
-        if (exchange.getPattern().isOutCapable()) {
-            exchange.getOut().setBody(text);
-        } else {
-            throw new RuntimeCamelException("Exchange is incapable of receiving response: " + exchange + " with pattern: " + exchange.getPattern());
-        }
+        exchange.getOut().setBody(text);
     }
 
     public HeaderFilterStrategy getHeaderFilterStrategy() {

Copied: camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletProducerGetResponseCodeTest.java (from r1003390, camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletProducerGetTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletProducerGetResponseCodeTest.java?p2=camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletProducerGetResponseCodeTest.java&p1=camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletProducerGetTest.java&r1=1003390&r2=1003431&rev=1003431&view=diff
==============================================================================
--- camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletProducerGetTest.java (original)
+++ camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletProducerGetResponseCodeTest.java Fri Oct  1 08:34:53 2010
@@ -25,7 +25,7 @@ import org.junit.Test;
 /**
  * @version $Revision$
  */
-public class RestletProducerGetTest extends CamelTestSupport {
+public class RestletProducerGetResponseCodeTest extends CamelTestSupport {
 
     @Test
     public void testRestletProducerGet() throws Exception {
@@ -38,7 +38,14 @@ public class RestletProducerGetTest exte
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:start").to("restlet:http://localhost:9080/users/123/basic");
+                from("direct:start")
+                    .to("restlet:http://localhost:9080/users/123/basic")
+                    .process(new Processor() {
+                        public void process(Exchange exchange) throws Exception {
+                            assertEquals(200, exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE));
+                            assertEquals("text/plain", exchange.getIn().getHeader(Exchange.CONTENT_TYPE));
+                        }
+                    });
 
                 from("restlet:http://localhost:9080/users/{id}/basic")
                     .process(new Processor() {