You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2013/02/24 00:56:34 UTC

git commit: DELTASPIKE-317 fixed NullPointerException in #getContextControl

Updated Branches:
  refs/heads/master 8cff159e6 -> 23bd326c2


DELTASPIKE-317 fixed NullPointerException in #getContextControl

 (of OpenWebBeansContainerControl and WeldContainerControl)


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

Branch: refs/heads/master
Commit: 23bd326c28e976c74fcf3c0b14b72fb3be34bdd8
Parents: 8cff159
Author: gpetracek <gp...@apache.org>
Authored: Sun Feb 24 00:52:01 2013 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Sun Feb 24 00:52:05 2013 +0100

----------------------------------------------------------------------
 .../cdise/owb/OpenWebBeansContainerControl.java    |   18 ++++++++++++++-
 .../cdise/weld/WeldContainerControl.java           |   16 ++++++++++++-
 2 files changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/23bd326c/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 d94ae74..9c45aea 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
@@ -27,6 +27,7 @@ import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
 import java.util.Set;
+import java.util.logging.Logger;
 
 /**
  * OpenWebBeans specific implementation of {@link org.apache.deltaspike.cdise.api.CdiContainer}.
@@ -34,6 +35,8 @@ import java.util.Set;
 @SuppressWarnings("UnusedDeclaration")
 public class OpenWebBeansContainerControl implements CdiContainer
 {
+    private static final Logger LOG = Logger.getLogger(OpenWebBeansContainerControl.class.getName());
+
     private ContainerLifecycle lifecycle;
 
     private ContextControl ctxCtrl = null;
@@ -91,7 +94,20 @@ public class OpenWebBeansContainerControl implements CdiContainer
         if (ctxCtrl == null)
         {
             Set<Bean<?>> beans = getBeanManager().getBeans(ContextControl.class);
-            ctxCtrlBean = (Bean<ContextControl>) getBeanManager().resolve(beans);
+
+            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;
+            }
+
+            ctxCtrlBean = (Bean<ContextControl>) beanManager.resolve(beans);
             ctxCtrlCreationalContext = getBeanManager().createCreationalContext(ctxCtrlBean);
             ctxCtrl = (ContextControl)
                     getBeanManager().getReference(ctxCtrlBean, ContextControl.class, ctxCtrlCreationalContext);

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/23bd326c/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 56362da..65b8fd6 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
@@ -27,6 +27,7 @@ import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
 import java.util.Set;
+import java.util.logging.Logger;
 
 /**
  * Weld specific implementation of {@link org.apache.deltaspike.cdise.api.CdiContainer}.
@@ -34,6 +35,8 @@ import java.util.Set;
 @SuppressWarnings("UnusedDeclaration")
 public class WeldContainerControl implements CdiContainer
 {
+    private static final Logger LOG = Logger.getLogger(WeldContainerControl.class.getName());
+
     private Weld weld;
     private WeldContainer weldContainer;
 
@@ -83,7 +86,18 @@ public class WeldContainerControl implements CdiContainer
         if (ctxCtrl == null)
         {
             Set<Bean<?>> beans = getBeanManager().getBeans(ContextControl.class);
-            ctxCtrlBean = (Bean<ContextControl>) getBeanManager().resolve(beans);
+            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;
+            }
+            ctxCtrlBean = (Bean<ContextControl>) beanManager.resolve(beans);
 
             ctxCtrlCreationalContext = getBeanManager().createCreationalContext(ctxCtrlBean);