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 2020/09/21 19:01:15 UTC
[camel] 01/02: CAMEL-15553: camel-package-maven-plugin - To genrate
source code for configurers that can support multiple configuration
classes.
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
commit 1eb9a2824a8715986a3d210bffa2c02c275b3a13
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Sep 21 20:19:18 2020 +0200
CAMEL-15553: camel-package-maven-plugin - To genrate source code for configurers that can support multiple configuration classes.
---
.../packaging/PropertyConfigurerGenerator.java | 35 +++++++++++++++-------
1 file changed, 25 insertions(+), 10 deletions(-)
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PropertyConfigurerGenerator.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PropertyConfigurerGenerator.java
index cf4f6df..c9d0fee 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PropertyConfigurerGenerator.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PropertyConfigurerGenerator.java
@@ -20,7 +20,8 @@ import java.io.IOException;
import java.io.Writer;
import java.util.Collection;
import java.util.Comparator;
-import java.util.Optional;
+import java.util.LinkedHashSet;
+import java.util.Set;
import java.util.stream.Collectors;
import org.apache.camel.tooling.model.BaseOptionModel;
@@ -62,10 +63,9 @@ public final class PropertyConfigurerGenerator {
if (component) {
// if its a component configurer then configuration classes are optional and we need
// to generate a method that can lazy create a new configuration if it was null
- Optional<? extends BaseOptionModel> configurationOption = findConfiguration(options);
- if (configurationOption.isPresent()) {
- w.write(createGetOrCreateConfiguration(en, configurationOption.get().getConfigurationClass(),
- configurationOption.get().getConfigurationField()));
+ for (BaseOptionModel bo : findConfigurations(options)) {
+ w.write(createGetOrCreateConfiguration(en, bo.getConfigurationClass(),
+ bo.getConfigurationField()));
w.write("\n");
}
}
@@ -177,8 +177,17 @@ public final class PropertyConfigurerGenerator {
w.write("\n");
}
- private static Optional<? extends BaseOptionModel> findConfiguration(Collection<? extends BaseOptionModel> options) {
- return options.stream().filter(o -> o.getConfigurationField() != null).findFirst();
+ private static Set<BaseOptionModel> findConfigurations(Collection<? extends BaseOptionModel> options) {
+ final Set<String> found = new LinkedHashSet<>();
+ final Set<BaseOptionModel> answer = new LinkedHashSet<>();
+ for (BaseOptionModel bo : options.stream().filter(o -> o.getConfigurationField() != null)
+ .collect(Collectors.toList())) {
+ if (!found.contains(bo.getConfigurationClass())) {
+ found.add(bo.getConfigurationClass());
+ answer.add(bo);
+ }
+ }
+ return answer;
}
private static String setterLambda(
@@ -191,7 +200,9 @@ public final class PropertyConfigurerGenerator {
type = type.replace('$', '.');
if (configurationField != null) {
if (component) {
- getOrSet = "getOrCreateConfiguration(target).set" + getOrSet;
+ String methodName
+ = "getOrCreate" + Character.toUpperCase(configurationField.charAt(0)) + configurationField.substring(1);
+ getOrSet = methodName + "(target).set" + getOrSet;
} else {
getOrSet = "target.get" + Character.toUpperCase(configurationField.charAt(0)) + configurationField.substring(1)
+ "().set" + getOrSet;
@@ -222,7 +233,9 @@ public final class PropertyConfigurerGenerator {
}
if (configurationField != null) {
if (component) {
- getOrSet = "getOrCreateConfiguration(target)." + prefix + getOrSet;
+ String methodName
+ = "getOrCreate" + Character.toUpperCase(configurationField.charAt(0)) + configurationField.substring(1);
+ getOrSet = methodName + "(target)." + prefix + getOrSet;
} else {
getOrSet = "target.get" + Character.toUpperCase(configurationField.charAt(0)) + configurationField.substring(1)
+ "()." + prefix + getOrSet;
@@ -238,9 +251,11 @@ public final class PropertyConfigurerGenerator {
String targetClass, String configurationClass, String configurationField) {
String getter = "get" + Character.toUpperCase(configurationField.charAt(0)) + configurationField.substring(1);
String setter = "set" + Character.toUpperCase(configurationField.charAt(0)) + configurationField.substring(1);
+ String methodName
+ = "getOrCreate" + Character.toUpperCase(configurationField.charAt(0)) + configurationField.substring(1);
StringBuilder sb = new StringBuilder();
- String line1 = String.format(" private %s getOrCreateConfiguration(%s target) {\n", configurationClass, targetClass);
+ String line1 = String.format(" private %s %s(%s target) {\n", configurationClass, methodName, targetClass);
String line2 = String.format(" if (target.%s() == null) {\n", getter);
String line3 = String.format(" target.%s(new %s());\n", setter, configurationClass);
String line4 = String.format(" }\n");