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");