added support for query params to spark-rest
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7ac3b362 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7ac3b362 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7ac3b362 Branch: refs/heads/camel-2.18.x Commit: 7ac3b362fc4097776e5ec264ecd96397364671d5 Parents: 2205783 Author: Jon Elliott <jonathan.elli...@capgemini.com> Authored: Thu May 25 11:35:15 2017 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu May 25 14:44:29 2017 +0200 ---------------------------------------------------------------------- .../sparkrest/DefaultSparkBinding.java | 10 +++- .../sparkrest/CamelSparkQueryParamTest.java | 51 ++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/7ac3b362/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java ---------------------------------------------------------------------- diff --git a/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java b/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java index 202fb17..b2ecfb0 100644 --- a/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java +++ b/components/camel-spark-rest/src/main/java/org/apache/camel/component/sparkrest/DefaultSparkBinding.java @@ -25,7 +25,6 @@ import java.net.URLDecoder; import java.util.Iterator; import java.util.Locale; import java.util.Map; - import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.TypeConverter; @@ -114,6 +113,15 @@ public class DefaultSparkBinding implements SparkBinding { } } + for (String key : request.queryParams()) { + String value = request.queryParams(key); + Object decoded = shouldUrlDecodeHeader(configuration, key, value, "UTF-8"); + if (headerFilterStrategy != null + && !headerFilterStrategy.applyFilterToExternalHeaders(key, decoded, exchange)) { + SparkHelper.appendHeader(headers, key, decoded); + } + } + String[] splat = request.splat(); String key = SparkConstants.SPLAT; if (headerFilterStrategy != null http://git-wip-us.apache.org/repos/asf/camel/blob/7ac3b362/components/camel-spark-rest/src/test/java/org/apache/camel/component/sparkrest/CamelSparkQueryParamTest.java ---------------------------------------------------------------------- diff --git a/components/camel-spark-rest/src/test/java/org/apache/camel/component/sparkrest/CamelSparkQueryParamTest.java b/components/camel-spark-rest/src/test/java/org/apache/camel/component/sparkrest/CamelSparkQueryParamTest.java new file mode 100644 index 0000000..f9b2004 --- /dev/null +++ b/components/camel-spark-rest/src/test/java/org/apache/camel/component/sparkrest/CamelSparkQueryParamTest.java @@ -0,0 +1,51 @@ +/** + * 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.sparkrest; + +import org.apache.camel.builder.RouteBuilder; +import org.junit.Test; + +/** + * Test based on the {@link CamelSparkParamTest} test which adds query parameters to the request. + * @author <a href="jonathan.elli...@capgemini.com">Jon Elliott</a> + */ +public class CamelSparkQueryParamTest extends BaseSparkTest { + + @Test + public void testSparkGet() throws Exception { + getMockEndpoint("mock:foo").expectedMessageCount(1); + getMockEndpoint("mock:foo").expectedHeaderReceived("name", "world"); + getMockEndpoint("mock:foo").expectedHeaderReceived("surname", "universe"); + + String out = template.requestBody("http://localhost:" + getPort() + "/hello/world?surname=universe", null, String.class); + assertEquals("Bye world", out); + + assertMockEndpointsSatisfied(); + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + from("spark-rest:get:/hello/:name") + .to("mock:foo") + .transform().simple("Bye ${header.name}"); + } + }; + } +} \ No newline at end of file