Updated Branches:
  refs/heads/master 61312f51c -> 5de774cb1

Add BeanManager as parameter - will be injected by @Observes & 
PassivationCapable


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

Branch: refs/heads/master
Commit: c97601f546323279931ea9a0f1ff8df72b3d1b7e
Parents: 71758b5
Author: Charles Mouliard <cmoulli...@apache.org>
Authored: Wed Nov 6 16:01:51 2013 +0100
Committer: Charles Mouliard <cmoulli...@apache.org>
Committed: Wed Nov 6 16:01:51 2013 +0100

----------------------------------------------------------------------
 .../org/apache/camel/cdi/internal/BeanAdapter.java   | 14 +++++++++-----
 .../apache/camel/cdi/internal/CamelContextBean.java  | 11 +++++++++--
 .../apache/camel/cdi/internal/CamelExtension.java    | 15 ++++++++++-----
 3 files changed, 28 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/c97601f5/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 db986f6..504ac11 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
@@ -20,6 +20,8 @@ import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.inject.Inject;
 
 import org.apache.camel.Consume;
 import org.apache.camel.EndpointInject;
@@ -38,6 +40,8 @@ public class BeanAdapter {
     private final List<Field> endpointFields = new ArrayList<Field>();
     private final ContextName startup;
 
+    @Inject BeanManager beanManager;
+
     public BeanAdapter(ContextName startup) {
         this.startup = startup;
     }
@@ -80,7 +84,7 @@ public class BeanAdapter {
             if (annotation != null) {
                 String contextName = 
CamelExtension.getCamelContextName(annotation.context(), startup);
                 DefaultCamelBeanPostProcessor postProcessor = 
camelExtension.getPostProcessor(
-                        contextName);
+                        contextName, beanManager);
                 if (postProcessor != null) {
                     
postProcessor.getPostProcessorHelper().consumerInjection(method, reference, 
beanName);
                 }
@@ -91,7 +95,7 @@ public class BeanAdapter {
             if (annotation != null) {
                 String contextName = 
CamelExtension.getCamelContextName(annotation.context(), startup);
                 DefaultCamelBeanPostProcessor postProcessor = 
camelExtension.getPostProcessor(
-                        contextName);
+                        contextName, beanManager);
                 if (postProcessor != null && 
postProcessor.getPostProcessorHelper().matchContext(contextName)) {
                     postProcessor.setterInjection(method, reference, beanName, 
annotation.uri(), annotation.ref(),
                             annotation.property());
@@ -103,7 +107,7 @@ public class BeanAdapter {
             if (annotation != null) {
                 String contextName = 
CamelExtension.getCamelContextName(annotation.context(), startup);
                 DefaultCamelBeanPostProcessor postProcessor = 
camelExtension.getPostProcessor(
-                        contextName);
+                        contextName, beanManager);
                 if (postProcessor != null && 
postProcessor.getPostProcessorHelper().matchContext(contextName)) {
                     postProcessor.setterInjection(method, reference, beanName, 
annotation.uri(), annotation.ref(),
                             annotation.property());
@@ -116,7 +120,7 @@ public class BeanAdapter {
             if (annotation != null) {
                 String contextName = 
CamelExtension.getCamelContextName(annotation.context(), startup);
                 DefaultCamelBeanPostProcessor postProcessor = 
camelExtension.getPostProcessor(
-                        contextName);
+                        contextName, beanManager);
                 if (postProcessor != null && 
postProcessor.getPostProcessorHelper().matchContext(contextName)) {
                     postProcessor.injectField(field, annotation.uri(), 
annotation.ref(),
                             annotation.property(), reference, beanName);
@@ -127,7 +131,7 @@ public class BeanAdapter {
             EndpointInject annotation = 
field.getAnnotation(EndpointInject.class);
             String contextName = 
CamelExtension.getCamelContextName(annotation.context(), startup);
             DefaultCamelBeanPostProcessor postProcessor = 
camelExtension.getPostProcessor(
-                    contextName);
+                    contextName, beanManager);
             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/c97601f5/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextBean.java
 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextBean.java
index 7e97f66..f94d371 100644
--- 
a/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextBean.java
+++ 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextBean.java
@@ -21,13 +21,14 @@ import java.lang.reflect.Type;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
-
+import java.util.UUID;
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.PassivationCapable;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.cdi.CdiCamelContext;
@@ -39,7 +40,9 @@ import org.apache.deltaspike.core.api.literal.DefaultLiteral;
  * Description of camel context bean.
  */
 @SuppressWarnings("unchecked")
-public class CamelContextBean implements Bean<CdiCamelContext> {
+public class CamelContextBean implements Bean<CdiCamelContext>, 
PassivationCapable {
+
+    private static final UUID uniqueId = UUID.randomUUID();
 
     private final BeanManager beanManager;
     private final String name;
@@ -130,4 +133,8 @@ public class CamelContextBean implements 
Bean<CdiCamelContext> {
     public void configureCamelContext(CdiCamelContext camelContext) {
         config.configure(camelContext, beanManager);
     }
+
+    @Override public String getId() {
+        return uniqueId.toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/c97601f5/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 a05f9c2..44a44b5 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
@@ -63,6 +63,7 @@ import 
org.apache.deltaspike.core.util.metadata.builder.AnnotatedTypeBuilder;
  * Set of camel specific hooks for CDI.
  */
 public class CamelExtension implements Extension {
+
     private static class InjectLiteral extends AnnotationLiteral<Inject> 
implements Inject {
         private static final long serialVersionUID = 1L;
     }
@@ -223,7 +224,7 @@ public class CamelExtension implements Extension {
         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");
@@ -317,8 +318,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 {
@@ -326,9 +327,13 @@ public class CamelExtension implements Extension {
         }
     }
 
-    protected CamelContext getCamelContext(String context) {
+    protected CamelContext getCamelContext(String context, BeanManager 
beanManager) {
         if (camelContextMap == null) {
-            camelContextMap = 
BeanProvider.getContextualReference(CamelContextMap.class);
+            //camelContextMap = 
BeanProvider.getContextualReference(CamelContextMap.class);
+            Set<Bean<?>> beans = beanManager.getBeans(CamelContextMap.class);
+            Bean<?> bean = beanManager.resolve(beans);
+            CreationalContext<?> creationalContext = 
beanManager.createCreationalContext(bean);
+            camelContextMap = (CamelContextMap) beanManager.getReference(bean, 
bean.getBeanClass(), creationalContext);
             ObjectHelper.notNull(camelContextMap, "Could not resolve 
CamelContextMap");
         }
         return camelContextMap.getCamelContext(context);

Reply via email to