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 2524e7a044cf9747e9583f3f448c9b0dedfc83a4 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Mon May 27 11:15:27 2019 +0200 CAMEL-13583: Camel Injector should have method for creating new instance without bean post processing which is not needed when loading internal Camel factory classes and the likes. This makes Camel startup faster and reduces the overhead of post processing/scanning classes/methods etc. --- .../main/java/org/apache/camel/cdi/CdiCamelInjector.java | 7 ++++++- .../org/apache/camel/component/jcr/JcrConverterTest.java | 5 +++++ .../java/org/apache/camel/spring/spi/SpringInjector.java | 12 +++++++++++- .../src/main/java/org/apache/camel/spi/Injector.java | 14 ++++++++++++-- .../camel/impl/converter/BaseTypeConverterRegistry.java | 2 +- .../camel/impl/engine/BeanProcessorFactoryResolver.java | 2 +- .../apache/camel/impl/engine/BeanProxyFactoryResolver.java | 2 +- .../apache/camel/impl/engine/DefaultComponentResolver.java | 2 +- .../camel/impl/engine/DefaultDataFormatResolver.java | 2 +- .../org/apache/camel/impl/engine/DefaultFactoryFinder.java | 2 +- .../java/org/apache/camel/impl/engine/DefaultInjector.java | 9 +++++++-- .../apache/camel/impl/engine/DefaultLanguageResolver.java | 4 ++-- .../camel/impl/engine/HeadersMapFactoryResolver.java | 2 +- .../camel/impl/engine/RestRegistryFactoryResolver.java | 2 +- .../apache/camel/processor/SendDynamicAwareResolver.java | 2 +- .../camel/impl/cloud/ServiceCallProcessorFactory.java | 2 +- .../java/org/apache/camel/core/osgi/impl/Activator.java | 4 ++-- .../core/xml/AbstractCamelContextFactoryBeanTest.java | 6 ++++++ .../src/main/java/org/apache/camel/model/ModelHelper.java | 2 +- .../model/cloud/ServiceCallExpressionConfiguration.java | 2 +- .../cloud/ServiceCallServiceChooserConfiguration.java | 2 +- .../cloud/ServiceCallServiceDiscoveryConfiguration.java | 2 +- .../model/cloud/ServiceCallServiceFilterConfiguration.java | 2 +- .../cloud/ServiceCallServiceLoadBalancerConfiguration.java | 2 +- .../camel/reifier/loadbalancer/LoadBalancerReifier.java | 2 +- .../camel/reifier/transformer/CustomTransformeReifier.java | 2 +- .../camel/reifier/validator/CustomValidatorReifier.java | 2 +- .../apache/camel/impl/engine/DefaultFactoryFinderTest.java | 4 ++-- .../java/org/apache/camel/util/ReflectionInjector.java | 9 ++++++++- 29 files changed, 80 insertions(+), 32 deletions(-) diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelInjector.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelInjector.java index a4d8563..582b3ee 100644 --- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelInjector.java +++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelInjector.java @@ -35,8 +35,13 @@ final class CdiCamelInjector implements Injector { @Override public <T> T newInstance(Class<T> type) { + return newInstance(type, true); + } + + @Override + public <T> T newInstance(Class<T> type, boolean postProcessBean) { return getReferenceByType(manager, type) - .orElseGet(() -> injector.newInstance(type)); + .orElseGet(() -> injector.newInstance(type, postProcessBean)); } @Override diff --git a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrConverterTest.java b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrConverterTest.java index 8feee6b..ac1f35f 100644 --- a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrConverterTest.java +++ b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrConverterTest.java @@ -50,6 +50,11 @@ public class JcrConverterTest extends Assert { new Injector() { @Override public <T> T newInstance(Class<T> type) { + return newInstance(type, true); + } + + @Override + public <T> T newInstance(Class<T> type, boolean postProcessBean) { return ObjectHelper.newInstance(type); } diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java index d7e4471..7d50435 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java @@ -33,7 +33,17 @@ public class SpringInjector implements Injector { } public <T> T newInstance(Class<T> type) { - Object value = applicationContext.getBeanFactory().createBean(type, autowireMode, dependencyCheck); + return newInstance(type, true); + } + + @Override + public <T> T newInstance(Class<T> type, boolean postProcessBean) { + Object value; + if (postProcessBean) { + value = applicationContext.getBeanFactory().createBean(type, autowireMode, dependencyCheck); + } else { + value = applicationContext.getBeanFactory().createBean(type, AutowireCapableBeanFactory.AUTOWIRE_NO, false); + } return type.cast(value); } diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/Injector.java b/core/camel-api/src/main/java/org/apache/camel/spi/Injector.java index 4e39809..81c7fa1 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/Injector.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/Injector.java @@ -24,8 +24,8 @@ package org.apache.camel.spi; public interface Injector { /** - * Instantiates a new instance of the given type possibly injecting values - * into the object in the process + * Instantiates a new instance of the given type; possibly injecting values + * into the object in the process (bean post processing) * * @param type the type of object to create * @return a newly created instance @@ -33,6 +33,16 @@ public interface Injector { <T> T newInstance(Class<T> type); /** + * Instantiates a new instance of the given type; possibly injecting values + * into the object in the process (bean post processing if enabled) + * + * @param type the type of object to create + * @param postProcessBean whether to post process the bean + * @return a newly created instance + */ + <T> T newInstance(Class<T> type, boolean postProcessBean); + + /** * Whether the injector supports creating new instances using auto-wiring. * If this is possible then bean instances is attempt first to be created this way * and if not, then the bean can only be created if there is a public no-arg constructor. diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java b/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java index 622e69c..8f45f4d 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java @@ -536,7 +536,7 @@ public abstract class BaseTypeConverterRegistry extends ServiceSupport implement .map(cl -> ObjectHelper.loadClass(name, cl)) .filter(Objects::nonNull) .findAny().orElseThrow(() -> new ClassNotFoundException(name)); - Object obj = getInjector().newInstance(clazz); + Object obj = getInjector().newInstance(clazz, false); if (obj instanceof TypeConverterLoader) { TypeConverterLoader loader = (TypeConverterLoader) obj; log.debug("TypeConverterLoader: {} loading converters", name); diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java index 2dcca85..cc9f375 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProcessorFactoryResolver.java @@ -50,7 +50,7 @@ public class BeanProcessorFactoryResolver { LOG.debug("Found BeanProxyFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "bean-processor-factory"); } if (BeanProcessorFactory.class.isAssignableFrom(type)) { - BeanProcessorFactory answer = (BeanProcessorFactory) context.getInjector().newInstance(type); + BeanProcessorFactory answer = (BeanProcessorFactory) context.getInjector().newInstance(type, false); LOG.debug("Detected and using BeanProcessorFactory: {}", answer); return answer; } else { diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java index cbe233c..39405f6 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/BeanProxyFactoryResolver.java @@ -50,7 +50,7 @@ public class BeanProxyFactoryResolver { LOG.debug("Found BeanProxyFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "bean-proxy-factory"); } if (BeanProxyFactory.class.isAssignableFrom(type)) { - BeanProxyFactory answer = (BeanProxyFactory) context.getInjector().newInstance(type); + BeanProxyFactory answer = (BeanProxyFactory) context.getInjector().newInstance(type, false); LOG.debug("Detected and using BeanProxyFactory: {}", answer); return answer; } else { diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultComponentResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultComponentResolver.java index a847bd9..0e66b22 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultComponentResolver.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultComponentResolver.java @@ -69,7 +69,7 @@ public class DefaultComponentResolver implements ComponentResolver { // create the component if (Component.class.isAssignableFrom(type)) { - return (Component) context.getInjector().newInstance(type); + return (Component) context.getInjector().newInstance(type, false); } else { throw new IllegalArgumentException("Type is not a Component implementation. Found: " + type.getName()); } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultDataFormatResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultDataFormatResolver.java index 378d428..1d7f3a9 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultDataFormatResolver.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultDataFormatResolver.java @@ -85,7 +85,7 @@ public class DefaultDataFormatResolver implements DataFormatResolver { if (type != null) { if (DataFormat.class.isAssignableFrom(type)) { - dataFormat = (DataFormat) context.getInjector().newInstance(type); + dataFormat = (DataFormat) context.getInjector().newInstance(type, false); } else { throw new IllegalArgumentException("Resolving dataformat: " + name + " detected type conflict: Not a DataFormat implementation. Found: " + type.getName()); } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinder.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinder.java index 94b72ea..68df342 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinder.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFactoryFinder.java @@ -108,7 +108,7 @@ public class DefaultFactoryFinder implements FactoryFinder { private <T> T newInstance(String key, Injector injector, String propertyPrefix, Class<T> expectedType) throws IOException, ClassNotFoundException { Class<?> type = findClass(key, propertyPrefix); - Object value = injector.newInstance(type); + Object value = injector.newInstance(type, false); if (expectedType.isInstance(value)) { return expectedType.cast(value); } else { diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultInjector.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultInjector.java index 76f583b..eee18ed 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultInjector.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultInjector.java @@ -41,13 +41,18 @@ public class DefaultInjector implements Injector { @Override public <T> T newInstance(Class<T> type) { + return newInstance(type, true); + } + + @Override + public <T> T newInstance(Class<T> type, boolean postProcessBean) { T answer = ObjectHelper.newInstance(type); - if (answer != null) { + if (answer != null && postProcessBean) { try { postProcessor.postProcessBeforeInitialization(answer, answer.getClass().getName()); postProcessor.postProcessAfterInitialization(answer, answer.getClass().getName()); } catch (Exception e) { - throw new RuntimeCamelException("Error during post processing of bean " + answer, e); + throw new RuntimeCamelException("Error during post processing of bean: " + answer, e); } } return answer; diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultLanguageResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultLanguageResolver.java index 511fac9..e8d264a 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultLanguageResolver.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultLanguageResolver.java @@ -58,7 +58,7 @@ public class DefaultLanguageResolver implements LanguageResolver { if (type != null) { if (Language.class.isAssignableFrom(type)) { - return (Language) context.getInjector().newInstance(type); + return (Language) context.getInjector().newInstance(type, false); } else { throw new IllegalArgumentException("Resolving language: " + name + " detected type conflict: Not a Language implementation. Found: " + type.getName()); } @@ -82,7 +82,7 @@ public class DefaultLanguageResolver implements LanguageResolver { } if (type != null) { if (LanguageResolver.class.isAssignableFrom(type)) { - LanguageResolver resolver = (LanguageResolver) context.getInjector().newInstance(type); + LanguageResolver resolver = (LanguageResolver) context.getInjector().newInstance(type, false); return resolver.resolveLanguage(name, context); } else { throw new IllegalArgumentException("Resolving language: " + name + " detected type conflict: Not a LanguageResolver implementation. Found: " + type.getName()); diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java index daa4825..0a8e72d 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/HeadersMapFactoryResolver.java @@ -52,7 +52,7 @@ public class HeadersMapFactoryResolver { LOG.debug("Found HeadersMapFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "headers-map-factory"); } if (HeadersMapFactory.class.isAssignableFrom(type)) { - HeadersMapFactory answer = (HeadersMapFactory) context.getInjector().newInstance(type); + HeadersMapFactory answer = (HeadersMapFactory) context.getInjector().newInstance(type, false); LOG.info("Detected and using custom HeadersMapFactory: {}", answer); return answer; } else { diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java index 130ef9f..a63263b 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/RestRegistryFactoryResolver.java @@ -52,7 +52,7 @@ public class RestRegistryFactoryResolver { LOG.debug("Found RestRegistryFactory: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), "rest-registry-factory"); } if (RestRegistryFactory.class.isAssignableFrom(type)) { - RestRegistryFactory answer = (RestRegistryFactory) context.getInjector().newInstance(type); + RestRegistryFactory answer = (RestRegistryFactory) context.getInjector().newInstance(type, false); LOG.debug("Detected and using RestRegistryFactory: {}", answer); return answer; } else { diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/SendDynamicAwareResolver.java b/core/camel-base/src/main/java/org/apache/camel/processor/SendDynamicAwareResolver.java index 5d3222a..c221bae 100644 --- a/core/camel-base/src/main/java/org/apache/camel/processor/SendDynamicAwareResolver.java +++ b/core/camel-base/src/main/java/org/apache/camel/processor/SendDynamicAwareResolver.java @@ -49,7 +49,7 @@ public class SendDynamicAwareResolver { LOG.debug("Found SendDynamicAware: {} via: {}{}", type.getName(), factoryFinder.getResourcePath(), name); } if (SendDynamicAware.class.isAssignableFrom(type)) { - SendDynamicAware answer = (SendDynamicAware) context.getInjector().newInstance(type); + SendDynamicAware answer = (SendDynamicAware) context.getInjector().newInstance(type, false); answer.setScheme(scheme); return answer; } else { diff --git a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java index 5016a03..fb4e5b4 100644 --- a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java +++ b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java @@ -390,7 +390,7 @@ public class ServiceCallProcessorFactory extends TypedProcessorFactory<ServiceCa if (ObjectHelper.isNotEmpty(type)) { if (ServiceExpressionFactory.class.isAssignableFrom(type)) { - factory = (ServiceExpressionFactory)camelContext.getInjector().newInstance(type); + factory = (ServiceExpressionFactory)camelContext.getInjector().newInstance(type, false); } else { throw new IllegalArgumentException("Resolving Expression: " + lookupName + " detected type conflict: Not a ServiceExpressionFactory implementation. Found: " + type.getName()); diff --git a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/impl/Activator.java b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/impl/Activator.java index 5203363..dd105b0 100644 --- a/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/impl/Activator.java +++ b/core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/impl/Activator.java @@ -544,11 +544,11 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer<Objec try { Properties properties = loadProperties(url); String classname = (String) properties.get("class"); - Class<?> type = bundle.loadClass(classname); + Class type = bundle.loadClass(classname); if (!this.type.isAssignableFrom(type)) { throw new IllegalArgumentException("Type is not a " + this.type.getName() + " implementation. Found: " + type.getName()); } - return injector.newInstance((Class<T>) type); + return (T) injector.newInstance(type, false); } catch (ClassNotFoundException e) { throw new IllegalArgumentException("Invalid URI, no " + this.type.getName() + " registered for scheme : " + name, e); } diff --git a/core/camel-core-xml/src/test/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBeanTest.java b/core/camel-core-xml/src/test/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBeanTest.java index 7aed727..8bfcdf1 100644 --- a/core/camel-core-xml/src/test/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBeanTest.java +++ b/core/camel-core-xml/src/test/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBeanTest.java @@ -65,8 +65,14 @@ public class AbstractCamelContextFactoryBeanTest { new Injector() { @Override public <T> T newInstance(Class<T> type) { + return newInstance(type, false); + } + + @Override + public <T> T newInstance(Class<T> type, boolean postProcessBean) { return ObjectHelper.newInstance(type); } + @Override public boolean supportsAutoWiring() { return false; diff --git a/core/camel-core/src/main/java/org/apache/camel/model/ModelHelper.java b/core/camel-core/src/main/java/org/apache/camel/model/ModelHelper.java index 1f5efd8..8885c49 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/ModelHelper.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/ModelHelper.java @@ -425,7 +425,7 @@ public final class ModelHelper { XmlConverter xmlConverter; if (context != null) { TypeConverterRegistry registry = context.getTypeConverterRegistry(); - xmlConverter = registry.getInjector().newInstance(XmlConverter.class); + xmlConverter = registry.getInjector().newInstance(XmlConverter.class, false); } else { xmlConverter = new XmlConverter(); } diff --git a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java index d9f753c..0cd2d61 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java @@ -235,7 +235,7 @@ public class ServiceCallExpressionConfiguration extends IdentifiedType implement if (type != null) { if (ServiceExpressionFactory.class.isAssignableFrom(type)) { - factory = (ServiceExpressionFactory) camelContext.getInjector().newInstance(type); + factory = (ServiceExpressionFactory) camelContext.getInjector().newInstance(type, false); } else { throw new IllegalArgumentException( "Resolving Expression: " + factoryKey + " detected type conflict: Not a ExpressionFactory implementation. Found: " + type.getName()); diff --git a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java index 2dc6dfc..b3ff1b6 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java @@ -153,7 +153,7 @@ public class ServiceCallServiceChooserConfiguration extends IdentifiedType imple if (type != null) { if (ServiceChooserFactory.class.isAssignableFrom(type)) { - factory = (ServiceChooserFactory) camelContext.getInjector().newInstance(type); + factory = (ServiceChooserFactory) camelContext.getInjector().newInstance(type, false); } else { throw new NoFactoryAvailableException( "Resolving ServiceChooser: " + factoryKey + " detected type conflict: Not a ServiceChooserFactory implementation. Found: " + type.getName()); diff --git a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java index d153f41..f9ad9bd 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java @@ -160,7 +160,7 @@ public class ServiceCallServiceDiscoveryConfiguration extends IdentifiedType imp if (type != null) { if (ServiceDiscoveryFactory.class.isAssignableFrom(type)) { - factory = (ServiceDiscoveryFactory) camelContext.getInjector().newInstance(type); + factory = (ServiceDiscoveryFactory) camelContext.getInjector().newInstance(type, false); } else { throw new IllegalArgumentException( "Resolving ServiceDiscovery: " + factoryKey + " detected type conflict: Not a ServiceDiscoveryFactory implementation. Found: " + type.getName()); diff --git a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java index db7887e..7a36a9c 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java @@ -153,7 +153,7 @@ public class ServiceCallServiceFilterConfiguration extends IdentifiedType implem if (type != null) { if (ServiceFilterFactory.class.isAssignableFrom(type)) { - factory = (ServiceFilterFactory) camelContext.getInjector().newInstance(type); + factory = (ServiceFilterFactory) camelContext.getInjector().newInstance(type, false); } else { throw new NoFactoryAvailableException( "Resolving ServiceFilter: " + factoryKey + " detected type conflict: Not a ServiceFilterFactory implementation. Found: " + type.getName()); diff --git a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceLoadBalancerConfiguration.java b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceLoadBalancerConfiguration.java index 6794a23..d224f1f 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceLoadBalancerConfiguration.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceLoadBalancerConfiguration.java @@ -153,7 +153,7 @@ public class ServiceCallServiceLoadBalancerConfiguration extends IdentifiedType if (type != null) { if (ServiceLoadBalancerFactory.class.isAssignableFrom(type)) { - factory = (ServiceLoadBalancerFactory) camelContext.getInjector().newInstance(type); + factory = (ServiceLoadBalancerFactory) camelContext.getInjector().newInstance(type, false); } else { throw new IllegalArgumentException( "Resolving LoadBalancer: " + factoryKey + " detected type conflict: Not a LoadBalancerFactory implementation. Found: " + type.getName()); diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java index e4bc022..797ac7f 100644 --- a/core/camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java +++ b/core/camel-core/src/main/java/org/apache/camel/reifier/loadbalancer/LoadBalancerReifier.java @@ -75,7 +75,7 @@ public class LoadBalancerReifier<T extends LoadBalancerDefinition> { if (type == null) { throw new IllegalArgumentException("Cannot find class: " + loadBalancerTypeName + " in the classpath"); } - answer = (LoadBalancer) routeContext.getCamelContext().getInjector().newInstance(type); + answer = (LoadBalancer) routeContext.getCamelContext().getInjector().newInstance(type, false); definition.configureLoadBalancer(answer); } diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java index 279643b..99afa45 100644 --- a/core/camel-core/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java +++ b/core/camel-core/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java @@ -46,7 +46,7 @@ class CustomTransformeReifier extends TransformerReifier<CustomTransformerDefini if (transformerClass == null) { throw new IllegalArgumentException("Cannot find transformer class: " + definition.getClassName()); } - transformer = context.getInjector().newInstance(transformerClass); + transformer = context.getInjector().newInstance(transformerClass, false); } transformer.setCamelContext(context); diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java index 3db2b89..fb35984 100644 --- a/core/camel-core/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java +++ b/core/camel-core/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java @@ -46,7 +46,7 @@ class CustomValidatorReifier extends ValidatorReifier<CustomValidatorDefinition> if (validatorClass == null) { throw new IllegalArgumentException("Cannot find validator class: " + definition.getClassName()); } - validator = context.getInjector().newInstance(validatorClass); + validator = context.getInjector().newInstance(validatorClass, false); } validator.setCamelContext(context); diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultFactoryFinderTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultFactoryFinderTest.java index 0389d2d..bdaa0c3 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultFactoryFinderTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultFactoryFinderTest.java @@ -78,7 +78,7 @@ public class DefaultFactoryFinderTest { final Injector injector = mock(Injector.class); final TestImplA expected = new TestImplA(); - when(injector.newInstance(TestImplA.class)).thenReturn(expected); + when(injector.newInstance(TestImplA.class, false)).thenReturn(expected); try { factoryFinder.newInstances("TestImplA", injector, TestImplB.class); @@ -123,7 +123,7 @@ public class DefaultFactoryFinderTest { final Injector injector = mock(Injector.class); final TestImplA expected = new TestImplA(); - when(injector.newInstance(TestImplA.class)).thenReturn(expected); + when(injector.newInstance(TestImplA.class, false)).thenReturn(expected); final List<TestType> instances = factoryFinder.newInstances("TestImplA", injector, TestType.class); diff --git a/core/camel-core/src/test/java/org/apache/camel/util/ReflectionInjector.java b/core/camel-core/src/test/java/org/apache/camel/util/ReflectionInjector.java index 04582e0..ed081a9 100644 --- a/core/camel-core/src/test/java/org/apache/camel/util/ReflectionInjector.java +++ b/core/camel-core/src/test/java/org/apache/camel/util/ReflectionInjector.java @@ -22,12 +22,19 @@ import org.apache.camel.support.ObjectHelper; /** * A simple implementation of {@link Injector} which just uses reflection to * instantiate new objects using their zero argument constructor. For more - * complex implementations try the Spring or Guice implementations. + * complex implementations try the Spring or CDI implementations. */ public class ReflectionInjector implements Injector { + @Override public <T> T newInstance(Class<T> type) { + return newInstance(type, true); + } + + @Override + public <T> T newInstance(Class<T> type, boolean postProcessBean) { return ObjectHelper.newInstance(type); + // does not support post processing } @Override