You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/04/25 10:33:06 UTC
[camel] 01/17: CAMEL-13449: camel3 - Move bean component out of
camel-core
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 <cl...@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);