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

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


The following commit(s) were added to refs/heads/tc-loader by this push:
     new 4159108  CAMEL-13313: Add support for generating type converter loader 
source code to be able to load component type converters in a faster way
4159108 is described below

commit 4159108642fe6df862031809a0a68683660f7a8f
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat Mar 16 13:24:51 2019 +0100

    CAMEL-13313: Add support for generating type converter loader source code 
to be able to load component type converters in a faster way
---
 ...rRegistry.java => FastTypeConverterRegistry.java} | 20 +++++++++++++-------
 .../core/xml/AbstractCamelContextFactoryBean.java    |  2 +-
 .../org/apache/camel/impl/AbstractCamelContext.java  |  1 -
 .../org/apache/camel/impl/DefaultCamelContext.java   |  7 -------
 ...NoBindingWithTypeConverterLoaderRegistryTest.java |  4 ++--
 .../camel/converter/stream/StreamCacheConverter.java |  2 +-
 6 files changed, 17 insertions(+), 19 deletions(-)

diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/converter/TypeConverterLoaderRegistry.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/converter/FastTypeConverterRegistry.java
similarity index 89%
rename from 
core/camel-base/src/main/java/org/apache/camel/impl/converter/TypeConverterLoaderRegistry.java
rename to 
core/camel-base/src/main/java/org/apache/camel/impl/converter/FastTypeConverterRegistry.java
index 5b3bb93..23804c1 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/converter/TypeConverterLoaderRegistry.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/converter/FastTypeConverterRegistry.java
@@ -26,6 +26,7 @@ import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.StringTokenizer;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.TypeConverterLoader;
 import org.apache.camel.util.IOHelper;
@@ -33,28 +34,33 @@ import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-// TODO: We can automatic detect this for example like headersmap-factory by 
having this on the classpath
-
 /**
  * An optimized {@link org.apache.camel.spi.TypeConverterRegistry} which loads
  * the type converters up-front on startup in a faster way by leveraging
  * source generated type converter loaders (<tt>@Converter(loader = true)</tt>,
- * and will not perform slower package scanning.
+ * as well as invoking the type converters without reflection,
+ * and will not perform classpath scanning.
  */
-public class TypeConverterLoaderRegistry extends BaseTypeConverterRegistry {
+public class FastTypeConverterRegistry extends BaseTypeConverterRegistry {
 
-    // TODO: Maybe it should be named FastTypeConverterRegistry
+    // TODO: We can automatic detect this for example like headersmap-factory 
by having this on the classpath
 
     public static final String META_INF_SERVICES = 
"META-INF/services/org/apache/camel/TypeConverterLoader";
 
-    private static final Logger LOG = 
LoggerFactory.getLogger(TypeConverterLoaderRegistry.class);
+    private static final Logger LOG = 
LoggerFactory.getLogger(FastTypeConverterRegistry.class);
     private static final Charset UTF8 = Charset.forName("UTF-8");
 
-    public TypeConverterLoaderRegistry() {
+    public FastTypeConverterRegistry() {
         super(null, null, null); // pass in null to base class as we load all 
type converters without package scanning
     }
 
     @Override
+    public void setCamelContext(CamelContext camelContext) {
+        super.setCamelContext(camelContext);
+        setInjector(camelContext.getInjector());
+    }
+
+    @Override
     public boolean allowNull() {
         return false;
     }
diff --git 
a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
 
b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index 44e761c..3a6353c 100644
--- 
a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ 
b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -168,7 +168,7 @@ public abstract class AbstractCamelContextFactoryBean<T 
extends ModelCamelContex
             getContext().setPackageScanClassResolver(packageResolver);
         }
 
-        // set the package scan resolver as soon as possible
+        // also set type converter registry as early as possible
         TypeConverterRegistry tcr = 
getBeanForType(TypeConverterRegistry.class);
         if (tcr != null) {
             LOG.info("Using custom TypeConverterRegistry: {}", tcr);
diff --git 
a/core/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java 
b/core/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java
index e056f5c..3e9ee4b 100644
--- 
a/core/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java
+++ 
b/core/camel-core/src/main/java/org/apache/camel/impl/AbstractCamelContext.java
@@ -88,7 +88,6 @@ import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.impl.transformer.TransformerKey;
 import org.apache.camel.impl.validator.ValidatorKey;
 import org.apache.camel.model.DataFormatDefinition;
-import org.apache.camel.model.FromDefinition;
 import org.apache.camel.model.HystrixConfigurationDefinition;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ModelHelper;
diff --git 
a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java 
b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 6e9848e..c5c5969 100644
--- 
a/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ 
b/core/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -16,11 +16,8 @@
  */
 package org.apache.camel.impl;
 
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.ServiceLoader;
-
 import javax.naming.Context;
 
 import org.apache.camel.CamelContext;
@@ -28,7 +25,6 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.NoFactoryAvailableException;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.Producer;
-import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.impl.converter.BaseTypeConverterRegistry;
@@ -55,10 +51,7 @@ import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.Injector;
 import org.apache.camel.spi.LanguageResolver;
-import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.ManagementNameStrategy;
-import org.apache.camel.spi.ManagementStrategy;
-import org.apache.camel.spi.ManagementStrategyFactory;
 import org.apache.camel.spi.MessageHistoryFactory;
 import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.NodeIdFactory;
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanProxyNoBindingWithTypeConverterLoaderRegistryTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanProxyNoBindingWithTypeConverterLoaderRegistryTest.java
index 46cffa6..a94d39e 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanProxyNoBindingWithTypeConverterLoaderRegistryTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanProxyNoBindingWithTypeConverterLoaderRegistryTest.java
@@ -17,7 +17,7 @@
 package org.apache.camel.component.bean;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.impl.converter.TypeConverterLoaderRegistry;
+import org.apache.camel.impl.converter.FastTypeConverterRegistry;
 
 public class BeanProxyNoBindingWithTypeConverterLoaderRegistryTest extends 
BeanProxyNoBindingTest {
 
@@ -25,7 +25,7 @@ public class 
BeanProxyNoBindingWithTypeConverterLoaderRegistryTest extends BeanP
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
         // switch to using the faster type converter loader
-        context.setTypeConverterRegistry(new TypeConverterLoaderRegistry());
+        context.setTypeConverterRegistry(new FastTypeConverterRegistry());
         return context;
     }
 }
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java
 
b/core/camel-support/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java
index 2d0e6f4..7f6a15e 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java
@@ -39,7 +39,7 @@ import org.apache.camel.util.IOHelper;
  * A set of {@link Converter} methods for wrapping stream-based messages in a 
{@link StreamCache}
  * implementation to ensure message re-readability (eg multicasting, retrying)
  */
-@Converter
+@Converter(loader = true)
 public final class StreamCacheConverter {
 
     /**

Reply via email to