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 2014/08/04 10:19:07 UTC
[2/3] git commit: CAMEL-7650: camel-restlet should return error code
405 (method not allowed) if the http request is using a verb that is not
allowed.
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/8f83f618
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8f83f618
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8f83f618
Branch: refs/heads/camel-2.13.x
Commit: 8f83f618535db8400c0ff8f6ea48b191c83aa6ae
Parents: 3246693
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Aug 4 10:18:22 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Aug 4 10:18:44 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/8f83f618/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/8f83f618/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() {