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 2016/07/28 13:24:32 UTC

[2/9] camel git commit: Changed dataformats

Changed dataformats


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

Branch: refs/heads/master
Commit: 3a34d2584f0379843be7702351dd8b1ab364e1d6
Parents: 59a7130
Author: Nicola Ferraro <ni...@gmail.com>
Authored: Thu Jul 28 10:37:20 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Jul 28 15:24:18 2016 +0200

----------------------------------------------------------------------
 .../BindyCsvDataFormatAutoConfiguration.java    |  2 +-
 ...yFixedLengthDataFormatAutoConfiguration.java |  2 +-
 ...KeyValuePairDataFormatAutoConfiguration.java |  2 +-
 .../GsonDataFormatAutoConfiguration.java        |  2 +-
 .../JacksonDataFormatAutoConfiguration.java     |  2 +-
 .../JohnzonDataFormatAutoConfiguration.java     |  2 +-
 .../SnakeYAMLDataFormatAutoConfiguration.java   |  2 +-
 .../JsonDataFormatAutoConfiguration.java        |  2 +-
 .../ZipFileDataFormatAutoConfiguration.java     |  2 +-
 .../SpringBootAutoConfigurationMojo.java        | 66 +++++++++++---------
 10 files changed, 46 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/springboot/BindyCsvDataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/springboot/BindyCsvDataFormatAutoConfiguration.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/springboot/BindyCsvDataFormatAutoConfiguration.java
index ea18818..5126a88 100644
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/springboot/BindyCsvDataFormatAutoConfiguration.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/springboot/BindyCsvDataFormatAutoConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @EnableConfigurationProperties(BindyCsvDataFormatConfiguration.class)
 public class BindyCsvDataFormatAutoConfiguration {
 
-    @Bean(name = "bindy-dataformat")
+    @Bean(name = "bindy-csv-dataformat")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(BindyCsvDataFormat.class)
     public BindyCsvDataFormat configureBindyCsvDataFormat(

http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/fixed/springboot/BindyFixedLengthDataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/fixed/springboot/BindyFixedLengthDataFormatAutoConfiguration.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/fixed/springboot/BindyFixedLengthDataFormatAutoConfiguration.java
index aa52652..b29c731 100644
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/fixed/springboot/BindyFixedLengthDataFormatAutoConfiguration.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/fixed/springboot/BindyFixedLengthDataFormatAutoConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @EnableConfigurationProperties(BindyFixedLengthDataFormatConfiguration.class)
 public class BindyFixedLengthDataFormatAutoConfiguration {
 
-    @Bean(name = "bindy-dataformat")
+    @Bean(name = "bindy-fixed-dataformat")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(BindyFixedLengthDataFormat.class)
     public BindyFixedLengthDataFormat configureBindyFixedLengthDataFormat(

http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/kvp/springboot/BindyKeyValuePairDataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/kvp/springboot/BindyKeyValuePairDataFormatAutoConfiguration.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/kvp/springboot/BindyKeyValuePairDataFormatAutoConfiguration.java
index 434eca5..e2a986f 100644
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/kvp/springboot/BindyKeyValuePairDataFormatAutoConfiguration.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/kvp/springboot/BindyKeyValuePairDataFormatAutoConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @EnableConfigurationProperties(BindyKeyValuePairDataFormatConfiguration.class)
 public class BindyKeyValuePairDataFormatAutoConfiguration {
 
-    @Bean(name = "bindy-dataformat")
+    @Bean(name = "bindy-kvp-dataformat")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(BindyKeyValuePairDataFormat.class)
     public BindyKeyValuePairDataFormat configureBindyKeyValuePairDataFormat(

http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/components/camel-gson/src/main/java/org/apache/camel/component/gson/springboot/GsonDataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-gson/src/main/java/org/apache/camel/component/gson/springboot/GsonDataFormatAutoConfiguration.java b/components/camel-gson/src/main/java/org/apache/camel/component/gson/springboot/GsonDataFormatAutoConfiguration.java
index 125133e..c3c66df 100644
--- a/components/camel-gson/src/main/java/org/apache/camel/component/gson/springboot/GsonDataFormatAutoConfiguration.java
+++ b/components/camel-gson/src/main/java/org/apache/camel/component/gson/springboot/GsonDataFormatAutoConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @EnableConfigurationProperties(GsonDataFormatConfiguration.class)
 public class GsonDataFormatAutoConfiguration {
 
-    @Bean(name = "json-dataformat")
+    @Bean(name = "json-gson-dataformat")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(GsonDataFormat.class)
     public GsonDataFormat configureGsonDataFormat(CamelContext camelContext,

http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/springboot/JacksonDataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/springboot/JacksonDataFormatAutoConfiguration.java b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/springboot/JacksonDataFormatAutoConfiguration.java
index f9dbaf4..279fc73 100644
--- a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/springboot/JacksonDataFormatAutoConfiguration.java
+++ b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/springboot/JacksonDataFormatAutoConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @EnableConfigurationProperties(JacksonDataFormatConfiguration.class)
 public class JacksonDataFormatAutoConfiguration {
 
-    @Bean(name = "json-dataformat")
+    @Bean(name = "json-jackson-dataformat")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(JacksonDataFormat.class)
     public JacksonDataFormat configureJacksonDataFormat(

http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/components/camel-johnzon/src/main/java/org/apache/camel/component/johnzon/springboot/JohnzonDataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-johnzon/src/main/java/org/apache/camel/component/johnzon/springboot/JohnzonDataFormatAutoConfiguration.java b/components/camel-johnzon/src/main/java/org/apache/camel/component/johnzon/springboot/JohnzonDataFormatAutoConfiguration.java
index 15b4183..ae1eb60 100644
--- a/components/camel-johnzon/src/main/java/org/apache/camel/component/johnzon/springboot/JohnzonDataFormatAutoConfiguration.java
+++ b/components/camel-johnzon/src/main/java/org/apache/camel/component/johnzon/springboot/JohnzonDataFormatAutoConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @EnableConfigurationProperties(JohnzonDataFormatConfiguration.class)
 public class JohnzonDataFormatAutoConfiguration {
 
-    @Bean(name = "json-dataformat")
+    @Bean(name = "json-johnzon-dataformat")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(JohnzonDataFormat.class)
     public JohnzonDataFormat configureJohnzonDataFormat(

http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatAutoConfiguration.java b/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatAutoConfiguration.java
index a8df7f7..b51fc19 100644
--- a/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatAutoConfiguration.java
+++ b/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatAutoConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @EnableConfigurationProperties(SnakeYAMLDataFormatConfiguration.class)
 public class SnakeYAMLDataFormatAutoConfiguration {
 
-    @Bean(name = "yaml-dataformat")
+    @Bean(name = "yaml-snakeyaml-dataformat")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(SnakeYAMLDataFormat.class)
     public SnakeYAMLDataFormat configureSnakeYAMLDataFormat(

http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/springboot/JsonDataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/springboot/JsonDataFormatAutoConfiguration.java b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/springboot/JsonDataFormatAutoConfiguration.java
index 69c7046..9e52328 100644
--- a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/springboot/JsonDataFormatAutoConfiguration.java
+++ b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/springboot/JsonDataFormatAutoConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @EnableConfigurationProperties(JsonDataFormatConfiguration.class)
 public class JsonDataFormatAutoConfiguration {
 
-    @Bean(name = "json-dataformat")
+    @Bean(name = "json-xstream-dataformat")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(JsonDataFormat.class)
     public JsonDataFormat configureJsonDataFormat(CamelContext camelContext,

http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/springboot/ZipFileDataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/springboot/ZipFileDataFormatAutoConfiguration.java b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/springboot/ZipFileDataFormatAutoConfiguration.java
index 8871e47..59ada4e 100644
--- a/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/springboot/ZipFileDataFormatAutoConfiguration.java
+++ b/components/camel-zipfile/src/main/java/org/apache/camel/dataformat/zipfile/springboot/ZipFileDataFormatAutoConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @EnableConfigurationProperties(ZipFileDataFormatConfiguration.class)
 public class ZipFileDataFormatAutoConfiguration {
 
-    @Bean(name = "zipFile-dataformat")
+    @Bean(name = "zipfile-dataformat")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(ZipFileDataFormat.class)
     public ZipFileDataFormat configureZipFileDataFormat(

http://git-wip-us.apache.org/repos/asf/camel/blob/3a34d258/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java
index 164f870..4a299b7 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpringBootAutoConfigurationMojo.java
@@ -160,21 +160,6 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo {
 
             }
 
-            /*
-            // only create source code if the component has options that can be used in auto configuration
-            if (!model.getComponentOptions().isEmpty()) {
-
-                // use springboot as sub package name so the code is not in normal
-                // package so the Spring Boot JARs can be optional at runtime
-                int pos = model.getJavaType().lastIndexOf(".");
-                String pkg = model.getJavaType().substring(0, pos) + ".springboot";
-
-                createComponentConfigurationSource(pkg, model, overrideComponentName);
-                createComponentAutoConfigurationSource(pkg, model, Collections.singletonList(componentName));
-                createComponentSpringFactorySource(pkg, model);
-            }
-            */
-
         }
     }
 
@@ -189,25 +174,44 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo {
         // create auto configuration for the components
         if (!dataFormatNames.isEmpty()) {
             getLog().debug("Found " + dataFormatNames.size() + " dataformats");
+
+            List<DataFormatModel> allModels = new LinkedList<>();
             for (String dataFormatName : dataFormatNames) {
                 String json = loadDataFormaatJson(jsonFiles, dataFormatName);
                 if (json != null) {
                     DataFormatModel model = generateDataFormatModel(dataFormatName, json);
+                    allModels.add(model);
+                }
+            }
+
+            // Group the models by implementing classes
+            Map<String, List<DataFormatModel>> grModels = allModels.stream().collect(Collectors.groupingBy(m -> m.getJavaType()));
+            for (String dataFormatClass : grModels.keySet()) {
+                List<DataFormatModel> dfModels = grModels.get(dataFormatClass);
+                DataFormatModel model = dfModels.get(0); // They should be equivalent
+                List<String> aliases = dfModels.stream().map(m -> m.getName()).sorted().collect(Collectors.toList());
 
-                    // only create source code if the component has options that can be used in auto configuration
-                    if (!model.getDataFormatOptions().isEmpty()) {
+                // only create source code if the data format has options that can be used in auto configuration
+                if (!model.getDataFormatOptions().isEmpty()) {
 
-                        // use springboot as sub package name so the code is not in normal
-                        // package so the Spring Boot JARs can be optional at runtime
-                        int pos = model.getJavaType().lastIndexOf(".");
-                        String pkg = model.getJavaType().substring(0, pos) + ".springboot";
+                    // use springboot as sub package name so the code is not in normal
+                    // package so the Spring Boot JARs can be optional at runtime
+                    int pos = model.getJavaType().lastIndexOf(".");
+                    String pkg = model.getJavaType().substring(0, pos) + ".springboot";
 
-                        createDataFormatConfigurationSource(pkg, model);
-                        createDataFormatAutoConfigurationSource(pkg, model);
-                        createDataFormatSpringFactorySource(pkg, model);
+                    String overrideDataformatName = null;
+                    if (aliases.size() > 1) {
+                        // determine component name when there are multiple ones
+                        overrideDataformatName = model.getArtifactId().replace("camel-", "");
                     }
+
+                    createDataFormatConfigurationSource(pkg, model, overrideDataformatName);
+                    createDataFormatAutoConfigurationSource(pkg, model, aliases);
+                    createDataFormatSpringFactorySource(pkg, model);
                 }
+
             }
+
         }
     }
 
@@ -292,7 +296,7 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo {
         }
     }
 
-    private void createDataFormatConfigurationSource(String packageName, DataFormatModel model) throws MojoFailureException {
+    private void createDataFormatConfigurationSource(String packageName, DataFormatModel model, String overrideDataFormatName) throws MojoFailureException {
         final JavaClassSource javaClass = Roaster.create(JavaClassSource.class);
 
         int pos = model.getJavaType().lastIndexOf(".");
@@ -306,7 +310,7 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo {
         }
         javaClass.getJavaDoc().setFullText(doc);
 
-        String prefix = "camel.dataformat." + model.getName();
+        String prefix = "camel.dataformat." + (overrideDataFormatName != null ? overrideDataFormatName : model.getName());
         // make sure prefix is in lower case
         prefix = prefix.toLowerCase(Locale.US);
         javaClass.addAnnotation("org.springframework.boot.context.properties.ConfigurationProperties").setStringValue("prefix", prefix);
@@ -451,7 +455,7 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo {
         }
     }
 
-    private void createDataFormatAutoConfigurationSource(String packageName, DataFormatModel model) throws MojoFailureException {
+    private void createDataFormatAutoConfigurationSource(String packageName, DataFormatModel model, List<String> dataFormatAliases) throws MojoFailureException {
         final JavaClassSource javaClass = Roaster.create(JavaClassSource.class);
 
         int pos = model.getJavaType().lastIndexOf(".");
@@ -490,9 +494,13 @@ public class SpringBootAutoConfigurationMojo extends AbstractMojo {
         method.addParameter("CamelContext", "camelContext");
         method.addParameter(configurationName, "configuration");
 
+
+        // Determine all the aliases
         // adding the '-dataformat' suffix to prevent collision with component names
-        method.addAnnotation(Bean.class).setStringValue("name", model.getModelName() + "-dataformat");
-        ;
+        String[] springBeanAliases = dataFormatAliases.stream().map(alias -> alias + "-dataformat").toArray(size -> new String[size]);
+
+        method.addAnnotation(Bean.class).setStringArrayValue("name", springBeanAliases);
+
         method.addAnnotation(ConditionalOnClass.class).setLiteralValue("value", "CamelContext.class");
         method.addAnnotation(ConditionalOnMissingBean.class).setLiteralValue("value", model.getShortJavaType() + ".class");