This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch CAMEL-13870
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/CAMEL-13870 by this push:
     new 8d699bb  CAMEL-13870: Fast property configuration of Camel endpoints. 
Work in progress.
8d699bb is described below

commit 8d699bb0bf23592fadd1e7101f0a0b4c82b386c4
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Aug 22 14:21:43 2019 +0200

    CAMEL-13870: Fast property configuration of Camel endpoints. Work in 
progress.
---
 .../src/main/docs/spring-boot.adoc                 |  4 ++-
 .../spring/boot/CamelConfigurationProperties.java  | 14 ++++++++
 .../camel/main/DefaultConfigurationProperties.java | 19 +++++++++++
 .../apt/EndpointPropertyConfigurerGenerator.java   | 38 +++++++++++++++-------
 4 files changed, 63 insertions(+), 12 deletions(-)

diff --git a/components/camel-spring-boot/src/main/docs/spring-boot.adoc 
b/components/camel-spring-boot/src/main/docs/spring-boot.adoc
index 155da7f..6715705 100644
--- a/components/camel-spring-boot/src/main/docs/spring-boot.adoc
+++ b/components/camel-spring-boot/src/main/docs/spring-boot.adoc
@@ -89,7 +89,7 @@ When using Spring Boot make sure to use the following Maven 
dependency to have s
 ----
 
 
-The component supports 127 options, which are listed below.
+The component supports 129 options, which are listed below.
 
 
 
@@ -146,6 +146,8 @@ The component supports 127 options, which are listed below.
 | *camel.springboot.allow-use-original-message* | Sets whether to allow access 
to the original message from Camel's error handler, or from 
org.apache.camel.spi.UnitOfWork.getOriginalInMessage(). Turning this off can 
optimize performance, as defensive copy of the original message is not needed. 
Default is false. | false | Boolean
 | *camel.springboot.auto-startup* | Sets whether the object should 
automatically start when Camel starts. Important: Currently only routes can be 
disabled, as CamelContext's are always started. Note: When setting auto startup 
false on CamelContext then that takes precedence and no routes is started. You 
would need to start CamelContext explicit using the 
org.apache.camel.CamelContext.start() method, to start the context, and then 
you would need to start the routes manually using Camelcon [...]
 | *camel.springboot.backlog-tracing* | Sets whether backlog tracing is enabled 
or not. Default is false. | false | Boolean
+| *camel.springboot.bean-introspection-extended-statistics* | Sets whether 
bean introspection uses extended statistics. The default is false. | false | 
Boolean
+| *camel.springboot.bean-introspection-logging-level* | Sets the logging level 
used by bean introspection, logging activity of its usage. The default is 
TRACE. |  | LoggingLevel
 | *camel.springboot.consumer-template-cache-size* | Consumer template 
endpoints cache size. | 1000 | Integer
 | *camel.springboot.duration-max-idle-seconds* | To specify for how long time 
in seconds Camel can be idle before automatic terminating the JVM. You can use 
this to run Spring Boot for a short while. | 0 | Integer
 | *camel.springboot.duration-max-messages* | To specify how many messages to 
process by Camel before automatic terminating the JVM. You can use this to run 
Spring Boot for a short while. | 0 | Integer
diff --git 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
index 8e884a6..b20a47b 100644
--- 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
+++ 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.spring.boot;
 
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.main.DefaultConfigurationProperties;
 import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -444,6 +445,19 @@ public class CamelConfigurationProperties extends 
DefaultConfigurationProperties
      */
     private String threadNamePattern;
 
+    /**
+     * Sets whether bean introspection uses extended statistics.
+     * The default is false.
+     */
+    private boolean beanIntrospectionExtendedStatistics;
+
+    /**
+     * Sets the logging level used by bean introspection, logging activity of 
its usage.
+     * The default is TRACE.
+     */
+    private LoggingLevel beanIntrospectionLoggingLevel;
+
+
     // Getters & setters
     // -----------------
 
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
 
b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
index 5be730d..3e92f77 100644
--- 
a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
+++ 
b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java
@@ -1149,4 +1149,23 @@ public abstract class DefaultConfigurationProperties<T> {
         this.routeFilterExcludePattern = routeFilterExcludePattern;
         return (T) this;
     }
+
+    /**
+     * Sets whether bean introspection uses extended statistics.
+     * The default is false.
+     */
+    public T withBeanIntrospectionExtendedStatistics(boolean 
beanIntrospectionExtendedStatistics) {
+        this.beanIntrospectionExtendedStatistics = 
beanIntrospectionExtendedStatistics;
+        return (T) this;
+    }
+
+    /**
+     * Sets the logging level used by bean introspection, logging activity of 
its usage.
+     * The default is TRACE.
+     */
+    public T withBeanIntrospectionLoggingLevel(LoggingLevel 
beanIntrospectionLoggingLevel) {
+        this.beanIntrospectionLoggingLevel = beanIntrospectionLoggingLevel;
+        return (T) this;
+    }
+
 }
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointPropertyConfigurerGenerator.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointPropertyConfigurerGenerator.java
index 7aa8661..ec2ddb5 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointPropertyConfigurerGenerator.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointPropertyConfigurerGenerator.java
@@ -33,7 +33,9 @@ import static 
org.apache.camel.tools.apt.AnnotationProcessorHelper.dumpException
 
 public final class EndpointPropertyConfigurerGenerator {
 
-    // TODO: We can omit the read properties as we only use the writes
+    // at the moment we do not need getters (read) so lets turn them off
+    private static final boolean GENERATE_READ = false;
+    private static final boolean GENERATE_WRITE = true;
 
     private EndpointPropertyConfigurerGenerator() {
     }
@@ -41,8 +43,6 @@ public final class EndpointPropertyConfigurerGenerator {
     public static void generateExtendConfigurer(ProcessingEnvironment 
processingEnv, TypeElement parent,
                                                 String pn, String cn, String 
fqn) {
 
-
-
         Writer w = null;
         try {
             JavaFileObject src = 
processingEnv.getFiler().createSourceFile(fqn, parent);
@@ -96,8 +96,12 @@ public final class EndpointPropertyConfigurerGenerator {
             w.write(" */\n");
             w.write("public class " + cn + " extends 
EndpointPropertyConfigurerSupport {\n");
             w.write("\n");
-            w.write("    private final Map<String, Supplier<Object>> 
readPlaceholders = new HashMap<>(" + size + ");\n");
-            w.write("    private final Map<String, Consumer<Object>> 
writePlaceholders = new HashMap<>(" + size + ");\n");
+            if (GENERATE_READ) {
+                w.write("    private final Map<String, Supplier<Object>> 
readPlaceholders = new HashMap<>(" + size + ");\n");
+            }
+            if (GENERATE_WRITE) {
+                w.write("    private final Map<String, Consumer<Object>> 
writePlaceholders = new HashMap<>(" + size + ");\n");
+            }
             w.write("\n");
 
             // add constructor
@@ -108,22 +112,34 @@ public final class EndpointPropertyConfigurerGenerator {
             for (EndpointOption option : options) {
                 String getOrSet = option.getName();
                 getOrSet = Character.toUpperCase(getOrSet.charAt(0)) + 
getOrSet.substring(1);
-                String getterLambda = getterLambda(getOrSet, option.getName(), 
option.getType(), option.getConfigurationField());
-                String setterLambda = setterLambda(getOrSet, option.getName(), 
option.getType(), option.getConfigurationField());
-                w.write("        readPlaceholders.put(\"" + option.getName() + 
"\", " + getterLambda + ");\n");
-                w.write("        writePlaceholders.put(\"" + option.getName() 
+ "\", " + setterLambda + ");\n");
+                if (GENERATE_READ) {
+                    String getterLambda = getterLambda(getOrSet, 
option.getName(), option.getType(), option.getConfigurationField());
+                    w.write("        readPlaceholders.put(\"" + 
option.getName() + "\", " + getterLambda + ");\n");
+                }
+                if (GENERATE_WRITE) {
+                    String setterLambda = setterLambda(getOrSet, 
option.getName(), option.getType(), option.getConfigurationField());
+                    w.write("        writePlaceholders.put(\"" + 
option.getName() + "\", " + setterLambda + ");\n");
+                }
             }
 
             w.write("    }\n");
             w.write("\n");
             w.write("    @Override\n");
             w.write("    public Map<String, Supplier<Object>> 
getReadPropertyPlaceholderOptions(CamelContext camelContext) {\n");
-            w.write("        return readPlaceholders;\n");
+            if (GENERATE_READ) {
+                w.write("        return readPlaceholders;\n");
+            } else {
+                w.write("        return null;\n");
+            }
             w.write("    }\n");
             w.write("\n");
             w.write("    @Override\n");
             w.write("    public Map<String, Consumer<Object>> 
getWritePropertyPlaceholderOptions(CamelContext camelContext) {\n");
-            w.write("        return writePlaceholders;\n");
+            if (GENERATE_WRITE) {
+                w.write("        return writePlaceholders;\n");
+            } else {
+                w.write("        return null;\n");
+            }
             w.write("    }\n");
             w.write("\n");
             w.write("}\n");

Reply via email to