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/11/16 15:07:01 UTC

[camel-spring-boot] 03/06: CAMEL-15766: camel-spring-boot - Support complex types to be referenced via # lookup from configuration files.

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-spring-boot.git

commit 080ed8d3f3abe70e268e93d91069a118da9009b3
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Nov 16 14:45:16 2020 +0100

    CAMEL-15766: camel-spring-boot - Support complex types to be referenced via # lookup from configuration files.
---
 .../maven/SpringBootAutoConfigurationMojo.java     | 82 ++++++++++------------
 1 file changed, 37 insertions(+), 45 deletions(-)

diff --git a/tooling/camel-spring-boot-generator-maven-plugin/src/main/java/org/apache/camel/springboot/maven/SpringBootAutoConfigurationMojo.java b/tooling/camel-spring-boot-generator-maven-plugin/src/main/java/org/apache/camel/springboot/maven/SpringBootAutoConfigurationMojo.java
index 2a75ff7..95229ac 100644
--- a/tooling/camel-spring-boot-generator-maven-plugin/src/main/java/org/apache/camel/springboot/maven/SpringBootAutoConfigurationMojo.java
+++ b/tooling/camel-spring-boot-generator-maven-plugin/src/main/java/org/apache/camel/springboot/maven/SpringBootAutoConfigurationMojo.java
@@ -41,6 +41,7 @@ import java.util.stream.Stream;
 import java.util.zip.ZipEntry;
 
 import org.apache.camel.maven.packaging.AbstractGeneratorMojo;
+import org.apache.camel.tooling.model.BaseOptionModel;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.ComponentModel.ComponentOptionModel;
 import org.apache.camel.tooling.model.DataFormatModel;
@@ -1364,13 +1365,11 @@ public class SpringBootAutoConfigurationMojo extends AbstractSpringBootGenerator
         sb.append("}\n");
         sb.append("ref = ref.startsWith(\"#bean:\") ? ref.substring(6) : ref.substring(1);\n");
         sb.append("switch (targetType.getName()) {\n");
-        for (ComponentOptionModel option : model.getComponentOptions()) {
-            // is it a complex type
-            if (isComplexType(option)) {
-                String type = getJavaType(option);
-                sb.append("    case \"").append(type).append("\": return camelContext.getRegistry().lookupByNameAndType(ref, ").append(type).append(".class);\n");
-            }
-        }
+        // we need complex types only which unique types only
+        Stream<String> s = model.getComponentOptions().stream().filter(this::isComplexType).map(BaseOptionModel::getJavaType).distinct();
+        s.forEach(type -> {
+            sb.append("    case \"").append(type).append("\": return camelContext.getRegistry().lookupByNameAndType(ref, ").append(type).append(".class);\n");
+        });
         sb.append("}\n");
         sb.append("return null;\n");
         return sb.toString();
@@ -1387,13 +1386,11 @@ public class SpringBootAutoConfigurationMojo extends AbstractSpringBootGenerator
         sb.append("}\n");
         sb.append("ref = ref.startsWith(\"#bean:\") ? ref.substring(6) : ref.substring(1);\n");
         sb.append("switch (targetType.getName()) {\n");
-        for (DataFormatOptionModel option : model.getOptions()) {
-            // is it a complex type
-            if (isComplexType(option)) {
-                String type = getJavaType(option);
-                sb.append("    case \"").append(type).append("\": return camelContext.getRegistry().lookupByNameAndType(ref, ").append(type).append(".class);\n");
-            }
-        }
+        // we need complex types only which unique types only
+        Stream<String> s = model.getOptions().stream().filter(this::isComplexType).map(BaseOptionModel::getJavaType).distinct();
+        s.forEach(type -> {
+            sb.append("    case \"").append(type).append("\": return camelContext.getRegistry().lookupByNameAndType(ref, ").append(type).append(".class);\n");
+        });
         sb.append("}\n");
         sb.append("return null;\n");
         return sb.toString();
@@ -1410,13 +1407,11 @@ public class SpringBootAutoConfigurationMojo extends AbstractSpringBootGenerator
         sb.append("}\n");
         sb.append("ref = ref.startsWith(\"#bean:\") ? ref.substring(6) : ref.substring(1);\n");
         sb.append("switch (targetType.getName()) {\n");
-        for (LanguageOptionModel option : model.getOptions()) {
-            // is it a complex type
-            if (isComplexType(option)) {
-                String type = getJavaType(option);
-                sb.append("    case \"").append(type).append("\": return camelContext.getRegistry().lookupByNameAndType(ref, ").append(type).append(".class);\n");
-            }
-        }
+        // we need complex types only which unique types only
+        Stream<String> s = model.getOptions().stream().filter(this::isComplexType).map(BaseOptionModel::getJavaType).distinct();
+        s.forEach(type -> {
+            sb.append("    case \"").append(type).append("\": return camelContext.getRegistry().lookupByNameAndType(ref, ").append(type).append(".class);\n");
+        });
         sb.append("}\n");
         sb.append("return null;\n");
         return sb.toString();
@@ -1425,14 +1420,13 @@ public class SpringBootAutoConfigurationMojo extends AbstractSpringBootGenerator
     private String createConverterPairBody(ComponentModel model) {
         StringBuilder sb = new StringBuilder();
         sb.append("Set<ConvertiblePair> answer = new LinkedHashSet<>();\n");
-        for (ComponentOptionModel option : model.getComponentOptions()) {
-            // is it a complex type
-            if (isComplexType(option)) {
-                sb.append("answer.add(new ConvertiblePair(String.class, ");
-                sb.append(option.getJavaType());
-                sb.append(".class));\n");
-            }
-        }
+        // we need complex types only which unique types only
+        Stream<String> s = model.getOptions().stream().filter(this::isComplexType).map(BaseOptionModel::getJavaType).distinct();
+        s.forEach(type -> {
+            sb.append("answer.add(new ConvertiblePair(String.class, ");
+            sb.append(type);
+            sb.append(".class));\n");
+        });
         sb.append("return answer;\n");
         return sb.toString();
     }
@@ -1440,14 +1434,13 @@ public class SpringBootAutoConfigurationMojo extends AbstractSpringBootGenerator
     private String createConverterPairBody(DataFormatModel model) {
         StringBuilder sb = new StringBuilder();
         sb.append("Set<ConvertiblePair> answer = new LinkedHashSet<>();\n");
-        for (DataFormatOptionModel option : model.getOptions()) {
-            // is it a complex type
-            if (isComplexType(option)) {
-                sb.append("answer.add(new ConvertiblePair(String.class, ");
-                sb.append(option.getJavaType());
-                sb.append(".class));\n");
-            }
-        }
+        // we need complex types only which unique types only
+        Stream<String> s = model.getOptions().stream().filter(this::isComplexType).map(BaseOptionModel::getJavaType).distinct();
+        s.forEach(type -> {
+            sb.append("answer.add(new ConvertiblePair(String.class, ");
+            sb.append(type);
+            sb.append(".class));\n");
+        });
         sb.append("return answer;\n");
         return sb.toString();
     }
@@ -1455,14 +1448,13 @@ public class SpringBootAutoConfigurationMojo extends AbstractSpringBootGenerator
     private String createConverterPairBody(LanguageModel model) {
         StringBuilder sb = new StringBuilder();
         sb.append("Set<ConvertiblePair> answer = new LinkedHashSet<>();\n");
-        for (LanguageOptionModel option : model.getOptions()) {
-            // is it a complex type
-            if (isComplexType(option)) {
-                sb.append("answer.add(new ConvertiblePair(String.class, ");
-                sb.append(option.getJavaType());
-                sb.append(".class));\n");
-            }
-        }
+        // we need complex types only which unique types only
+        Stream<String> s = model.getOptions().stream().filter(this::isComplexType).map(BaseOptionModel::getJavaType).distinct();
+        s.forEach(type -> {
+            sb.append("answer.add(new ConvertiblePair(String.class, ");
+            sb.append(type);
+            sb.append(".class));\n");
+        });
         sb.append("return answer;\n");
         return sb.toString();
     }