[weld-commits] Weld SVN: r4584 - core/trunk/impl/src/main/java/org/jboss/weld/servlet.
weld-commits at lists.jboss.org
weld-commits at lists.jboss.org
Mon Nov 2 19:16:50 EST 2009
Author: pete.muir at jboss.org
Date: 2009-11-02 19:16:50 -0500 (Mon, 02 Nov 2009)
New Revision: 4584
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletHelper.java
core/trunk/impl/src/main/java/org/jboss/weld/servlet/WeldListener.java
Log:
WELD-202, and use it in integration code
Modified: core/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletHelper.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletHelper.java 2009-11-03 00:13:42 UTC (rev 4583)
+++ core/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletHelper.java 2009-11-03 00:16:50 UTC (rev 4584)
@@ -16,12 +16,10 @@
*/
package org.jboss.weld.servlet;
+import javax.enterprise.inject.spi.BeanManager;
import javax.servlet.ServletContext;
import org.jboss.weld.BeanManagerImpl;
-import org.jboss.weld.Container;
-import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
-import org.jboss.weld.servlet.api.ServletServices;
/**
* @author pmuir
@@ -36,14 +34,15 @@
{
throw new IllegalArgumentException("ServletContext is null");
}
- BeanDeploymentArchive beanDeploymentArchive = Container.instance().deploymentServices().get(ServletServices.class).getBeanDeploymentArchive(ctx);
- BeanManagerImpl beanManagerImpl = Container.instance().beanDeploymentArchives().get(beanDeploymentArchive);
+ BeanManagerImpl beanManagerImpl = (BeanManagerImpl) ctx.getAttribute(BeanManager.class.getName());
if (beanManagerImpl == null)
{
- throw new IllegalArgumentException("Unable to find BeanManager. BeanDeploymentArchive: " + beanDeploymentArchive + "; ServletContext: " + ctx);
+ throw new IllegalArgumentException("Unable to find BeanManager. ServletContext: " + ctx);
}
- // Actually we need the manager for the current activity
- return beanManagerImpl.getCurrent();
+ else
+ {
+ return beanManagerImpl;
+ }
}
}
Modified: core/trunk/impl/src/main/java/org/jboss/weld/servlet/WeldListener.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/servlet/WeldListener.java 2009-11-03 00:13:42 UTC (rev 4583)
+++ core/trunk/impl/src/main/java/org/jboss/weld/servlet/WeldListener.java 2009-11-03 00:16:50 UTC (rev 4584)
@@ -22,12 +22,18 @@
*/
package org.jboss.weld.servlet;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
import javax.servlet.ServletRequestEvent;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSessionEvent;
+import org.jboss.weld.BeanManagerImpl;
import org.jboss.weld.Container;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
import org.jboss.weld.context.ContextLifecycle;
+import org.jboss.weld.servlet.api.ServletServices;
import org.jboss.weld.servlet.api.helpers.AbstractServletListener;
/**
@@ -53,6 +59,26 @@
}
return lifecycle;
}
+
+ private static BeanManagerImpl getBeanManager(ServletContext ctx)
+ {
+ BeanDeploymentArchive war = Container.instance().deploymentServices().get(ServletServices.class).getBeanDeploymentArchive(ctx);
+ return Container.instance().beanDeploymentArchives().get(war);
+ }
+
+ @Override
+ public void contextInitialized(ServletContextEvent sce)
+ {
+ super.contextInitialized(sce);
+ sce.getServletContext().setAttribute(BeanManager.class.getName(), getBeanManager(sce.getServletContext()));
+ }
+
+ @Override
+ public void contextDestroyed(ServletContextEvent sce)
+ {
+ sce.getServletContext().removeAttribute(BeanManager.class.getName());
+ super.contextDestroyed(sce);
+ }
/**
* Called when the session is created
More information about the weld-commits
mailing list