Repository: camel
Updated Branches:
  refs/heads/camel-2.12.x 4c62b2e4a -> 3a744d460
  refs/heads/camel-2.13.x 324669312 -> 8f83f6185
  refs/heads/master c1522c1a1 -> cb5941aa3


CAMEL-7650: camel-restlet should return error code 405 (method not allowed) if 
the http request is using a verb that is not allowed.


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

Branch: refs/heads/master
Commit: cb5941aa3c392bb56898d3de880d10a73e1c449a
Parents: c1522c1
Author: Claus Ibsen <davscl...@apache.org>
Authored: Mon Aug 4 10:18:22 2014 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon Aug 4 10:18:22 2014 +0200

----------------------------------------------------------------------
 .../apache/camel/component/restlet/MethodBasedRouter.java |  2 ++
 .../restlet/RestletMultiMethodsEndpointTest.java          | 10 ++++++++++
 2 files changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/cb5941aa/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/MethodBasedRouter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/MethodBasedRouter.java
 
b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/MethodBasedRouter.java
index ea9bf16..b9518c3 100644
--- 
a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/MethodBasedRouter.java
+++ 
b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/MethodBasedRouter.java
@@ -55,6 +55,8 @@ class MethodBasedRouter extends Restlet {
         } else {
             LOG.debug("MethodRouter ({}) method not allowed: {}", uriPattern, 
method);
             response.setStatus(Status.CLIENT_ERROR_METHOD_NOT_ALLOWED);
+            // must include list of allowed methods
+            response.setAllowedMethods(routes.keySet());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/cb5941aa/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletMultiMethodsEndpointTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletMultiMethodsEndpointTest.java
 
b/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletMultiMethodsEndpointTest.java
index 7ed9c07..1e4a61f 100644
--- 
a/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletMultiMethodsEndpointTest.java
+++ 
b/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletMultiMethodsEndpointTest.java
@@ -16,9 +16,12 @@
  */
 package org.apache.camel.component.restlet;
 
+import java.util.Locale;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.http.Header;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpDelete;
 import org.apache.http.client.methods.HttpGet;
@@ -61,6 +64,13 @@ public class RestletMultiMethodsEndpointTest extends 
RestletTestSupport {
 
         // delete is not allowed so we return 405
         assertEquals(Status.CLIENT_ERROR_METHOD_NOT_ALLOWED.getCode(), 
response.getStatusLine().getStatusCode());
+
+        Header header = response.getFirstHeader("Allow");
+        assertNotNull(header);
+        String value = header.getValue().toUpperCase(Locale.US);
+        assertTrue("POST should be allowed", value.contains("POST"));
+        assertTrue("GET should be allowed", value.contains("GET"));
+        assertTrue("PUT should be allowed", value.contains("PUT"));
     }
 
     protected RouteBuilder createRouteBuilder() {

Reply via email to