This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new a9d5643 Feature/rest dsl header default (#3904) a9d5643 is described below commit a9d5643bcb0b467391854d0edf6e83a7b2b970bf Author: Bob Paulin <b...@bobpaulin.com> AuthorDate: Thu Jun 11 01:39:15 2020 -0500 Feature/rest dsl header default (#3904) * CAMEL-15163: Add support for defaulting headers on rest dsl. * CAMEL-15163: Correct Unit Test for Default Header Override. --- .../apache/camel/model/rest/RestDefinition.java | 5 ++-- .../component/rest/FromRestDefaultValueTest.java | 29 +++++++++++++++++++++- docs/user-manual/modules/ROOT/pages/rest-dsl.adoc | 14 ++++++++++- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/model/rest/RestDefinition.java b/core/camel-core-engine/src/main/java/org/apache/camel/model/rest/RestDefinition.java index d632578..2b4b98e 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/model/rest/RestDefinition.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/model/rest/RestDefinition.java @@ -796,9 +796,10 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition> binding.setEnableCORS(getEnableCORS()); } for (RestOperationParamDefinition param : verb.getParams()) { - // register all the default values for the query parameters + // register all the default values for the query and header parameters RestParamType type = param.getType(); - if (RestParamType.query == type && ObjectHelper.isNotEmpty(param.getDefaultValue())) { + if ((RestParamType.query == type || RestParamType.header == type) + && ObjectHelper.isNotEmpty(param.getDefaultValue())) { binding.addDefaultValue(param.getName(), param.getDefaultValue()); } // register which parameters are required diff --git a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDefaultValueTest.java b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDefaultValueTest.java index 5944a68..e87d3ce 100644 --- a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDefaultValueTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestDefaultValueTest.java @@ -42,6 +42,18 @@ public class FromRestDefaultValueTest extends ContextTestSupport { assertMockEndpointsSatisfied(); } + + @Test + public void testDefaultHeaderValue() throws Exception { + getMockEndpoint("mock:bye").expectedBodiesReceived("Hello World"); + getMockEndpoint("mock:bye").expectedHeaderReceived("indicator", "disabled"); + + // the rest becomes routes and the input is a seda endpoint created by + // the DummyRestConsumerFactory + template.sendBody("seda:get-say-bye", "Hello World"); + + assertMockEndpointsSatisfied(); + } @Test public void testDefaultValueOverride() throws Exception { @@ -54,6 +66,18 @@ public class FromRestDefaultValueTest extends ContextTestSupport { assertMockEndpointsSatisfied(); } + + @Test + public void testDefaultHeaderValueOverride() throws Exception { + getMockEndpoint("mock:bye").expectedBodiesReceived("Bye World"); + getMockEndpoint("mock:bye").expectedHeaderReceived("indicator", "enabled"); + + // the rest becomes routes and the input is a seda endpoint created by + // the DummyRestConsumerFactory + template.sendBodyAndHeader("seda:get-say-bye", "Bye World", "indicator", "enabled"); + + assertMockEndpointsSatisfied(); + } @Override protected RouteBuilder createRouteBuilder() throws Exception { @@ -62,7 +86,10 @@ public class FromRestDefaultValueTest extends ContextTestSupport { public void configure() throws Exception { restConfiguration().host("localhost").enableCORS(true); - rest("/say/bye").consumes("application/json").get().param().type(RestParamType.query).name("kind").defaultValue("customer").endParam().to("mock:bye"); + rest("/say/bye").consumes("application/json").get() + .param().type(RestParamType.query).name("kind").defaultValue("customer").endParam() + .param().type(RestParamType.header).name("indicator").defaultValue("disabled").endParam() + .to("mock:bye"); } }; } diff --git a/docs/user-manual/modules/ROOT/pages/rest-dsl.adoc b/docs/user-manual/modules/ROOT/pages/rest-dsl.adoc index 2f2305d..543a918 100644 --- a/docs/user-manual/modules/ROOT/pages/rest-dsl.adoc +++ b/docs/user-manual/modules/ROOT/pages/rest-dsl.adoc @@ -776,7 +776,7 @@ onException(JsonParseException.class) .setBody().constant("Invalid json data"); ---- -== Query Parameter default Values +== Query/Header Parameter default Values You can specify default values for parameters in the rest-dsl, such as the verbose parameter below: @@ -798,6 +798,18 @@ key `verbose` then Camel will now include a header with key `verbose` and the value `false` because it was declared as the default value. This functionality is only applicable for query parameters. +From *Camel 3.3* onwards request headers may also be defaulted in the same way. + +[source,java] +---- + rest("/customers/") + .get("/{id}").to("direct:customerDetail") + .get("/{id}/orders") + .param().name("indicator").type(RestParamType.header).defaultValue("disabled").description("Feature Enabled Indicator").endParam() + .to("direct:customerOrders") + .post("/neworder").to("direct:customerNewOrder"); +---- + == Client Request Validation