You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/11/03 12:41:50 UTC

[camel] branch master updated: CAMEL-11991: camel-swagger - Allow to specify data format so you can say a parameter is a date, password etc.

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 a1d661c  CAMEL-11991: camel-swagger - Allow to specify data format so you can say a parameter is a date, password etc.
a1d661c is described below

commit a1d661c4d33f826c6e88c468c9a0f7c6eafe635d
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Nov 3 13:40:02 2017 +0100

    CAMEL-11991: camel-swagger - Allow to specify data format so you can say a parameter is a date, password etc.
---
 .../model/rest/RestOperationParamDefinition.java   | 24 ++++++++++++++++++++++
 .../RestOperationResponseHeaderDefinition.java     | 24 ++++++++++++++++++++++
 .../apache/camel/swagger/RestSwaggerReader.java    | 22 ++++++++++++++++++++
 .../camel/swagger/RestSwaggerReaderModelTest.java  |  6 ++++--
 .../camel/swagger/RestSwaggerReaderTest.java       |  2 +-
 5 files changed, 75 insertions(+), 3 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParamDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParamDefinition.java
index 94335c3..dbc969e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParamDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParamDefinition.java
@@ -74,6 +74,9 @@ public class RestOperationParamDefinition {
     @Metadata(defaultValue = "string")
     private String dataType;
 
+    @XmlAttribute
+    private String dataFormat;
+
     @XmlElementWrapper(name = "allowableValues")
     @XmlElement(name = "value")
     private List<String> allowableValues;
@@ -181,6 +184,17 @@ public class RestOperationParamDefinition {
         this.dataType = dataType;
     }
 
+    public String getDataFormat() {
+        return dataFormat;
+    }
+
+    /**
+     * Sets the Swagger Parameter data format.
+     */
+    public void setDataFormat(String dataFormat) {
+        this.dataFormat = dataFormat;
+    }
+
     public List<String> getAllowableValues() {
         if (allowableValues != null) {
             return allowableValues;
@@ -286,6 +300,16 @@ public class RestOperationParamDefinition {
     }
 
     /**
+     * The data format of the parameter such as <tt>binary</tt>, <tt>date</tt>, <tt>date-time</tt>, <tt>password</tt>.
+     * The format is usually derived from the dataType alone. However you can set this option for more fine grained control
+     * of the format in use.
+     */
+    public RestOperationParamDefinition dataFormat(String type) {
+        setDataType(type);
+        return this;
+    }
+
+    /**
      * Allowed values of the parameter when its an enum type
      */
     public RestOperationParamDefinition allowableValues(List<String> allowableValues) {
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationResponseHeaderDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationResponseHeaderDefinition.java
index b3849c7..b4ca98e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationResponseHeaderDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationResponseHeaderDefinition.java
@@ -62,6 +62,9 @@ public class RestOperationResponseHeaderDefinition {
     @Metadata(defaultValue = "string")
     private String dataType;
 
+    @XmlAttribute
+    private String dataFormat;
+
     @XmlElementWrapper(name = "allowableValues")
     @XmlElement(name = "value")
     private List<String> allowableValues;
@@ -138,6 +141,17 @@ public class RestOperationResponseHeaderDefinition {
         this.dataType = dataType;
     }
 
+    public String getDataFormat() {
+        return dataFormat;
+    }
+
+    /**
+     * Sets the Swagger Parameter data format.
+     */
+    public void setDataFormat(String dataFormat) {
+        this.dataFormat = dataFormat;
+    }
+
     public List<String> getAllowableValues() {
         if (allowableValues != null) {
             return allowableValues;
@@ -207,6 +221,16 @@ public class RestOperationResponseHeaderDefinition {
     }
 
     /**
+     * The data format of the parameter such as <tt>binary</tt>, <tt>date</tt>, <tt>date-time</tt>, <tt>password</tt>.
+     * The format is usually derived from the dataType alone. However you can set this option for more fine grained control
+     * of the format in use.
+     */
+    public RestOperationResponseHeaderDefinition dataFormat(String type) {
+        setDataType(type);
+        return this;
+    }
+
+    /**
      * Allowed values of the header when its an enum type
      */
     public RestOperationResponseHeaderDefinition allowableValues(List<String> allowableValues) {
diff --git a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java
index aa2122e..3f036d0 100644
--- a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java
+++ b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerReader.java
@@ -262,6 +262,9 @@ public class RestSwaggerReader {
 
                         if (param.getDataType() != null) {
                             serializableParameter.setType(param.getDataType());
+                            if (param.getDataFormat() != null) {
+                                serializableParameter.setFormat(param.getDataFormat());
+                            }
                             if (param.getDataType().equalsIgnoreCase("array")) {
                                 if (param.getArrayType() != null) {
                                     if (param.getArrayType().equalsIgnoreCase("string")) {
@@ -383,9 +386,13 @@ public class RestSwaggerReader {
                 for (RestOperationResponseHeaderDefinition header : msg.getHeaders()) {
                     String name = header.getName();
                     String type = header.getDataType();
+                    String format = header.getDataFormat();
                     if ("string".equals(type)) {
                         StringProperty sp = new StringProperty();
                         sp.setName(name);
+                        if (format != null) {
+                            sp.setFormat(format);
+                        }
                         sp.setDescription(header.getDescription());
                         if (header.getAllowableValues() != null) {
                             sp.setEnum(header.getAllowableValues());
@@ -398,6 +405,9 @@ public class RestSwaggerReader {
                     } else if ("int".equals(type) || "integer".equals(type)) {
                         IntegerProperty ip = new IntegerProperty();
                         ip.setName(name);
+                        if (format != null) {
+                            ip.setFormat(format);
+                        }
                         ip.setDescription(header.getDescription());
 
                         List<Integer> values;
@@ -416,6 +426,9 @@ public class RestSwaggerReader {
                     } else if ("long".equals(type)) {
                         LongProperty lp = new LongProperty();
                         lp.setName(name);
+                        if (format != null) {
+                            lp.setFormat(format);
+                        }
                         lp.setDescription(header.getDescription());
 
                         List<Long> values;
@@ -434,6 +447,9 @@ public class RestSwaggerReader {
                     } else if ("float".equals(type)) {
                         FloatProperty fp = new FloatProperty();
                         fp.setName(name);
+                        if (format != null) {
+                            fp.setFormat(format);
+                        }
                         fp.setDescription(header.getDescription());
 
                         List<Float> values;
@@ -452,6 +468,9 @@ public class RestSwaggerReader {
                     } else if ("double".equals(type)) {
                         DoubleProperty dp = new DoubleProperty();
                         dp.setName(name);
+                        if (format != null) {
+                            dp.setFormat(format);
+                        }
                         dp.setDescription(header.getDescription());
 
                         List<Double> values;
@@ -470,6 +489,9 @@ public class RestSwaggerReader {
                     } else if ("boolean".equals(type)) {
                         BooleanProperty bp = new BooleanProperty();
                         bp.setName(name);
+                        if (format != null) {
+                            bp.setFormat(format);
+                        }
                         bp.setDescription(header.getDescription());
                         // add example
                         if (header.getExample() != null) {
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
index 2ad727a..f0352a1 100644
--- a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderModelTest.java
@@ -46,9 +46,10 @@ public class RestSwaggerReaderModelTest extends CamelTestSupport {
                 rest("/user").tag("dude").description("User rest service")
                     .consumes("application/json").produces("application/json")
 
-                    .get("/{id}").description("Find user by id").outType(User.class)
+                    .get("/{id}/{date}").description("Find user by id and date").outType(User.class)
                         .responseMessage().message("The user returned").endResponseMessage()
-                        .param().name("id").type(RestParamType.path).description("The id of the user to get").dataType("integer").endParam()
+                        .param().name("id").type(RestParamType.path).description("The id of the user to get").endParam()
+                        .param().name("date").type(RestParamType.path).description("The date").dataFormat("date").endParam()
                         .to("bean:userService?method=getUser(${header.id})")
 
                     .put().description("Updates or create a user").type(User.class)
@@ -88,6 +89,7 @@ public class RestSwaggerReaderModelTest extends CamelTestSupport {
         assertTrue(json.contains("\"$ref\" : \"#/definitions/User\""));
         assertTrue(json.contains("\"x-className\""));
         assertTrue(json.contains("\"format\" : \"org.apache.camel.swagger.User\""));
+        assertTrue(json.contains("\"type\" : \"date\""));
         assertFalse(json.contains("\"enum\""));
         context.stop();
     }
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderTest.java
index 42ec223..5099136 100644
--- a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderTest.java
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/RestSwaggerReaderTest.java
@@ -52,7 +52,7 @@ public class RestSwaggerReaderTest extends CamelTestSupport {
                                 .example("success", "123").example("error", "-1").endResponseMessage()
                             .to("log:bye")
                         .post("/bye").description("To update the greeting message").consumes("application/xml").produces("application/xml")
-                            .param().name("greeting").type(RestParamType.body).dataType("string").description("Message to use as greeting").example("application/xml","<hello>Hi</hello>").endParam()
+                            .param().name("greeting").type(RestParamType.body).dataType("string").description("Message to use as greeting").example("application/xml", "<hello>Hi</hello>").endParam()
                             .to("log:bye");
             }
         };

-- 
To stop receiving notification emails like this one, please contact
['"commits@camel.apache.org" <co...@camel.apache.org>'].