Repository: camel Updated Branches: refs/heads/master 23840df83 -> 0da7ade0b
[CAMEL-7506] [NettyHttp] Remove headerFilterStrategy option after resolving. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0da7ade0 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0da7ade0 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0da7ade0 Branch: refs/heads/master Commit: 0da7ade0b994a9404054aa0b3bb6eee02183994b Parents: 23840df Author: Henryk Konsek <hekon...@gmail.com> Authored: Fri Jun 13 08:29:34 2014 +0200 Committer: Henryk Konsek <hekon...@gmail.com> Committed: Fri Jun 13 08:29:34 2014 +0200 ---------------------------------------------------------------------- .../netty/http/NettyHttpComponent.java | 6 +- ...ettyHttpHeaderFilterStrategyRemovalTest.java | 78 ++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/0da7ade0/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java index 07c9923..01abb3d 100644 --- a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java +++ b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpComponent.java @@ -64,6 +64,8 @@ public class NettyHttpComponent extends NettyComponent implements HeaderFilterSt config = new NettyHttpConfiguration(); } + HeaderFilterStrategy headerFilterStrategy = resolveAndRemoveReferenceParameter(parameters, "headerFilterStrategy", HeaderFilterStrategy.class); + // merge any custom bootstrap configuration on the config NettyServerBootstrapConfiguration bootstrapConfiguration = resolveAndRemoveReferenceParameter(parameters, "bootstrapConfiguration", NettyServerBootstrapConfiguration.class); if (bootstrapConfiguration != null) { @@ -106,7 +108,9 @@ public class NettyHttpComponent extends NettyComponent implements HeaderFilterSt DefaultNettyHttpBinding nettyHttpBinding = (DefaultNettyHttpBinding)getNettyHttpBinding(); answer.setNettyHttpBinding(nettyHttpBinding.copy()); } - if (answer.getHeaderFilterStrategy() == null) { + if (headerFilterStrategy != null) { + answer.setHeaderFilterStrategy(headerFilterStrategy); + } else if (answer.getHeaderFilterStrategy() == null) { answer.setHeaderFilterStrategy(getHeaderFilterStrategy()); } http://git-wip-us.apache.org/repos/asf/camel/blob/0da7ade0/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpHeaderFilterStrategyRemovalTest.java ---------------------------------------------------------------------- diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpHeaderFilterStrategyRemovalTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpHeaderFilterStrategyRemovalTest.java new file mode 100644 index 0000000..4b3444c --- /dev/null +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpHeaderFilterStrategyRemovalTest.java @@ -0,0 +1,78 @@ +/** + * 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.netty.http; + +import static java.util.Collections.singleton; + +import org.apache.camel.EndpointInject; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.impl.JndiRegistry; +import org.junit.Test; + +import static org.apache.camel.Exchange.HTTP_QUERY; + +public class NettyHttpHeaderFilterStrategyRemovalTest extends BaseNettyTest { + + NettyHttpHeaderFilterStrategy headerFilterStrategy = new NettyHttpHeaderFilterStrategy(); + + @EndpointInject(uri = "mock:test") + MockEndpoint mockEndpoint; + + @Test + public void shouldRemoveStrategyOption() throws Exception { + String options = "headerFilterStrategy=#headerFilterStrategy"; + mockEndpoint.expectedMessageCount(1); + mockEndpoint.message(0).header(HTTP_QUERY).isNull(); + + template.sendBody("netty-http:http://localhost:" + getPort() + "/?" + options, "message"); + + assertMockEndpointsSatisfied(); + } + + @Test + public void shouldResolveStrategyFromParameter() throws Exception { + String headerToFilter = "foo"; + headerFilterStrategy.setOutFilter(singleton(headerToFilter)); + String options = "headerFilterStrategy=#headerFilterStrategy"; + mockEndpoint.expectedMessageCount(1); + mockEndpoint.message(0).header(headerToFilter).isNull(); + + template.sendBodyAndHeader("netty-http:http://localhost:" + getPort() + "/?" + options, "message", headerToFilter, "headerValue"); + + assertMockEndpointsSatisfied(); + } + + @Override + protected JndiRegistry createRegistry() throws Exception { + JndiRegistry registry = super.createRegistry(); + registry.bind("headerFilterStrategy", headerFilterStrategy); + return registry; + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + from("netty-http:http://0.0.0.0:{{port}}/") + .to(mockEndpoint); + } + }; + } + +}