Repository: deltaspike
Updated Branches:
  refs/heads/master 3a270ec59 -> d76094f6c


DELTASPIKE-665 Utility method to always create context.


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

Branch: refs/heads/master
Commit: ae2291937417f1fb337f55bc987fdda53d1591aa
Parents: 3a270ec
Author: John D. Ament <johndam...@apache.org>
Authored: Tue Aug 5 22:16:27 2014 -0400
Committer: John D. Ament <johndam...@apache.org>
Committed: Tue Aug 5 22:16:27 2014 -0400

----------------------------------------------------------------------
 .../deltaspike/cdise/api/CdiContainer.java      |  5 ++++
 .../cdise/openejb/OpenEjbContainerControl.java  | 27 ++++++++++++++++++++
 .../cdise/owb/OpenWebBeansContainerControl.java | 24 +++++++++++++++++
 .../cdise/weld/WeldContainerControl.java        | 24 +++++++++++++++++
 4 files changed, 80 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/ae229193/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/CdiContainer.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/CdiContainer.java
 
b/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/CdiContainer.java
index 62c7898..e15453e 100644
--- 
a/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/CdiContainer.java
+++ 
b/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/CdiContainer.java
@@ -72,4 +72,9 @@ public interface CdiContainer
      * @return ContextControl for the started Container. <code>null</code> if 
the container is not yet started
      */
     ContextControl getContextControl();
+
+    /**
+     * @return a new - dependent context control object.
+     */
+    ContextControl createContextControl();
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/ae229193/deltaspike/cdictrl/impl-openejb/src/main/java/org/apache/deltaspike/cdise/openejb/OpenEjbContainerControl.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/cdictrl/impl-openejb/src/main/java/org/apache/deltaspike/cdise/openejb/OpenEjbContainerControl.java
 
b/deltaspike/cdictrl/impl-openejb/src/main/java/org/apache/deltaspike/cdise/openejb/OpenEjbContainerControl.java
index 680b320..5c8f80d 100644
--- 
a/deltaspike/cdictrl/impl-openejb/src/main/java/org/apache/deltaspike/cdise/openejb/OpenEjbContainerControl.java
+++ 
b/deltaspike/cdictrl/impl-openejb/src/main/java/org/apache/deltaspike/cdise/openejb/OpenEjbContainerControl.java
@@ -34,6 +34,7 @@ import javax.naming.NamingException;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import java.util.logging.Logger;
 
 /**
  * OpenEJB specific implementation of {@link 
org.apache.deltaspike.cdise.api.CdiContainer}.
@@ -41,6 +42,8 @@ import java.util.Set;
 @SuppressWarnings("UnusedDeclaration")
 public class OpenEjbContainerControl implements CdiContainer
 {
+    private static final Logger LOG = 
Logger.getLogger(OpenEjbContainerControl.class.getName());
+
     // global container config
     private static final Properties PROPERTIES = new Properties();
 
@@ -148,4 +151,28 @@ public class OpenEjbContainerControl implements 
CdiContainer
         }
         return ctxCtrl;
     }
+
+    @Override
+    public ContextControl createContextControl()
+    {
+        BeanManager beanManager = getBeanManager();
+
+        if (beanManager == null)
+        {
+            LOG.warning("If the CDI-container was started by the environment, 
you can't use this helper." +
+                    "Instead you can resolve ContextControl manually " +
+                    "(e.g. via 
BeanProvider.getContextualReference(ContextControl.class) ). " +
+                    "If the container wasn't started already, you have to use 
CdiContainer#boot before.");
+
+            return null;
+        }
+        Set<Bean<?>> beans = beanManager.getBeans(ContextControl.class);
+        Bean<ContextControl> depCtxCtrlBean = (Bean<ContextControl>) 
beanManager.resolve(beans);
+
+        CreationalContext<ContextControl> depCtxCtrlCreationalContext = 
getBeanManager()
+                .createCreationalContext(ctxCtrlBean);
+
+        return (ContextControl)
+                getBeanManager().getReference(depCtxCtrlBean, 
ContextControl.class, depCtxCtrlCreationalContext);
+    }
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/ae229193/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContainerControl.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContainerControl.java
 
b/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContainerControl.java
index 7f1fa71..0b11cb3 100644
--- 
a/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContainerControl.java
+++ 
b/deltaspike/cdictrl/impl-owb/src/main/java/org/apache/deltaspike/cdise/owb/OpenWebBeansContainerControl.java
@@ -122,4 +122,28 @@ public class OpenWebBeansContainerControl implements 
CdiContainer
         }
         return ctxCtrl;
     }
+
+    @Override
+    public ContextControl createContextControl()
+    {
+        BeanManager beanManager = getBeanManager();
+
+        if (beanManager == null)
+        {
+            LOG.warning("If the CDI-container was started by the environment, 
you can't use this helper." +
+                    "Instead you can resolve ContextControl manually " +
+                    "(e.g. via 
BeanProvider.getContextualReference(ContextControl.class) ). " +
+                    "If the container wasn't started already, you have to use 
CdiContainer#boot before.");
+
+            return null;
+        }
+        Set<Bean<?>> beans = beanManager.getBeans(ContextControl.class);
+        Bean<ContextControl> depCtxCtrlBean = (Bean<ContextControl>) 
beanManager.resolve(beans);
+
+        CreationalContext<ContextControl> depCtxCtrlCreationalContext = 
getBeanManager()
+                .createCreationalContext(ctxCtrlBean);
+
+        return (ContextControl)
+                getBeanManager().getReference(depCtxCtrlBean, 
ContextControl.class, depCtxCtrlCreationalContext);
+    }
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/ae229193/deltaspike/cdictrl/impl-weld/src/main/java/org/apache/deltaspike/cdise/weld/WeldContainerControl.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/cdictrl/impl-weld/src/main/java/org/apache/deltaspike/cdise/weld/WeldContainerControl.java
 
b/deltaspike/cdictrl/impl-weld/src/main/java/org/apache/deltaspike/cdise/weld/WeldContainerControl.java
index 361b8b2..a193aa8 100644
--- 
a/deltaspike/cdictrl/impl-weld/src/main/java/org/apache/deltaspike/cdise/weld/WeldContainerControl.java
+++ 
b/deltaspike/cdictrl/impl-weld/src/main/java/org/apache/deltaspike/cdise/weld/WeldContainerControl.java
@@ -115,4 +115,28 @@ public class WeldContainerControl implements CdiContainer
         }
         return ctxCtrl;
     }
+
+    @Override
+    public ContextControl createContextControl()
+    {
+        BeanManager beanManager = getBeanManager();
+
+        if (beanManager == null)
+        {
+            LOG.warning("If the CDI-container was started by the environment, 
you can't use this helper." +
+                    "Instead you can resolve ContextControl manually " +
+                    "(e.g. via 
BeanProvider.getContextualReference(ContextControl.class) ). " +
+                    "If the container wasn't started already, you have to use 
CdiContainer#boot before.");
+
+            return null;
+        }
+        Set<Bean<?>> beans = beanManager.getBeans(ContextControl.class);
+        Bean<ContextControl> depCtxCtrlBean = (Bean<ContextControl>) 
beanManager.resolve(beans);
+
+        CreationalContext<ContextControl> depCtxCtrlCreationalContext = 
getBeanManager()
+                .createCreationalContext(ctxCtrlBean);
+
+        return (ContextControl)
+                getBeanManager().getReference(depCtxCtrlBean, 
ContextControl.class, depCtxCtrlCreationalContext);
+    }
 }

Reply via email to