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) {
Show replies by date