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 efc4d0c5da83598fc4adc7d3f3a85251a172491e Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Feb 12 10:03:04 2020 +0100 CAMEL-14538: camel-core - Do not load type converters via package scanning by default --- .../camel/impl/engine/AbstractCamelContext.java | 2 +- .../camel/main/DefaultConfigurationProperties.java | 2 +- .../modules/ROOT/pages/camel-3x-upgrade-guide.adoc | 26 ++++++++++++++++++++++ .../modules/ROOT/pages/type-converter.adoc | 26 +++++++++++++++++++++- 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java index 71959a0..1387bad 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java @@ -212,7 +212,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Ext private Boolean logExhaustedMessageBody = Boolean.FALSE; private Boolean streamCache = Boolean.FALSE; private Boolean disableJMX = Boolean.FALSE; - private Boolean loadTypeConverters = Boolean.TRUE; + private Boolean loadTypeConverters = Boolean.FALSE; private Boolean typeConverterStatisticsEnabled = Boolean.FALSE; private Boolean useMDCLogging = Boolean.FALSE; private String mdcLoggingKeysPattern; 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 1a26864..35135e7 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 @@ -39,7 +39,7 @@ public abstract class DefaultConfigurationProperties<T> { private boolean jmxEnabled = true; private int producerTemplateCacheSize = 1000; private int consumerTemplateCacheSize = 1000; - private boolean loadTypeConverters = true; + private boolean loadTypeConverters; private int logDebugMaxChars; private boolean streamCachingEnabled; private String streamCachingSpoolDirectory; diff --git a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc index 52f398d..ad7fb1f 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide.adoc @@ -147,6 +147,32 @@ of using XML for beans and Camel XML routes. And a few components such as `camel But at general then Camel is now lighter in classpath dependency by not requiring to have JAXB present. +=== Package scanning @TypeConverter + +Camel has now been configured to not package scan for custom `@Converter` classes on startup. +Type converters are now loaded and registered in faster way via source code generated loader classes +by having `@Converter(loader = true)` specified. If you have custom converters and have not migrated to use +source code generated loaders, you can enable package scanning by setting + +[source,java] +---- +camelContext.setLoadTypeConverters(true); +---- + +And in XML: +[source,xml] +---- +<camelContext loadTypeConverters="true"> +... +</camelContext> +---- + +And in Spring Boot `application.properties`: +[source,properties] +---- +camel.loadTypeConverters=true +---- + === Graceful Shutdown Timeout When shutting down Camel, then the default timeout has changed from 300 seconds (5 minutes) to 45 seconds. diff --git a/docs/user-manual/modules/ROOT/pages/type-converter.adoc b/docs/user-manual/modules/ROOT/pages/type-converter.adoc index 9da6bdd..dbd1941 100644 --- a/docs/user-manual/modules/ROOT/pages/type-converter.adoc +++ b/docs/user-manual/modules/ROOT/pages/type-converter.adoc @@ -139,7 +139,31 @@ all type converter loader classes (they are automatic source code generated by t These _loader_ classes will load the type converters into the Camel type converter registry and invoking these type converters is done in a _fast way_ using standard java method calls. -The discover will fallback and discover Camel 2.x compatible type converters by +=== Discovering Camel 2.x based type converters (not loader) + +Camel will not perform additional package scanning for type conveters which has no source code generated loader classes. +However this can be enabled by setting: + +[source,java] +---- +camelContext.setLoadTypeConverters(true); +---- + +And in XML: +[source,xml] +---- +<camelContext loadTypeConverters="true"> +... +</camelContext> +---- + +And in Spring Boot `application.properties`: +[source,properties] +---- +camel.loadTypeConverters=true +---- + +Then Camel will discover discover Camel 2.x compatible type converters by search the classpath for a file called `META-INF/services/org/apache/camel/TypeConverter`, which lists all the type converter classes. These classes will then automatic be registered in the type converter registry. However invoking these type converters