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 <[email protected]>
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