This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch bean in repository https://gitbox.apache.org/repos/asf/camel.git
commit 766ad5558922cb2bd0f6a96dbd00263d5d9afdf8 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Apr 24 10:53:18 2019 +0200 CAMEL-13449: camel3 - Move bean component out of camel-core --- .../src/main/java/org/apache/camel/CamelContext.java | 6 ++++++ .../org/apache/camel/spi}/DeferServiceFactory.java | 20 ++++---------------- .../java/org/apache/camel/builder/ProxyBuilder.java | 2 ++ .../org/apache/camel/component/bean/MethodInfo.java | 5 ++--- .../org/apache/camel/component/bean/ProxyHelper.java | 3 +-- .../org/apache/camel/impl/AbstractCamelContext.java | 8 ++++++++ .../apache/camel/impl/CamelPostProcessorHelper.java | 4 ++-- ...eFactory.java => DefaultDeferServiceFactory.java} | 10 ++++------ 8 files changed, 29 insertions(+), 29 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java index 0099cac..abc2029 100644 --- a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java +++ b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java @@ -31,6 +31,7 @@ import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.DataFormatResolver; import org.apache.camel.spi.DataType; import org.apache.camel.spi.Debugger; +import org.apache.camel.spi.DeferServiceFactory; import org.apache.camel.spi.EndpointRegistry; import org.apache.camel.spi.EndpointStrategy; import org.apache.camel.spi.ExecutorServiceManager; @@ -1473,4 +1474,9 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration { */ void setHeadersMapFactory(HeadersMapFactory factory); + /** + * Gets the {@link DeferServiceFactory} to use. + */ + DeferServiceFactory getDeferServiceFactory(); + } diff --git a/core/camel-core/src/main/java/org/apache/camel/processor/DeferServiceFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/DeferServiceFactory.java similarity index 71% copy from core/camel-core/src/main/java/org/apache/camel/processor/DeferServiceFactory.java copy to core/camel-api/src/main/java/org/apache/camel/spi/DeferServiceFactory.java index 3eb2291..1cfca60 100644 --- a/core/camel-core/src/main/java/org/apache/camel/processor/DeferServiceFactory.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/DeferServiceFactory.java @@ -14,21 +14,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.processor; +package org.apache.camel.spi; import org.apache.camel.Endpoint; import org.apache.camel.Producer; -import org.apache.camel.impl.DeferProducer; /** * Factory to create services such as {@link Producer}s * and defer starting the created service, until {@link org.apache.camel.CamelContext} has been started. */ -public final class DeferServiceFactory { - - private DeferServiceFactory() { - // It's a helper class - } +public interface DeferServiceFactory { /** * Creates the {@link Producer} which is deferred started until {@link org.apache.camel.CamelContext} is being started. @@ -36,17 +31,10 @@ public final class DeferServiceFactory { * When the producer is started, it re-lookup the endpoint to capture any changes such as the endpoint has been intercepted. * This allows the producer to react and send messages to the updated endpoint. * - * @param endpoint the endpoint + * @param endpoint the endpoint * @return the producer which will be deferred started until {@link org.apache.camel.CamelContext} has been started * @throws Exception can be thrown if there is an error starting the producer - * @see org.apache.camel.impl.DeferProducer */ - public static Producer createProducer(Endpoint endpoint) throws Exception { - Producer producer = new DeferProducer(endpoint); - producer = new UnitOfWorkProducer(producer); - producer = new EventNotifierProducer(producer); - endpoint.getCamelContext().deferStartService(producer, true); - return producer; - } + Producer createProducer(Endpoint endpoint) throws Exception; } diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/ProxyBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/ProxyBuilder.java index 13e874a..ef98fa6 100644 --- a/core/camel-core/src/main/java/org/apache/camel/builder/ProxyBuilder.java +++ b/core/camel-core/src/main/java/org/apache/camel/builder/ProxyBuilder.java @@ -26,6 +26,8 @@ import org.apache.camel.util.ObjectHelper; */ public final class ProxyBuilder { + // TODO: Move this to camel-bean + private final CamelContext camelContext; private Endpoint endpoint; private boolean binding = true; diff --git a/core/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java b/core/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java index b05371a..6b9b0b0 100644 --- a/core/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java +++ b/core/camel-core/src/main/java/org/apache/camel/component/bean/MethodInfo.java @@ -46,6 +46,7 @@ import org.apache.camel.Processor; import org.apache.camel.RuntimeCamelException; import org.apache.camel.RuntimeExchangeException; import org.apache.camel.StreamCache; +// TODO: Factory SPI to create these processors which are loaded via FactoryFinder import org.apache.camel.processor.DynamicRouter; import org.apache.camel.processor.RecipientList; import org.apache.camel.processor.RoutingSlip; @@ -221,9 +222,7 @@ public class MethodInfo { for (Annotation a : ma) { annotations.put(a.annotationType(), a); } - } catch (SecurityException e) { - // do nothing here - } catch (NoSuchMethodException e) { + } catch (SecurityException | NoSuchMethodException e) { // do nothing here } } diff --git a/core/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java b/core/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java index 3d7dd33..51b8848 100644 --- a/core/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java +++ b/core/camel-core/src/main/java/org/apache/camel/component/bean/ProxyHelper.java @@ -20,7 +20,6 @@ import java.lang.reflect.Proxy; import org.apache.camel.Endpoint; import org.apache.camel.Producer; -import org.apache.camel.processor.DeferServiceFactory; /** * A helper class for creating proxies which delegate to Camel @@ -52,7 +51,7 @@ public final class ProxyHelper { * Creates a Proxy which sends the exchange to the endpoint. */ public static <T> T createProxy(Endpoint endpoint, boolean binding, ClassLoader cl, Class<T>[] interfaceClasses, MethodInfoCache methodCache) throws Exception { - Producer producer = DeferServiceFactory.createProducer(endpoint); + Producer producer = endpoint.getCamelContext().getDeferServiceFactory().createProducer(endpoint); return createProxyObject(endpoint, binding, producer, cl, interfaceClasses, methodCache); } 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 50cd84d..c8813b7 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 @@ -98,6 +98,7 @@ import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.model.rest.RestsDefinition; import org.apache.camel.model.transformer.TransformerDefinition; import org.apache.camel.model.validator.ValidatorDefinition; +import org.apache.camel.processor.DefaultDeferServiceFactory; import org.apache.camel.processor.MulticastProcessor; import org.apache.camel.processor.interceptor.Debug; import org.apache.camel.processor.interceptor.HandleFault; @@ -113,6 +114,7 @@ import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.DataFormatResolver; import org.apache.camel.spi.DataType; import org.apache.camel.spi.Debugger; +import org.apache.camel.spi.DeferServiceFactory; import org.apache.camel.spi.EndpointRegistry; import org.apache.camel.spi.EndpointStrategy; import org.apache.camel.spi.EventNotifier; @@ -272,6 +274,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Mod private volatile ReloadStrategy reloadStrategy; private volatile RouteController routeController; private volatile ScheduledExecutorService errorHandlerExecutorService; + private final DeferServiceFactory deferServiceFactory = new DefaultDeferServiceFactory(); private TransformerRegistry<TransformerKey> transformerRegistry; private ValidatorRegistry<ValidatorKey> validatorRegistry; @@ -3922,6 +3925,11 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Mod this.headersMapFactory = doAddService(headersMapFactory); } + @Override + public DeferServiceFactory getDeferServiceFactory() { + return deferServiceFactory; + } + protected Map<String, RouteService> getRouteServices() { return routeServices; } diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java b/core/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java index f225cb6..37d609c 100644 --- a/core/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java +++ b/core/camel-core/src/main/java/org/apache/camel/impl/CamelPostProcessorHelper.java @@ -40,7 +40,6 @@ import org.apache.camel.RuntimeCamelException; import org.apache.camel.Service; import org.apache.camel.builder.DefaultFluentProducerTemplate; import org.apache.camel.component.bean.ProxyHelper; -import org.apache.camel.processor.DeferServiceFactory; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.IntrospectionSupport; import org.apache.camel.support.service.ServiceHelper; @@ -250,6 +249,7 @@ public class CamelPostProcessorHelper implements CamelContextAware { } else if (type.isInterface()) { // lets create a proxy try { + // TODO: Requires camel-bean so we need some kind of spi, and to lookup via camel-context/service etc return ProxyHelper.createProxy(endpoint, binding, type); } catch (Exception e) { throw createProxyInstantiationRuntimeException(type, endpoint, e); @@ -395,7 +395,7 @@ public class CamelPostProcessorHelper implements CamelContextAware { */ protected Producer createInjectionProducer(Endpoint endpoint, Object bean, String beanName) { try { - return DeferServiceFactory.createProducer(endpoint); + return endpoint.getCamelContext().getDeferServiceFactory().createProducer(endpoint); } catch (Exception e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } diff --git a/core/camel-core/src/main/java/org/apache/camel/processor/DeferServiceFactory.java b/core/camel-core/src/main/java/org/apache/camel/processor/DefaultDeferServiceFactory.java similarity index 90% rename from core/camel-core/src/main/java/org/apache/camel/processor/DeferServiceFactory.java rename to core/camel-core/src/main/java/org/apache/camel/processor/DefaultDeferServiceFactory.java index 3eb2291..7145d63 100644 --- a/core/camel-core/src/main/java/org/apache/camel/processor/DeferServiceFactory.java +++ b/core/camel-core/src/main/java/org/apache/camel/processor/DefaultDeferServiceFactory.java @@ -19,17 +19,14 @@ package org.apache.camel.processor; import org.apache.camel.Endpoint; import org.apache.camel.Producer; import org.apache.camel.impl.DeferProducer; +import org.apache.camel.spi.DeferServiceFactory; /** * Factory to create services such as {@link Producer}s * and defer starting the created service, until {@link org.apache.camel.CamelContext} has been started. */ -public final class DeferServiceFactory { +public final class DefaultDeferServiceFactory implements DeferServiceFactory { - private DeferServiceFactory() { - // It's a helper class - } - /** * Creates the {@link Producer} which is deferred started until {@link org.apache.camel.CamelContext} is being started. * <p/> @@ -41,7 +38,8 @@ public final class DeferServiceFactory { * @throws Exception can be thrown if there is an error starting the producer * @see org.apache.camel.impl.DeferProducer */ - public static Producer createProducer(Endpoint endpoint) throws Exception { + @Override + public Producer createProducer(Endpoint endpoint) throws Exception { Producer producer = new DeferProducer(endpoint); producer = new UnitOfWorkProducer(producer); producer = new EventNotifierProducer(producer);