[webbeans-commits] Webbeans SVN: r312 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: servlet and 1 other directory.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Mon Nov 17 01:51:41 EST 2008
Author: nickarls
Date: 2008-11-17 01:51:41 -0500 (Mon, 17 Nov 2008)
New Revision: 312
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/BeanMap.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/AbstractContext.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/PrivateContext.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SharedContext.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
Log:
Refactor/clean up context hierarchy
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/AbstractContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/AbstractContext.java 2008-11-16 12:38:37 UTC (rev 311)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/AbstractContext.java 2008-11-17 06:51:41 UTC (rev 312)
@@ -1,77 +1,73 @@
package org.jboss.webbeans.contexts;
import java.lang.annotation.Annotation;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
+import javax.webbeans.ContextNotActiveException;
import javax.webbeans.manager.Bean;
import javax.webbeans.manager.Context;
import javax.webbeans.manager.Manager;
-import com.google.common.collect.ForwardingMap;
-
-/**
- * Basic implementation of javax.webbeans.Context, backed by a HashMap
- *
- * @author Shane Bryzak
- * @author Nicklas Karlsson (nickarls at gmail.com)
- * @author Pete Muir
- *
- */
public abstract class AbstractContext implements Context
{
-
- public class BeanMap extends ForwardingMap<Bean<? extends Object>, Object>
+ private Class<? extends Annotation> scopeType;
+
+ public AbstractContext(Class<? extends Annotation> scopeType)
{
-
- protected Map<Bean<? extends Object>, Object> delegate;
-
- public BeanMap()
+ this.scopeType = scopeType;
+ }
+
+ public <T> T get(Bean<T> bean, boolean create)
+ {
+ if (!isActive())
{
- delegate = new ConcurrentHashMap<Bean<? extends Object>, Object>();
+ throw new ContextNotActiveException();
}
-
- @SuppressWarnings("unchecked")
- public <T extends Object> T get(Bean<? extends T> key)
+ T instance = getBeanMap().get(bean);
+ if (instance != null)
{
- return (T) super.get(key);
+ return instance;
}
-
- @Override
- protected Map<Bean<? extends Object>, Object> delegate()
+ if (!create)
{
- return delegate;
+ return null;
}
+ // TODO should bean creation be synchronized?
+ instance = bean.create();
+ getBeanMap().put(bean, instance);
+ return instance;
}
-
- private Class<? extends Annotation> scopeType;
- protected AtomicBoolean active;
- public AbstractContext(Class<? extends Annotation> scopeType)
- {
- this.scopeType = scopeType;
- active = new AtomicBoolean(true);
- }
-
- public abstract <T> T get(Bean<T> bean, boolean create);
-
public Class<? extends Annotation> getScopeType()
{
return scopeType;
}
- public abstract void destroy(Manager manager);
-
public boolean isActive()
{
- return active.get();
+ return getActive().get();
}
-
- public void setActive(boolean value)
+
+ public void setActive(boolean active) {
+ getActive().set(active);
+ }
+
+ private <T> void destroy(Manager manager, Bean<T> bean)
{
- active.set(value);
+ bean.destroy(getBeanMap().get(bean));
}
+ public void destroy(Manager manager)
+ {
+ for (Bean<? extends Object> bean : getBeanMap().keySet())
+ {
+ destroy(manager, bean);
+ }
+ getBeanMap().clear();
+ }
+
+ protected abstract BeanMap getBeanMap();
+ protected abstract AtomicBoolean getActive();
+
}
Added: 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 (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/BeanMap.java 2008-11-17 06:51:41 UTC (rev 312)
@@ -0,0 +1,32 @@
+package org.jboss.webbeans.contexts;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.webbeans.manager.Bean;
+
+import com.google.common.collect.ForwardingMap;
+
+public class BeanMap extends ForwardingMap<Bean<? extends Object>, Object>
+{
+
+ protected Map<Bean<? extends Object>, Object> delegate;
+
+ public BeanMap()
+ {
+ delegate = new ConcurrentHashMap<Bean<? extends Object>, Object>();
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends Object> T get(Bean<? extends T> key)
+ {
+ return (T) super.get(key);
+ }
+
+ @Override
+ public Map<Bean<? extends Object>, Object> delegate()
+ {
+ return delegate;
+ }
+
+}
\ No newline at end of file
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java 2008-11-16 12:38:37 UTC (rev 311)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java 2008-11-17 06:51:41 UTC (rev 312)
@@ -1,17 +1,21 @@
package org.jboss.webbeans.contexts;
+import java.util.concurrent.atomic.AtomicBoolean;
+
import javax.webbeans.ContextNotActiveException;
import javax.webbeans.Dependent;
import javax.webbeans.manager.Bean;
-import javax.webbeans.manager.Manager;
public class DependentContext extends AbstractContext
{
-
+ private BeanMap beans;
+ private AtomicBoolean active;
+
public DependentContext()
{
super(Dependent.class);
- setActive(false);
+ beans = new BeanMap();
+ active = new AtomicBoolean(false);
}
@Override
@@ -26,15 +30,20 @@
}
@Override
- public String toString()
+ protected AtomicBoolean getActive()
{
- return "Dependent context";
+ return active;
}
-
+
@Override
- public void destroy(Manager manager)
+ protected BeanMap getBeanMap()
{
-
+ return beans;
}
+ @Override
+ public String toString()
+ {
+ return "Dependent context";
+ }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/PrivateContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/PrivateContext.java 2008-11-16 12:38:37 UTC (rev 311)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/PrivateContext.java 2008-11-17 06:51:41 UTC (rev 312)
@@ -3,15 +3,11 @@
import java.lang.annotation.Annotation;
import java.util.concurrent.atomic.AtomicBoolean;
-import javax.webbeans.ContextNotActiveException;
-import javax.webbeans.manager.Bean;
-import javax.webbeans.manager.Manager;
-
-public abstract class PrivateContext extends AbstractContext
+public class PrivateContext extends AbstractContext
{
private ThreadLocal<AtomicBoolean> active;
private ThreadLocal<BeanMap> beans;
-
+
public PrivateContext(Class<? extends Annotation> scopeType)
{
super(scopeType);
@@ -20,57 +16,22 @@
active = new ThreadLocal<AtomicBoolean>();
active.set(new AtomicBoolean(true));
}
-
- public void setBeans(BeanMap beans) {
- this.beans.set(beans);
- }
-
- public <T> T get(Bean<T> bean, boolean create)
- {
- if (!isActive())
- {
- throw new ContextNotActiveException();
- }
- T instance = beans.get().get(bean);
- if (instance != null)
- {
- return instance;
- }
- if (!create)
- {
- return null;
- }
- // TODO should bean creation be synchronized?
- instance = bean.create();
- beans.get().put(bean, instance);
- return instance;
- }
-
- private <T> void destroy(Manager manager, Bean<T> bean)
+ public void setBeans(BeanMap beans)
{
- bean.destroy(beans.get().get(bean));
+ this.beans.set(beans);
}
- public void destroy(Manager manager)
- {
- for (Bean<? extends Object> bean : beans.get().keySet())
- {
- destroy(manager, bean);
- }
- beans.set(new BeanMap());
- }
-
@Override
- public boolean isActive()
+ protected AtomicBoolean getActive()
{
- return active.get().get();
+ return active.get();
}
@Override
- public void setActive(boolean value)
+ protected BeanMap getBeanMap()
{
- active.get().set(value);
+ return beans.get();
}
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SharedContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SharedContext.java 2008-11-16 12:38:37 UTC (rev 311)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SharedContext.java 2008-11-17 06:51:41 UTC (rev 312)
@@ -1,56 +1,30 @@
package org.jboss.webbeans.contexts;
import java.lang.annotation.Annotation;
+import java.util.concurrent.atomic.AtomicBoolean;
-import javax.webbeans.ContextNotActiveException;
-import javax.webbeans.manager.Bean;
-import javax.webbeans.manager.Manager;
-
-public abstract class SharedContext extends AbstractContext
+public class SharedContext extends AbstractContext
{
private BeanMap beans;
+ private AtomicBoolean active;
public SharedContext(Class<? extends Annotation> scopeType)
{
super(scopeType);
beans = new BeanMap();
- setActive(true);
+ active = new AtomicBoolean(true);
}
-
- public <T> T get(Bean<T> bean, boolean create)
- {
- if (!isActive())
- {
- throw new ContextNotActiveException();
- }
- T instance = beans.get(bean);
- if (instance != null)
- {
- return instance;
- }
- if (!create)
- {
- return null;
- }
- // TODO should bean creation be synchronized?
- instance = bean.create();
- beans.put(bean, instance);
- return instance;
- }
-
- private <T> void destroy(Manager manager, Bean<T> bean)
+ @Override
+ protected AtomicBoolean getActive()
{
- bean.destroy(beans.get(bean));
+ return active;
}
- public void destroy(Manager manager)
+ @Override
+ protected BeanMap getBeanMap()
{
- for (Bean<? extends Object> bean : beans.keySet())
- {
- destroy(manager, bean);
- }
- beans = new BeanMap();
+ return beans;
}
}
\ No newline at end of file
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-16 12:38:37 UTC (rev 311)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java 2008-11-17 06:51:41 UTC (rev 312)
@@ -3,17 +3,10 @@
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.SessionContext;
-import org.jboss.webbeans.contexts.AbstractContext.BeanMap;
-import org.jboss.webbeans.util.JNDI;
-
public class ServletLifecycle
{
private static ServletContext servletContext;
- private static final String SESSION_BEANMAP_KEY = "org.jboss.webbeans.context.session.data";
public static void beginApplication(ServletContext context)
{
@@ -32,10 +25,6 @@
}
public static void beginRequest(HttpServletRequest request) {
- ManagerImpl manager = (ManagerImpl) JNDI.lookup("manager");
- SessionContext sessionContext = (SessionContext) manager.getContext(SessionScoped.class);
- BeanMap sessionBeans = (BeanMap) request.getAttribute(SESSION_BEANMAP_KEY);
- sessionContext.setBeans(sessionBeans);
}
public static void endRequest(HttpServletRequest request) {
More information about the weld-commits
mailing list