CAMEL-10062: For specialized Dataformats, provide default value in catalog

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f353c8c5
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f353c8c5
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f353c8c5

Branch: refs/heads/master
Commit: f353c8c50b28716b951e369d8d633c7b03fde72e
Parents: da0fc7b
Author: Claus Ibsen <davscl...@apache.org>
Authored: Tue Jun 21 09:52:07 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Jun 21 10:18:33 2016 +0200

----------------------------------------------------------------------
 .../maven/packaging/PackageDataFormatMojo.java  | 48 ++++++++++++++++++--
 1 file changed, 45 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/f353c8c5/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
----------------------------------------------------------------------
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
index 6ae8d39..c6dfcff 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java
@@ -199,6 +199,11 @@ public class PackageDataFormatMojo extends AbstractMojo {
 
                             // build json schema for the data format
                             String properties = after(json, "  \"properties\": 
{");
+
+                            // special prepare for bindy/json properties
+                            properties = prepareBindyProperties(name, 
properties);
+                            properties = prepareJsonProperties(name, 
properties);
+
                             String schema = 
createParameterJsonSchema(dataFormatModel, properties);
                             log.debug("JSon schema\n" + schema);
 
@@ -270,6 +275,43 @@ public class PackageDataFormatMojo extends AbstractMojo {
         }
     }
 
+    private static String prepareBindyProperties(String name, String 
properties) {
+        String bindy = "\"enum\": [ \"Csv\", \"Fixed\", \"KeyValue\" ], 
\"deprecated\": \"false\", \"secret\": \"false\"";
+        String bindyCsv = "\"enum\": [ \"Csv\", \"Fixed\", \"KeyValue\" ], 
\"deprecated\": \"false\", \"secret\": \"false\", \"defaultValue\": \"Csv\"";
+        String bindyFixed = "\"enum\": [ \"Csv\", \"Fixed\", \"KeyValue\" ], 
\"deprecated\": \"false\", \"secret\": \"false\", \"defaultValue\": \"Fixed\"";
+        String bindyKvp = "\"enum\": [ \"Csv\", \"Fixed\", \"KeyValue\" ], 
\"deprecated\": \"false\", \"secret\": \"false\", \"defaultValue\": 
\"KeyValue\"";
+
+        if ("bindy-csv".equals(name)) {
+            properties = properties.replace(bindy, bindyCsv);
+        } else if ("bindy-fixed".equals(name)) {
+            properties = properties.replace(bindy, bindyFixed);
+        } else if ("bindy-kvp".equals(name)) {
+            properties = properties.replace(bindy, bindyKvp);
+        }
+
+        return properties;
+    }
+
+    private static String prepareJsonProperties(String name, String 
properties) {
+        String json = "\"enum\": [ \"Gson\", \"Jackson\", \"Johnzon\", 
\"XStream\" ], \"deprecated\": \"false\", \"secret\": \"false\"";
+        String jsonGson = "\"enum\": [ \"Gson\", \"Jackson\", \"Johnzon\", 
\"XStream\" ], \"deprecated\": \"false\", \"secret\": \"false\", 
\"defaultValue\": \"Gson\"";
+        String jsonJackson = "\"enum\": [ \"Gson\", \"Jackson\", \"Johnzon\", 
\"XStream\" ], \"deprecated\": \"false\", \"secret\": \"false\", 
\"defaultValue\": \"Jackson\"";
+        String jsonJohnzon = "\"enum\": [ \"Gson\", \"Jackson\", \"Johnzon\", 
\"XStream\" ], \"deprecated\": \"false\", \"secret\": \"false\", 
\"defaultValue\": \"Johnzon\"";
+        String jsonXStream = "\"enum\": [ \"Gson\", \"Jackson\", \"Johnzon\", 
\"XStream\" ], \"deprecated\": \"false\", \"secret\": \"false\", 
\"defaultValue\": \"XStream\"";
+
+        if ("json-gson".equals(name)) {
+            properties = properties.replace(json, jsonGson);
+        } else if ("json-jackson".equals(name)) {
+            properties = properties.replace(json, jsonJackson);
+        } else if ("json-johnzon".equals(name)) {
+            properties = properties.replace(json, jsonJohnzon);
+        } else if ("json-xstream".equals(name)) {
+            properties = properties.replace(json, jsonXStream);
+        }
+
+        return properties;
+    }
+
     private static String readClassFromCamelResource(File file, StringBuilder 
buffer, BuildContext buildContext) throws MojoExecutionException {
         // skip directories as there may be a sub .resolver directory
         if (file.isDirectory()) {
@@ -303,7 +345,7 @@ public class PackageDataFormatMojo extends AbstractMojo {
 
     private static String asModelName(String name) {
         // special for some data formats
-        if ("json-gson".equals(name) || "json-jackson".equals(name) || 
"json-xstream".equals(name) || "json-johnzon".equals(name)) {
+        if ("json-gson".equals(name) || "json-jackson".equals(name) || 
"json-johnzon".equals(name) || "json-xstream".equals(name)) {
             return "json";
         } else if ("bindy-csv".equals(name) || "bindy-fixed".equals(name) || 
"bindy-kvp".equals(name)) {
             return "bindy";
@@ -322,10 +364,10 @@ public class PackageDataFormatMojo extends AbstractMojo {
             return "JSon GSon";
         } else if ("json-jackson".equals(name)) {
             return "JSon Jackson";
-        } else if ("json-xstream".equals(name)) {
-            return "JSon XStream";
         } else if ("json-johnzon".equals(name)) {
             return "JSon Johnzon";
+        } else if ("json-xstream".equals(name)) {
+            return "JSon XStream";
         } else if ("bindy-csv".equals(name)) {
             return "Bindy CSV";
         } else if ("bindy-fixed".equals(name)) {

Reply via email to