[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