DELTASPIKE-745 remove createContextControl and add more JavaDoc explaining the stateless nature of ContextControl
Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/7a1c9837 Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/7a1c9837 Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/7a1c9837 Branch: refs/heads/master Commit: 7a1c9837ef33b1a7ff3ac449c584f535f4c69857 Parents: 3eae53c Author: Mark Struberg <[email protected]> Authored: Wed Oct 29 18:39:35 2014 +0100 Committer: Mark Struberg <[email protected]> Committed: Thu Oct 30 00:23:29 2014 +0100 ---------------------------------------------------------------------- .../deltaspike/cdise/api/CdiContainer.java | 4 ---- .../deltaspike/cdise/api/ContextControl.java | 18 ++++++++++++++- .../cdise/openejb/OpenEjbContainerControl.java | 24 -------------------- .../cdise/owb/OpenWebBeansContainerControl.java | 24 -------------------- .../cdise/weld/WeldContainerControl.java | 23 ------------------- .../servlet/CdiServletRequestListener.java | 2 +- 6 files changed, 18 insertions(+), 77 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/deltaspike/blob/7a1c9837/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 e15453e..88ac7fb 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 @@ -73,8 +73,4 @@ public interface CdiContainer */ ContextControl getContextControl(); - /** - * @return a new - dependent context control object. - */ - ContextControl createContextControl(); } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/7a1c9837/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java ---------------------------------------------------------------------- diff --git a/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java b/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java index 3d22526..fedf2ed 100644 --- a/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java +++ b/deltaspike/cdictrl/api/src/main/java/org/apache/deltaspike/cdise/api/ContextControl.java @@ -23,7 +23,23 @@ import java.lang.annotation.Annotation; /** * Control native CDI Container Contexts. * Just inject this interface and you gain manual access over built-in Contexts. - * The respective integration code will provide a &064;Dependent scoped instance. + * The respective integration code will provide a &064;Dependent scoped instance + * which itself is stateless. + * + * The {@link #startContext(Class)} and {@link #stopContext(Class)} only affect + * the current Thread. When leaving a Thread each started context needs to get + * stopped as well (best practice is to do that in a <i>finally</i> block. + * + * If a container supports controlling the Session Context then each Thread will + * get a new 'dummy' storage assigned. It is not intended to 'attach' to a real + * Session but to allow the re-use of existing beans. + * + * Many containers make heavy use of ThreadLocals. Thus it might be necessary to + * call + * <pre> + * contextControl.startContext(ApplicationScoped.class); + * </pre> + * to 'attach' or 'activate' the ApplicationContext within your current Thread. */ public interface ContextControl { http://git-wip-us.apache.org/repos/asf/deltaspike/blob/7a1c9837/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 22a14ec..5d98263 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 @@ -172,28 +172,4 @@ 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/7a1c9837/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 8ac6326..9e8a620 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 @@ -129,28 +129,4 @@ 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/7a1c9837/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 057575f..bdc9345 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 @@ -130,27 +130,4 @@ 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); - } } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/7a1c9837/deltaspike/cdictrl/servlet/src/main/java/org/apache/deltaspike/cdise/servlet/CdiServletRequestListener.java ---------------------------------------------------------------------- diff --git a/deltaspike/cdictrl/servlet/src/main/java/org/apache/deltaspike/cdise/servlet/CdiServletRequestListener.java b/deltaspike/cdictrl/servlet/src/main/java/org/apache/deltaspike/cdise/servlet/CdiServletRequestListener.java index 840cada..efa5038 100644 --- a/deltaspike/cdictrl/servlet/src/main/java/org/apache/deltaspike/cdise/servlet/CdiServletRequestListener.java +++ b/deltaspike/cdictrl/servlet/src/main/java/org/apache/deltaspike/cdise/servlet/CdiServletRequestListener.java @@ -57,6 +57,6 @@ public class CdiServletRequestListener implements ServletRequestListener private ContextControl getContextControl() { CdiContainer container = CdiContainerLoader.getCdiContainer(); - return container.createContextControl(); + return container.getContextControl(); } }
