Repository: camel Updated Branches: refs/heads/master 16cac67c1 -> ac1cd9500
CAMEL-11316: Added support for HTTP OPTIONS in camel-restlet Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d78a658e Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d78a658e Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d78a658e Branch: refs/heads/master Commit: d78a658e976b60c5072ab7d353569d15915e9518 Parents: 16cac67 Author: aldettinger <aldettin...@gmail.com> Authored: Mon Aug 14 15:49:23 2017 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Mon Aug 21 10:40:03 2017 +0200 ---------------------------------------------------------------------- .../component/restlet/MethodBasedRouter.java | 6 +++-- .../component/restlet/RestletComponent.java | 26 +++++++++++--------- .../restlet/RestRestletHttpOptionsTest.java | 5 ++-- 3 files changed, 21 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/d78a658e/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 b9518c3..7e78245 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 @@ -50,13 +50,15 @@ class MethodBasedRouter extends Restlet { LOG.debug("MethodRouter ({}) received request method: {}", uriPattern, method); Restlet target = routes.get(method); + if (target == null || org.restlet.data.Method.OPTIONS.equals(method)) { + // must include list of allowed methods + response.setAllowedMethods(routes.keySet()); + } if (target != null) { target.handle(request, response); } 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/d78a658e/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java index e2f1b71..c01a1ea 100644 --- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java +++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java @@ -22,6 +22,7 @@ import java.security.GeneralSecurityException; import java.security.InvalidParameterException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -284,13 +285,16 @@ public class RestletComponent extends HeaderFilterStrategyComponent implements R } for (MethodBasedRouter router : routesToRemove) { + + List<Method> methods = new ArrayList<>(); + Collections.addAll(methods, Method.OPTIONS); if (endpoint.getRestletMethods() != null) { - Method[] methods = endpoint.getRestletMethods(); - for (Method method : methods) { - router.removeRoute(method); - } + Collections.addAll(methods, endpoint.getRestletMethods()); } else { - router.removeRoute(endpoint.getRestletMethod()); + Collections.addAll(methods, endpoint.getRestletMethod()); + } + for (Method method : methods) { + router.removeRoute(method); } if (LOG.isDebugEnabled()) { @@ -488,14 +492,14 @@ public class RestletComponent extends HeaderFilterStrategyComponent implements R LOG.debug("Target has been set to guard: {}", guard); } + List<Method> methods = new ArrayList<>(); + Collections.addAll(methods, Method.OPTIONS); if (endpoint.getRestletMethods() != null) { - Method[] methods = endpoint.getRestletMethods(); - for (Method method : methods) { - router.addRoute(method, target); - LOG.debug("Attached restlet uriPattern: {} method: {}", uriPattern, method); - } + Collections.addAll(methods, endpoint.getRestletMethods()); } else { - Method method = endpoint.getRestletMethod(); + Collections.addAll(methods, endpoint.getRestletMethod()); + } + for (Method method : methods) { router.addRoute(method, target); LOG.debug("Attached restlet uriPattern: {} method: {}", uriPattern, method); } http://git-wip-us.apache.org/repos/asf/camel/blob/d78a658e/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRestletHttpOptionsTest.java ---------------------------------------------------------------------- diff --git a/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRestletHttpOptionsTest.java b/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRestletHttpOptionsTest.java index e862573..6d1ecad 100644 --- a/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRestletHttpOptionsTest.java +++ b/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestRestletHttpOptionsTest.java @@ -25,7 +25,6 @@ import org.junit.Test; /** * @version */ -@Ignore("Not supported by camel-restlet yet") public class RestRestletHttpOptionsTest extends RestletTestSupport { @Test @@ -38,12 +37,12 @@ public class RestRestletHttpOptionsTest extends RestletTestSupport { }); assertEquals(200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE)); - assertEquals("OPTIONS,GET", exchange.getOut().getHeader("ALLOW")); + assertEquals("GET, OPTIONS", exchange.getOut().getHeader("ALLOW")); assertEquals("", exchange.getOut().getBody(String.class)); exchange = fluentTemplate.to("http://localhost:" + portNum + "/users/v1/123").withHeader(Exchange.HTTP_METHOD, "OPTIONS").send(); assertEquals(200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE)); - assertEquals("OPTIONS,PUT", exchange.getOut().getHeader("ALLOW")); + assertEquals("OPTIONS, PUT", exchange.getOut().getHeader("ALLOW")); assertEquals("", exchange.getOut().getBody(String.class)); }