[webbeans-commits] Webbeans SVN: r315 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: contexts and 1 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Mon Nov 17 06:43:54 EST 2008


Author: nickarls
Date: 2008-11-17 06:43:53 -0500 (Mon, 17 Nov 2008)
New Revision: 315

Added:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionBeanMap.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/BeanMap.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionContext.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
Log:
Session context changes

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2008-11-17 11:00:16 UTC (rev 314)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2008-11-17 11:43:53 UTC (rev 315)
@@ -41,6 +41,7 @@
 import org.jboss.webbeans.introspector.AnnotatedItem;
 import org.jboss.webbeans.introspector.AnnotatedMethod;
 import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
+import org.jboss.webbeans.servlet.ServletLifecycle;
 import org.jboss.webbeans.util.Reflections;
 
 import com.google.common.collect.ForwardingMap;
@@ -126,7 +127,7 @@
       {
          addContext(new DependentContext());
          addContext(new RequestContext());
-         addContext(new SessionContext());
+         addContext(new SessionContext(this));
          addContext(new ApplicationContext());
       }
       else

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/BeanMap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/BeanMap.java	2008-11-17 11:00:16 UTC (rev 314)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/BeanMap.java	2008-11-17 11:43:53 UTC (rev 315)
@@ -18,9 +18,9 @@
    }
 
    @SuppressWarnings("unchecked")
-   public <T extends Object> T get(Bean<? extends T> key)
+   public <T extends Object> T get(Bean<? extends T> bean)
    {
-      return (T) super.get(key);
+      return (T) super.get(bean);
    }
 
    @Override
@@ -28,5 +28,11 @@
    {
       return delegate;
    }
+   
+   @SuppressWarnings("unchecked")
+   public <T extends Object> T remove(Bean<? extends T> bean)
+   {
+      return (T) super.remove(bean);
+   }
 
 }
\ No newline at end of file

Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionBeanMap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionBeanMap.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionBeanMap.java	2008-11-17 11:43:53 UTC (rev 315)
@@ -0,0 +1,40 @@
+package org.jboss.webbeans.contexts;
+
+import javax.servlet.http.HttpSession;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.ManagerImpl;
+
+public class SessionBeanMap extends BeanMap
+{
+   private HttpSession session;
+   private ManagerImpl manager;
+   
+   public SessionBeanMap(ManagerImpl manager) {
+      super();
+      this.manager = manager;
+   }
+
+   public void setSession(HttpSession session) {
+      this.session = session;
+   }
+   
+   @Override
+   public <T> T get(Bean<? extends T> bean)
+   {
+      String id = Integer.toString(manager.getBeans().indexOf(bean));
+      T instance = super.get(bean);
+      session.setAttribute(id, instance);
+      return instance;
+   }
+
+   @Override
+   public <T> T remove(Bean<? extends T> bean)
+   {
+      T instance = super.remove(bean);
+      String id = Integer.toString(manager.getBeans().indexOf(bean));
+      session.removeAttribute(id);
+      return instance;
+   }
+
+}

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionContext.java	2008-11-17 11:00:16 UTC (rev 314)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionContext.java	2008-11-17 11:43:53 UTC (rev 315)
@@ -2,16 +2,28 @@
 
 import javax.webbeans.SessionScoped;
 
+import org.jboss.webbeans.ManagerImpl;
+
 public class SessionContext extends PrivateContext {
 
-   public SessionContext()
+   private ThreadLocal<SessionBeanMap> beans;
+   
+   public SessionContext(ManagerImpl manager)
    {
       super(SessionScoped.class);
+      beans = new ThreadLocal<SessionBeanMap>();
+      beans.set(new SessionBeanMap(manager));
    }
    
    @Override
+   public BeanMap getBeanMap()
+   {
+      return beans.get();
+   }
+   
+   @Override
    public String toString()
    {
       return "Session context";
-   }
+   }   
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java	2008-11-17 11:00:16 UTC (rev 314)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java	2008-11-17 11:43:53 UTC (rev 315)
@@ -3,7 +3,12 @@
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
+import javax.webbeans.SessionScoped;
 
+import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.contexts.SessionBeanMap;
+import org.jboss.webbeans.contexts.SessionContext;
+
 public class ServletLifecycle
 {
    private static ServletContext servletContext;
@@ -25,6 +30,10 @@
    }   
    
    public static void beginRequest(HttpServletRequest request) {
+      ManagerImpl manager = new ManagerImpl();
+      SessionContext sessionContext = (SessionContext) manager.getContext(SessionScoped.class);
+      SessionBeanMap sessionBeanMap = (SessionBeanMap) sessionContext.getBeanMap();
+      sessionBeanMap.setSession(request.getSession(true));
    }
    
    public static void endRequest(HttpServletRequest request) {




More information about the weld-commits mailing list