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
 

Reply via email to