You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by wt...@apache.org on 2009/01/22 05:58:43 UTC

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

Author: wtam
Date: Wed Jan 21 20:58:43 2009
New Revision: 736562

URL: http://svn.apache.org/viewvc?rev=736562&view=rev
Log:
[CAMEL-1284] Restlet binding does not properly insert/extract Restlet message.

Added:
    camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletPostContentTest.java   (with props)
    camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java   (contents, props changed)
      - copied, changed from r736198, camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRouteBuilderTest.java
Removed:
    camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRouteBuilderTest.java
Modified:
    camel/trunk/components/camel-restlet/pom.xml
    camel/trunk/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/DefaultRestletBinding.java
    camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderAuthTest.java

Modified: camel/trunk/components/camel-restlet/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-restlet/pom.xml?rev=736562&r1=736561&r2=736562&view=diff
==============================================================================
--- camel/trunk/components/camel-restlet/pom.xml (original)
+++ camel/trunk/components/camel-restlet/pom.xml Wed Jan 21 20:58:43 2009
@@ -75,6 +75,13 @@
     </dependency>
 
     <dependency>
+      <groupId>commons-httpclient</groupId>
+      <artifactId>commons-httpclient</artifactId>
+      <version>3.1</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
       <scope>test</scope>

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=736562&r1=736561&r2=736562&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 Wed Jan 21 20:58:43 2009
@@ -42,7 +42,6 @@
  */
 public class DefaultRestletBinding implements RestletBinding, HeaderFilterStrategyAware {
     private static final Log LOG = LogFactory.getLog(DefaultRestletBinding.class);
-    private static final String CAMEL_REQUEST = "camel.request";
     private HeaderFilterStrategy headerFilterStrategy;
 
     /**
@@ -68,13 +67,13 @@
 
             }
         }
-
-        // extract our header and body
+        
         Form form = new Form(request.getEntity());
         if (form != null) {
             for (Map.Entry<String, String> entry : form.getValuesMap().entrySet()) {
-                if (CAMEL_REQUEST.equals(entry.getKey())) {
-                    exchange.getIn().setBody(entry.getValue());
+                // extract body added to the form as the key which has null value
+                if (entry.getValue() == null) {
+                    exchange.getIn().setBody(entry.getKey());
                     if (LOG.isDebugEnabled()) {
                         LOG.debug("Populate exchange from Restlet request body: " + entry.getValue());
                     }
@@ -91,6 +90,7 @@
                 }
             }
         }
+        
     }   
 
     /**
@@ -104,7 +104,8 @@
         request.setReferrerRef("camel-restlet");
         String body = exchange.getIn().getBody(String.class);
         Form form = new Form();
-        form.add(CAMEL_REQUEST, body);
+        // add the body as the key in the form with null value
+        form.add(body, null);
         
         if (LOG.isDebugEnabled()) {
             LOG.debug("Populate Restlet request from exchange body: " + body);

Added: camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletPostContentTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletPostContentTest.java?rev=736562&view=auto
==============================================================================
--- camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletPostContentTest.java (added)
+++ camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletPostContentTest.java Wed Jan 21 20:58:43 2009
@@ -0,0 +1,67 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.restlet;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.RequestEntity;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+
+/**
+ *
+ * @version $Revision$
+ */
+public class RestletPostContentTest extends ContextTestSupport {
+
+    private static final String MSG_BODY = "Hello World!";
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("restlet:http://localhost:8080/users/{username}?restletMethod=POST")
+                    .process(new SetUserProcessor());
+                
+            }
+            
+        };
+    }
+    
+    class SetUserProcessor implements Processor {
+        public void process(Exchange exchange) throws Exception {   
+            assertEquals(MSG_BODY, exchange.getIn().getBody(String.class));
+        }
+        
+    }
+    
+    public void testPostBody() throws Exception {
+        HttpMethod method = new PostMethod("http://localhost:8080/users/homer");
+        RequestEntity requestEntity = new StringRequestEntity(MSG_BODY, null, null);
+        ((EntityEnclosingMethod)method).setRequestEntity(requestEntity);
+        HttpClient client = new HttpClient();
+        assertEquals(200, client.executeMethod(method));
+
+    }
+}

Propchange: camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletPostContentTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletPostContentTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderAuthTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderAuthTest.java?rev=736562&r1=736561&r2=736562&view=diff
==============================================================================
--- camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderAuthTest.java (original)
+++ camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderAuthTest.java Wed Jan 21 20:58:43 2009
@@ -53,6 +53,7 @@
         assertTrue(response.contains("requires user authentication"));
     }
 
+    @Override
     protected ClassPathXmlApplicationContext createApplicationContext() {
         return new ClassPathXmlApplicationContext(
                 "org/apache/camel/component/restlet/camel-context.xml");

Copied: camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java (from r736198, camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRouteBuilderTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java?p2=camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java&p1=camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRouteBuilderTest.java&r1=736198&r2=736562&rev=736562&view=diff
==============================================================================
--- camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRouteBuilderTest.java (original)
+++ camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java Wed Jan 21 20:58:43 2009
@@ -29,9 +29,10 @@
 import org.restlet.data.Response;
 import org.restlet.data.Status;
 
-public class RestRouteBuilderTest extends ContextTestSupport {
+public class RestletRouteBuilderTest extends ContextTestSupport {
     private static final String ID = "89531";
 
+    @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
@@ -45,7 +46,7 @@
                 from("restlet:http://localhost:8080/orders?restletMethod=post").process(new Processor() {
                     public void process(Exchange exchange) throws Exception {
                         exchange.getOut().setBody(
-                                "received [" + exchange.getIn().getBody()
+                                "received [" + exchange.getIn().getBody(String.class)
                                 + "] as an order id = "
                                 + exchange.getIn().getHeader("id"));
                     }

Propchange: camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java
------------------------------------------------------------------------------
    svn:mergeinfo =