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 <[email protected]>
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 {
/**