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 2015/07/10 12:30:21 UTC

[2/2] camel git commit: CAMEL-6338: camel-cdi shouldn't use deltapsike bean manager provider in the CamelExtension. Thanks to Romain Manni-Bucau for reporting.

CAMEL-6338: camel-cdi shouldn't use deltapsike bean manager provider in the CamelExtension. Thanks to Romain Manni-Bucau for reporting.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7250732a
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7250732a
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7250732a

Branch: refs/heads/master
Commit: 7250732a987c6abee590a5fada2b130246e18dc6
Parents: 88f0472
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Jul 10 12:36:28 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Jul 10 12:36:28 2015 +0200

----------------------------------------------------------------------
 .../apache/camel/cdi/internal/BeanAdapter.java  | 15 ++++-------
 .../camel/cdi/internal/CamelExtension.java      | 28 +++++++++++---------
 2 files changed, 21 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7250732a/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/BeanAdapter.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/BeanAdapter.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/BeanAdapter.java
index 6b5284e..3bab39a 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/BeanAdapter.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/BeanAdapter.java
@@ -79,8 +79,7 @@ public class BeanAdapter {
             Consume annotation = method.getAnnotation(Consume.class);
             if (annotation != null) {
                 String contextName = CamelExtension.getCamelContextName(annotation.context(), startup);
-                DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(
-                        contextName);
+                DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(contextName, null);
                 if (postProcessor != null) {
                     postProcessor.getPostProcessorHelper().consumerInjection(method, reference, beanName);
                 }
@@ -90,8 +89,7 @@ public class BeanAdapter {
             Produce annotation = method.getAnnotation(Produce.class);
             if (annotation != null) {
                 String contextName = CamelExtension.getCamelContextName(annotation.context(), startup);
-                DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(
-                        contextName);
+                DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(contextName, null);
                 if (postProcessor != null && postProcessor.getPostProcessorHelper().matchContext(contextName)) {
                     postProcessor.setterInjection(method, reference, beanName, annotation.uri(), annotation.ref(),
                             annotation.property());
@@ -102,8 +100,7 @@ public class BeanAdapter {
             EndpointInject annotation = method.getAnnotation(EndpointInject.class);
             if (annotation != null) {
                 String contextName = CamelExtension.getCamelContextName(annotation.context(), startup);
-                DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(
-                        contextName);
+                DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(contextName, null);
                 if (postProcessor != null && postProcessor.getPostProcessorHelper().matchContext(contextName)) {
                     postProcessor.setterInjection(method, reference, beanName, annotation.uri(), annotation.ref(),
                             annotation.property());
@@ -115,8 +112,7 @@ public class BeanAdapter {
             Produce annotation = field.getAnnotation(Produce.class);
             if (annotation != null) {
                 String contextName = CamelExtension.getCamelContextName(annotation.context(), startup);
-                DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(
-                        contextName);
+                DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(contextName, null);
                 if (postProcessor != null && postProcessor.getPostProcessorHelper().matchContext(contextName)) {
                     postProcessor.injectField(field, annotation.uri(), annotation.ref(),
                             annotation.property(), reference, beanName);
@@ -126,8 +122,7 @@ public class BeanAdapter {
         for (Field field : endpointFields) {
             EndpointInject annotation = field.getAnnotation(EndpointInject.class);
             String contextName = CamelExtension.getCamelContextName(annotation.context(), startup);
-            DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(
-                    contextName);
+            DefaultCamelBeanPostProcessor postProcessor = camelExtension.getPostProcessor(contextName, null);
             if (postProcessor != null && postProcessor.getPostProcessorHelper().matchContext(contextName)) {
                 postProcessor.injectField(field, annotation.uri(), annotation.ref(),
                         annotation.property(), reference, beanName);

http://git-wip-us.apache.org/repos/asf/camel/blob/7250732a/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelExtension.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelExtension.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelExtension.java
index c50aacb..f4b7ace 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelExtension.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelExtension.java
@@ -25,7 +25,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.spi.AfterBeanDiscovery;
@@ -56,7 +55,6 @@ import org.apache.camel.impl.DefaultCamelBeanPostProcessor;
 import org.apache.camel.model.RouteContainer;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ReflectionHelper;
-import org.apache.deltaspike.core.api.provider.BeanProvider;
 import org.apache.deltaspike.core.util.metadata.builder.AnnotatedTypeBuilder;
 
 /**
@@ -68,12 +66,12 @@ public class CamelExtension implements Extension {
         private static final long serialVersionUID = 1L;
     }
 
-    CamelContextMap camelContextMap;
+    @Inject
+    BeanManager beanManager;
 
+    private CamelContextMap camelContextMap;
     private final Set<Bean<?>> eagerBeans = new HashSet<Bean<?>>();
-
     private final Map<String, CamelContextConfig> camelContextConfigMap = new HashMap<String, CamelContextConfig>();
-
     private final List<CamelContextBean> camelContextBeans = new ArrayList<CamelContextBean>();
 
     public CamelExtension() {
@@ -218,7 +216,7 @@ public class CamelExtension implements Extension {
     public void startConsumeBeans(@Observes AfterDeploymentValidation event, BeanManager beanManager) throws Exception {
         for (CamelContextBean bean : camelContextBeans) {
             String name = bean.getCamelContextName();
-            CamelContext context = getCamelContext(name);
+            CamelContext context = getCamelContext(name, beanManager);
             if (context == null) {
                 throw new IllegalStateException(
                         "CamelContext '" + name + "' has not been injected into the CamelContextMap");
@@ -311,8 +309,8 @@ public class CamelExtension implements Extension {
         return adapter;
     }
 
-    protected DefaultCamelBeanPostProcessor getPostProcessor(String context) {
-        CamelContext camelContext = getCamelContext(context);
+    protected DefaultCamelBeanPostProcessor getPostProcessor(String context, BeanManager beanManager) {
+        CamelContext camelContext = getCamelContext(context, beanManager);
         if (camelContext != null) {
             return new DefaultCamelBeanPostProcessor(camelContext);
         } else {
@@ -320,11 +318,17 @@ public class CamelExtension implements Extension {
         }
     }
 
-    protected CamelContext getCamelContext(String context) {
-        if (camelContextMap == null) {
-            camelContextMap = BeanProvider.getContextualReference(CamelContextMap.class);
-            ObjectHelper.notNull(camelContextMap, "Could not resolve CamelContextMap");
+    protected CamelContext getCamelContext(String context, BeanManager beanManager) {
+        BeanManager manager = this.beanManager != null ? this.beanManager : beanManager;
+        if (camelContextMap == null && manager != null) {
+            Set<Bean<?>> beans = manager.getBeans(CamelContextMap.class);
+            if (!beans.isEmpty()) {
+                Bean<?> bean = manager.resolve(beans);
+                CreationalContext<?> creationalContext = manager.createCreationalContext(bean);
+                camelContextMap = (CamelContextMap) manager.getReference(bean, CamelContextMap.class, creationalContext);
+            }
         }
+        ObjectHelper.notNull(camelContextMap, "Could not resolve CamelContextMap");
         return camelContextMap.getCamelContext(context);
     }