[webbeans-commits] Webbeans SVN: r321 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/servlet and 1 other directories.
by webbeans-commits@lists.jboss.org
Author: nickarls
Date: 2008-11-18 02:49:06 -0500 (Tue, 18 Nov 2008)
New Revision: 321
Added:
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockHttpSession.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockServletContext.java
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/SessionBeanMap.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:
Minor context tunings + mocks
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-18 07:14:06 UTC (rev 320)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/PrivateContext.java 2008-11-18 07:49:06 UTC (rev 321)
@@ -6,7 +6,7 @@
public class PrivateContext extends AbstractContext
{
private ThreadLocal<AtomicBoolean> active;
- private ThreadLocal<BeanMap> beans;
+ protected ThreadLocal<BeanMap> beans;
public PrivateContext(Class<? extends Annotation> scopeType)
{
Modified: 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 2008-11-18 07:14:06 UTC (rev 320)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionBeanMap.java 2008-11-18 07:49:06 UTC (rev 321)
@@ -28,10 +28,17 @@
{
this.session = session;
}
+
+ private void checkSession() {
+ if (session == null) {
+ throw new IllegalArgumentException("Session has not been initialized in SessionBeanMap");
+ }
+ }
@SuppressWarnings("unchecked")
public <T> T get(Bean<? extends T> bean)
{
+ checkSession();
T instance = cache.get(bean);
if (instance != null)
{
@@ -48,6 +55,7 @@
public <T> T remove(Bean<? extends T> bean)
{
+ checkSession();
T instance = get(bean);
String id = KEY_PREFIX + manager.getBeans().indexOf(bean);
session.removeAttribute(id);
@@ -58,6 +66,7 @@
@SuppressWarnings("unchecked")
public void clear()
{
+ checkSession();
Enumeration names = session.getAttributeNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
@@ -66,8 +75,11 @@
cache.clear();
}
+ @SuppressWarnings("unchecked")
public Iterable<Bean<? extends Object>> keySet()
{
+ checkSession();
+
List<Bean<?>> beans = new ArrayList<Bean<?>>();
Enumeration names = session.getAttributeNames();
@@ -85,6 +97,7 @@
public <T> T put(Bean<? extends T> bean, T instance)
{
+ checkSession();
String id = KEY_PREFIX + manager.getBeans().indexOf(bean);
session.setAttribute(id, instance);
return cache.put(bean, 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-18 07:14:06 UTC (rev 320)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionContext.java 2008-11-18 07:49:06 UTC (rev 321)
@@ -1,29 +1,25 @@
package org.jboss.webbeans.contexts;
+import javax.servlet.http.HttpSession;
import javax.webbeans.SessionScoped;
import org.jboss.webbeans.ManagerImpl;
public class SessionContext extends PrivateContext {
- private ThreadLocal<BeanMap> beans;
-
public SessionContext(ManagerImpl manager)
{
super(SessionScoped.class);
- beans = new ThreadLocal<BeanMap>();
beans.set(new SessionBeanMap(manager));
}
@Override
- public BeanMap getBeanMap()
- {
- return beans.get();
- }
-
- @Override
public String toString()
{
return "Session context";
}
+
+ public void setSession(HttpSession session) {
+ ((SessionBeanMap)getBeanMap()).setSession(session);
+ }
}
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-18 07:14:06 UTC (rev 320)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java 2008-11-18 07:49:06 UTC (rev 321)
@@ -8,9 +8,12 @@
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.contexts.SessionBeanMap;
import org.jboss.webbeans.contexts.SessionContext;
+import org.jboss.webbeans.util.JNDI;
public class ServletLifecycle
{
+ private static final String MANAGER_JNDI_KEY = "java:comp/Manager";
+
private static ServletContext servletContext;
public static void beginApplication(ServletContext context)
@@ -30,10 +33,9 @@
}
public static void beginRequest(HttpServletRequest request) {
- ManagerImpl manager = new ManagerImpl();
+ ManagerImpl manager = (ManagerImpl) JNDI.lookup(MANAGER_JNDI_KEY);
SessionContext sessionContext = (SessionContext) manager.getContext(SessionScoped.class);
- SessionBeanMap sessionBeanMap = (SessionBeanMap) sessionContext.getBeanMap();
- sessionBeanMap.setSession(request.getSession(true));
+ sessionContext.setSession(request.getSession(true));
}
public static void endRequest(HttpServletRequest request) {
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockHttpSession.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockHttpSession.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockHttpSession.java 2008-11-18 07:49:06 UTC (rev 321)
@@ -0,0 +1,152 @@
+package org.jboss.webbeans.test.mock;
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionContext;
+
+@SuppressWarnings("deprecation")
+public class MockHttpSession implements HttpSession
+{
+ private Map<String, Object> attributes = new HashMap<String, Object>();
+ private boolean isInvalid;
+ private ServletContext servletContext;
+
+ @SuppressWarnings("unchecked")
+ public class IteratorEnumeration implements Enumeration
+ {
+
+ private Iterator iterator;
+
+ public IteratorEnumeration(Iterator iterator)
+ {
+ this.iterator = iterator;
+ }
+
+ public boolean hasMoreElements()
+ {
+ return iterator.hasNext();
+ }
+
+ public Object nextElement()
+ {
+ return iterator.next();
+ }
+
+ }
+
+ public MockHttpSession(ServletContext servletContext)
+ {
+ this.servletContext = servletContext;
+ }
+
+ public boolean isInvalid()
+ {
+ return isInvalid;
+ }
+
+ public long getCreationTime()
+ {
+ return 0;
+ }
+
+ public String getId()
+ {
+ return null;
+ }
+
+ public long getLastAccessedTime()
+ {
+ return 0;
+ }
+
+ private int maxInactiveInterval;
+
+ public void setMaxInactiveInterval(int max)
+ {
+ maxInactiveInterval = max;
+ }
+
+ public int getMaxInactiveInterval()
+ {
+ return maxInactiveInterval;
+ }
+
+ public HttpSessionContext getSessionContext()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public Object getAttribute(String att)
+ {
+ return attributes.get(att);
+ }
+
+ public Object getValue(String att)
+ {
+ return getAttribute(att);
+ }
+
+ public Enumeration getAttributeNames()
+ {
+ return new IteratorEnumeration( attributes.keySet().iterator() );
+ }
+
+ public String[] getValueNames()
+ {
+ return attributes.keySet().toArray( new String[0] );
+ }
+
+ public void setAttribute(String att, Object value)
+ {
+ if (value==null)
+ {
+ attributes.remove(att);
+ }
+ else
+ {
+ attributes.put(att, value);
+ }
+ }
+
+ public void putValue(String att, Object value)
+ {
+ setAttribute(att, value);
+ }
+
+ public void removeAttribute(String att)
+ {
+ attributes.remove(att);
+ }
+
+ public void removeValue(String att)
+ {
+ removeAttribute(att);
+ }
+
+ public void invalidate()
+ {
+ attributes.clear();
+ isInvalid = true;
+ }
+
+ public boolean isNew()
+ {
+ return false;
+ }
+
+ public Map<String, Object> getAttributes()
+ {
+ return attributes;
+ }
+
+ public ServletContext getServletContext()
+ {
+ return servletContext;
+ }
+
+}
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockServletContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockServletContext.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockServletContext.java 2008-11-18 07:49:06 UTC (rev 321)
@@ -0,0 +1,167 @@
+package org.jboss.webbeans.test.mock;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Set;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+
+public class MockServletContext implements ServletContext
+{
+
+ public Object getAttribute(String arg0)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Enumeration getAttributeNames()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ServletContext getContext(String arg0)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getContextPath()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getInitParameter(String arg0)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Enumeration getInitParameterNames()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public int getMajorVersion()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public String getMimeType(String arg0)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public int getMinorVersion()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public RequestDispatcher getNamedDispatcher(String arg0)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getRealPath(String arg0)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public RequestDispatcher getRequestDispatcher(String arg0)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public URL getResource(String arg0) throws MalformedURLException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public InputStream getResourceAsStream(String arg0)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Set getResourcePaths(String arg0)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getServerInfo()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Servlet getServlet(String arg0) throws ServletException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getServletContextName()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Enumeration getServletNames()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Enumeration getServlets()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void log(String arg0)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void log(Exception arg0, String arg1)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void log(String arg0, Throwable arg1)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void removeAttribute(String arg0)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setAttribute(String arg0, Object arg1)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+}
15 years, 5 months
[webbeans-commits] Webbeans SVN: r320 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts.
by webbeans-commits@lists.jboss.org
Author: nickarls
Date: 2008-11-18 02:14:06 -0500 (Tue, 18 Nov 2008)
New Revision: 320
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SimpleBeanMap.java
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/PrivateContext.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionBeanMap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionContext.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SharedContext.java
Log:
Contexts refactoring
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-18 04:15:08 UTC (rev 319)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/BeanMap.java 2008-11-18 07:14:06 UTC (rev 320)
@@ -1,38 +1,12 @@
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>
+public interface BeanMap
{
-
- 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> bean)
- {
- return (T) super.get(bean);
- }
-
- @Override
- public Map<Bean<? extends Object>, Object> delegate()
- {
- return delegate;
- }
-
- @SuppressWarnings("unchecked")
- public <T extends Object> T remove(Bean<? extends T> bean)
- {
- return (T) super.remove(bean);
- }
-
+ public abstract <T extends Object> T get(Bean<? extends T> bean);
+ public abstract <T extends Object> T remove(Bean<? extends T> bean);
+ public abstract void clear();
+ public abstract Iterable<Bean<? extends Object>> keySet();
+ public abstract <T extends Object> T put(Bean<? extends T> bean, T instance);
}
\ No newline at end of file
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-18 04:15:08 UTC (rev 319)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/PrivateContext.java 2008-11-18 07:14:06 UTC (rev 320)
@@ -12,16 +12,11 @@
{
super(scopeType);
beans = new ThreadLocal<BeanMap>();
- beans.set(new BeanMap());
+ beans.set(new SimpleBeanMap());
active = new ThreadLocal<AtomicBoolean>();
active.set(new AtomicBoolean(true));
}
- public void setBeans(BeanMap beans)
- {
- this.beans.set(beans);
- }
-
@Override
protected AtomicBoolean getActive()
{
Modified: 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 2008-11-18 04:15:08 UTC (rev 319)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionBeanMap.java 2008-11-18 07:14:06 UTC (rev 320)
@@ -1,40 +1,93 @@
package org.jboss.webbeans.contexts;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
import javax.servlet.http.HttpSession;
import javax.webbeans.manager.Bean;
import org.jboss.webbeans.ManagerImpl;
-public class SessionBeanMap extends BeanMap
+public class SessionBeanMap implements BeanMap
{
+ private static final String KEY_PREFIX = "SessionScoped#";
+
private HttpSession session;
private ManagerImpl manager;
-
- public SessionBeanMap(ManagerImpl manager) {
+ private BeanMap cache;
+
+ public SessionBeanMap(ManagerImpl manager)
+ {
super();
this.manager = manager;
+ cache = new SimpleBeanMap();
}
- public void setSession(HttpSession session) {
+ public void setSession(HttpSession session)
+ {
this.session = session;
}
-
- @Override
+
+ @SuppressWarnings("unchecked")
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);
+ T instance = cache.get(bean);
+ if (instance != null)
+ {
+ return instance;
+ }
+ String id = KEY_PREFIX + manager.getBeans().indexOf(bean);
+ instance = (T) session.getAttribute(id);
+ if (instance != null)
+ {
+ cache.put(bean, 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));
+ T instance = get(bean);
+ String id = KEY_PREFIX + manager.getBeans().indexOf(bean);
session.removeAttribute(id);
+ cache.remove(bean);
return instance;
}
+ @SuppressWarnings("unchecked")
+ public void clear()
+ {
+ Enumeration names = session.getAttributeNames();
+ while (names.hasMoreElements()) {
+ String name = (String) names.nextElement();
+ session.removeAttribute(name);
+ }
+ cache.clear();
+ }
+
+ public Iterable<Bean<? extends Object>> keySet()
+ {
+ List<Bean<?>> beans = new ArrayList<Bean<?>>();
+
+ Enumeration names = session.getAttributeNames();
+ while (names.hasMoreElements()) {
+ String name = (String) names.nextElement();
+ if (name.startsWith(KEY_PREFIX)) {
+ String id = name.substring(KEY_PREFIX.length());
+ Bean<?> bean = manager.getBeans().get(Integer.parseInt(id));
+ beans.add(bean);
+ }
+ }
+
+ return beans;
+ }
+
+ public <T> T put(Bean<? extends T> bean, T instance)
+ {
+ String id = KEY_PREFIX + manager.getBeans().indexOf(bean);
+ session.setAttribute(id, instance);
+ return cache.put(bean, 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-18 04:15:08 UTC (rev 319)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SessionContext.java 2008-11-18 07:14:06 UTC (rev 320)
@@ -6,12 +6,12 @@
public class SessionContext extends PrivateContext {
- private ThreadLocal<SessionBeanMap> beans;
+ private ThreadLocal<BeanMap> beans;
public SessionContext(ManagerImpl manager)
{
super(SessionScoped.class);
- beans = new ThreadLocal<SessionBeanMap>();
+ beans = new ThreadLocal<BeanMap>();
beans.set(new SessionBeanMap(manager));
}
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-18 04:15:08 UTC (rev 319)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SharedContext.java 2008-11-18 07:14:06 UTC (rev 320)
@@ -11,7 +11,7 @@
public SharedContext(Class<? extends Annotation> scopeType)
{
super(scopeType);
- beans = new BeanMap();
+ beans = new SimpleBeanMap();
active = new AtomicBoolean(true);
}
Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SimpleBeanMap.java (from rev 319, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/BeanMap.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SimpleBeanMap.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SimpleBeanMap.java 2008-11-18 07:14:06 UTC (rev 320)
@@ -0,0 +1,53 @@
+package org.jboss.webbeans.contexts;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.webbeans.manager.Bean;
+
+import com.google.common.collect.ForwardingMap;
+
+public class SimpleBeanMap extends ForwardingMap<Bean<? extends Object>, Object> implements BeanMap
+{
+
+ protected Map<Bean<? extends Object>, Object> delegate;
+
+ public SimpleBeanMap()
+ {
+ delegate = new ConcurrentHashMap<Bean<? extends Object>, Object>();
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends Object> T get(Bean<? extends T> bean)
+ {
+ return (T) super.get(bean);
+ }
+
+ @Override
+ public Map<Bean<? extends Object>, Object> delegate()
+ {
+ return delegate;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends Object> T remove(Bean<? extends T> bean)
+ {
+ return (T) super.remove(bean);
+ }
+
+ public void clear() {
+ delegate.clear();
+ }
+
+ public Set<Bean<? extends Object>> keySet() {
+ return delegate.keySet();
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T put(Bean<? extends T> bean, T instance)
+ {
+ return (T) delegate.put(bean, instance);
+ }
+
+}
\ No newline at end of file
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/SimpleBeanMap.java
___________________________________________________________________
Name: svn:mergeinfo
+
15 years, 5 months
[webbeans-commits] Webbeans SVN: r319 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-11-17 23:15:08 -0500 (Mon, 17 Nov 2008)
New Revision: 319
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/AbstractContext.java
Log:
javadoc
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-18 03:54:10 UTC (rev 318)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/AbstractContext.java 2008-11-18 04:15:08 UTC (rev 319)
@@ -8,8 +8,16 @@
import javax.webbeans.manager.Context;
import javax.webbeans.manager.Manager;
+/**
+ * Base for the Context implementations
+ *
+ * @author Nicklas Karlsson
+ * @author Pete Muir
+ *
+ */
public abstract class AbstractContext implements Context
{
+
private Class<? extends Annotation> scopeType;
public AbstractContext(Class<? extends Annotation> scopeType)
@@ -17,6 +25,15 @@
this.scopeType = scopeType;
}
+ /**
+ * Get the bean if it exists in the contexts.
+ *
+ * @param create If true, a new instance of the bean will be created if none
+ * exists
+ *
+ * @throws ContextNotActiveException if the context is not active
+ *
+ */
public <T> T get(Bean<T> bean, boolean create)
{
if (!isActive())
@@ -39,25 +56,36 @@
return instance;
}
+ /**
+ * Get the scope the context is for
+ */
public Class<? extends Annotation> getScopeType()
{
return scopeType;
}
+ /**
+ * Return true if the context is active
+ */
public boolean isActive()
{
return getActive().get();
}
+ /**
+ * Set the context active, internal API for WBRI
+ */
public void setActive(boolean active) {
getActive().set(active);
}
+ // TODO Do we need this
private <T> void destroy(Manager manager, Bean<T> bean)
{
bean.destroy(getBeanMap().get(bean));
}
+ // TODO Do we need this
public void destroy(Manager manager)
{
for (Bean<? extends Object> bean : getBeanMap().keySet())
15 years, 5 months
[webbeans-commits] Webbeans SVN: r318 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-11-17 22:54:10 -0500 (Mon, 17 Nov 2008)
New Revision: 318
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyMethodHandler.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyPool.java
Log:
WS
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyMethodHandler.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyMethodHandler.java 2008-11-18 03:52:16 UTC (rev 317)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyMethodHandler.java 2008-11-18 03:54:10 UTC (rev 318)
@@ -26,8 +26,7 @@
ProxyMethodHandler.manager = manager;
}
- public Object invoke(Object self, Method method, Method proceed,
- Object[] args) throws Throwable
+ public Object invoke(Object self, Method method, Method proceed, Object[] args) throws Throwable
{
if (bean == null)
{
@@ -38,7 +37,5 @@
Method proxiedMethod = Reflections.lookupMethod(method, proxiedInstance);
return proxiedMethod.invoke(proxiedInstance, args);
}
-
-
-
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyPool.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyPool.java 2008-11-18 03:52:16 UTC (rev 317)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ProxyPool.java 2008-11-18 03:54:10 UTC (rev 318)
@@ -45,7 +45,8 @@
private ManagerImpl manager;
private Pool pool;
- public ProxyPool(ManagerImpl manager) {
+ public ProxyPool(ManagerImpl manager)
+ {
this.manager = manager;
this.pool = new Pool();
}
@@ -55,14 +56,19 @@
Class<?> superclass;
}
- private TypeInfo getTypeInfo(Set<Class<?>> types) {
+ private TypeInfo getTypeInfo(Set<Class<?>> types)
+ {
TypeInfo typeInfo = new TypeInfo();
List<Class<?>> interfaces = new ArrayList<Class<?>>();
Class<?> superclass = null;
- for (Class<?> type : types) {
- if (type.isInterface()) {
+ for (Class<?> type : types)
+ {
+ if (type.isInterface())
+ {
interfaces.add(type);
- } else if (superclass == null || (type != Object.class && superclass.isAssignableFrom(type))) {
+ }
+ else if (superclass == null || (type != Object.class && superclass.isAssignableFrom(type)))
+ {
superclass = type;
}
}
@@ -72,14 +78,15 @@
return typeInfo;
}
- private <T> T createClientProxy(Bean<T> bean, int beanIndex) throws InstantiationException, IllegalAccessException {
+ private <T> T createClientProxy(Bean<T> bean, int beanIndex) throws InstantiationException, IllegalAccessException
+ {
ProxyFactory proxyFactory = new ProxyFactory();
TypeInfo typeInfo = getTypeInfo(bean.getTypes());
proxyFactory.setInterfaces(typeInfo.interfaces);
proxyFactory.setSuperclass(typeInfo.superclass);
T clientProxy = (T) proxyFactory.createClass().newInstance();
ProxyMethodHandler proxyMethodHandler = new ProxyMethodHandler(bean, beanIndex, manager);
- ((ProxyObject)clientProxy).setHandler(proxyMethodHandler);
+ ((ProxyObject) clientProxy).setHandler(proxyMethodHandler);
return clientProxy;
}
@@ -92,7 +99,8 @@
{
int beanIndex = manager.getBeans().indexOf(bean);
// Implicit add required since it is looked up on activation with then index
- if (beanIndex < 0) {
+ if (beanIndex < 0)
+ {
manager.addBean(bean);
beanIndex = manager.getBeans().size() - 1;
}
@@ -108,5 +116,4 @@
return clientProxy;
}
-
}
15 years, 5 months
[webbeans-commits] Webbeans SVN: r317 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/introspector/jlr and 2 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-11-17 22:52:16 -0500 (Mon, 17 Nov 2008)
New Revision: 317
Removed:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxy.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ClientProxyTest.java
Log:
Remove ClientProxy util class
Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxy.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxy.java 2008-11-18 03:00:52 UTC (rev 316)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxy.java 2008-11-18 03:52:16 UTC (rev 317)
@@ -1,40 +0,0 @@
-package org.jboss.webbeans.bean.proxy;
-
-import org.jboss.webbeans.util.Reflections;
-
-
-
-public class ClientProxy
-{
-
- public static boolean isProxyable(Class<?> rawType)
- {
- // TODO Add logging
-
- if (Reflections.getConstructor(rawType) == null)
- {
- return false;
- }
- else if (Reflections.isTypeOrAnyMethodFinal(rawType))
- {
- return false;
- }
- else if (Reflections.isPrimitive(rawType))
- {
- return false;
- }
- else if (Reflections.isArrayType(rawType))
- {
- return false;
- }
- else
- {
- return true;
- }
- }
-
- public static boolean isProxy(Object instance) {
- return instance.getClass().getName().indexOf("_$$_javassist_") > 0;
- }
-
-}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java 2008-11-18 03:00:52 UTC (rev 316)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java 2008-11-18 03:52:16 UTC (rev 317)
@@ -15,7 +15,6 @@
import javax.webbeans.BindingType;
import org.jboss.webbeans.ManagerImpl;
-import org.jboss.webbeans.bean.proxy.ClientProxy;
import org.jboss.webbeans.bindings.CurrentAnnotationLiteral;
import org.jboss.webbeans.introspector.AnnotatedItem;
import org.jboss.webbeans.introspector.AnnotatedParameter;
@@ -227,7 +226,26 @@
public boolean isProxyable()
{
- return ClientProxy.isProxyable(getType());
+ if (Reflections.getConstructor(getType()) == null)
+ {
+ return false;
+ }
+ else if (Reflections.isTypeOrAnyMethodFinal(getType()))
+ {
+ return false;
+ }
+ else if (Reflections.isPrimitive(getType()))
+ {
+ return false;
+ }
+ else if (Reflections.isArrayType(getType()))
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
}
}
\ No newline at end of file
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java 2008-11-18 03:00:52 UTC (rev 316)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java 2008-11-18 03:52:16 UTC (rev 317)
@@ -303,6 +303,11 @@
}
}
throw new IllegalArgumentException("Method " + method.getName() + " not implemented by instance");
+ }
+
+ public static boolean isProxy(Object instance)
+ {
+ return instance.getClass().getName().indexOf("_$$_javassist_") > 0;
}
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ClientProxyTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ClientProxyTest.java 2008-11-18 03:00:52 UTC (rev 316)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ClientProxyTest.java 2008-11-18 03:52:16 UTC (rev 317)
@@ -9,34 +9,34 @@
import javax.webbeans.UnproxyableDependencyException;
import javax.webbeans.manager.Bean;
-import org.jboss.webbeans.bean.proxy.ClientProxy;
import org.jboss.webbeans.test.beans.FinalTuna;
import org.jboss.webbeans.test.beans.Fox;
import org.jboss.webbeans.test.beans.Tuna;
import org.jboss.webbeans.test.beans.TunedTuna;
import org.jboss.webbeans.util.BeanFactory;
+import org.jboss.webbeans.util.Reflections;
import org.testng.annotations.Test;
@SpecVersion("PDR")
public class ClientProxyTest extends AbstractTest
{
- @Test(groups = "clientProxy")
+ @Test(groups = "Reflections")
@SpecAssertion(section = { "4.4", "4.8" })
- public void testClientProxyUsedForNormalScope()
+ public void testReflectionsUsedForNormalScope()
{
Bean<Tuna> tunaBean = BeanFactory.createSimpleBean(Tuna.class, manager);
Tuna tuna = manager.getInstance(tunaBean);
- assert ClientProxy.isProxy(tuna);
+ assert Reflections.isProxy(tuna);
}
- @Test(groups = "clientProxy")
+ @Test(groups = "Reflections")
@SpecAssertion(section = { "4.4", "4.8" })
- public void testClientProxyNotUsedForPseudoScope()
+ public void testReflectionsNotUsedForPseudoScope()
{
Bean<Fox> foxBean = BeanFactory.createSimpleBean(Fox.class, manager);
Fox fox = manager.getInstance(foxBean);
- assert !ClientProxy.isProxy(fox);
+ assert !Reflections.isProxy(fox);
}
private byte[] serializeBean(Object instance) throws IOException {
@@ -51,20 +51,20 @@
return in.readObject();
}
- @Test(groups = "clientProxy")
+ @Test(groups = "Reflections")
@SpecAssertion(section = "4.4")
- public void testSimpleWebBeanClientProxyIsSerializable() throws IOException, ClassNotFoundException
+ public void testSimpleWebBeanReflectionsIsSerializable() throws IOException, ClassNotFoundException
{
Bean<TunedTuna> tunaBean = BeanFactory.createSimpleBean(TunedTuna.class, manager);
TunedTuna tuna = manager.getInstance(tunaBean);
- assert ClientProxy.isProxy(tuna);
+ assert Reflections.isProxy(tuna);
byte[] bytes = serializeBean(tuna);
tuna = (TunedTuna) deserializeBean(bytes);
- assert ClientProxy.isProxy(tuna);
+ assert Reflections.isProxy(tuna);
assert tuna.getState().equals("tuned");
}
- @Test(groups = "clientProxy", expectedExceptions = UnproxyableDependencyException.class)
+ @Test(groups = "Reflections", expectedExceptions = UnproxyableDependencyException.class)
@SpecAssertion(section = "4.4.1")
public void testInjectionPointWithUnproxyableTypeWhichResolvesToNormalScopedWebBean()
{
@@ -74,18 +74,18 @@
assert false;
}
- @Test(groups = "clientProxy")
+ @Test(groups = "Reflections")
@SpecAssertion(section = "4.4.2")
- public void testClientProxyInvocation()
+ public void testReflectionsInvocation()
{
Bean<TunedTuna> tunaBean = BeanFactory.createSimpleBean(TunedTuna.class, manager);
manager.addBean(tunaBean);
TunedTuna tuna = manager.getInstance(tunaBean);
- assert ClientProxy.isProxy(tuna);
+ assert Reflections.isProxy(tuna);
assert tuna.getState().equals("tuned");
}
- @Test(groups = "clientProxy")
+ @Test(groups = "Reflections")
public void testProxyCreationDoesImplicitAddBean() {
Bean<Tuna> tunaBean = BeanFactory.createSimpleBean(Tuna.class, manager);
Tuna tuna = manager.getInstance(tunaBean);
15 years, 5 months
[webbeans-commits] Webbeans SVN: r316 - in ri/trunk/webbeans-ri/src: test/java/org/jboss/webbeans/test and 1 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-11-17 22:00:52 -0500 (Mon, 17 Nov 2008)
New Revision: 316
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeferredEventNotificationTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeploymentTypeTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventBeanModelTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockManagerImpl.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java
Log:
Fix broken build, and consistent use of arrays in ManagerImpl
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:43:53 UTC (rev 315)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-11-18 03:00:52 UTC (rev 316)
@@ -41,7 +41,6 @@
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;
@@ -90,8 +89,6 @@
public ManagerImpl()
{
- initEnabledDeploymentTypes(null);
- initContexts(null);
this.modelManager = new ModelManager();
this.beans = new CopyOnWriteArrayList<Bean<?>>();
this.eventBus = new EventBus();
@@ -99,10 +96,17 @@
this.proxyPool = new ProxyPool(this);
this.decorators = new HashSet<Decorator>();
this.interceptors = new HashSet<Interceptor>();
+ initEnabledDeploymentTypes(null);
+ initContexts();
+ addStandardBeans();
+ }
+
+ protected void addStandardBeans()
+ {
addBean( new SimpleBean<DefaultEnterpriseBeanLookup>( DefaultEnterpriseBeanLookup.class, this ) );
}
- protected void initEnabledDeploymentTypes(List<Class<? extends Annotation>> enabledDeploymentTypes)
+ protected void initEnabledDeploymentTypes(Class<? extends Annotation> ... enabledDeploymentTypes)
{
this.enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
if (enabledDeploymentTypes == null)
@@ -112,7 +116,10 @@
}
else
{
- this.enabledDeploymentTypes.addAll(enabledDeploymentTypes);
+ for (Class<? extends Annotation> enabledDeploymentType : enabledDeploymentTypes)
+ {
+ this.enabledDeploymentTypes.add(enabledDeploymentType);
+ }
if (!this.enabledDeploymentTypes.get(0).equals(Standard.class))
{
throw new DeploymentException("@Standard must be the lowest precedence deployment type");
@@ -123,7 +130,7 @@
protected void initContexts(Context... contexts)
{
this.contextMap = new ContextMap();
- if (contexts == null)
+ if (contexts.length == 0)
{
addContext(new DependentContext());
addContext(new RequestContext());
@@ -220,6 +227,7 @@
public Manager setBeans(Set<AbstractBean<?, ?>> beans) {
this.beans = new CopyOnWriteArrayList<Bean<?>>(beans);
getResolutionManager().clear();
+ addStandardBeans();
return this;
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java 2008-11-17 11:43:53 UTC (rev 315)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java 2008-11-18 03:00:52 UTC (rev 316)
@@ -1,9 +1,5 @@
package org.jboss.webbeans.test;
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.webbeans.Decorator;
import javax.webbeans.Interceptor;
import javax.webbeans.Production;
@@ -46,12 +42,7 @@
protected void addEnabledDeploymentTypes()
{
- List<Class<? extends Annotation>> enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
- enabledDeploymentTypes.add(Standard.class);
- enabledDeploymentTypes.add(Production.class);
- enabledDeploymentTypes.add(AnotherDeploymentType.class);
- enabledDeploymentTypes.add(HornedAnimalDeploymentType.class);
- manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
+ manager.setEnabledDeploymentTypes(Standard.class, Production.class, AnotherDeploymentType.class, HornedAnimalDeploymentType.class);
}
protected void addStereotypes()
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeferredEventNotificationTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeferredEventNotificationTest.java 2008-11-17 11:43:53 UTC (rev 315)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeferredEventNotificationTest.java 2008-11-18 03:00:52 UTC (rev 316)
@@ -2,10 +2,6 @@
import static org.jboss.webbeans.util.BeanFactory.createSimpleBean;
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.webbeans.Observes;
import javax.webbeans.Standard;
@@ -36,10 +32,7 @@
@Override
protected void addEnabledDeploymentTypes()
{
- List<Class<? extends Annotation>> enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
- enabledDeploymentTypes.add(Standard.class);
- enabledDeploymentTypes.add(AnotherDeploymentType.class);
- manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
+ manager.setEnabledDeploymentTypes(Standard.class, AnotherDeploymentType.class);
}
public class AnObserver
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeploymentTypeTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeploymentTypeTest.java 2008-11-17 11:43:53 UTC (rev 315)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/DeploymentTypeTest.java 2008-11-18 03:00:52 UTC (rev 316)
@@ -2,10 +2,6 @@
import static org.jboss.webbeans.util.BeanFactory.createSimpleBean;
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.webbeans.DefinitionException;
import javax.webbeans.DeploymentException;
import javax.webbeans.Production;
@@ -109,11 +105,7 @@
@Test(groups="beanLifecycle", expectedExceptions=UnsatisfiedDependencyException.class) @SpecAssertion(section="2.5.6")
public void testBeanWithDisabledDeploymentTypeNotInstantiated()
{
- List<Class<? extends Annotation>> enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
- enabledDeploymentTypes.add(Standard.class);
- enabledDeploymentTypes.add(AnotherDeploymentType.class);
- enabledDeploymentTypes.add(HornedAnimalDeploymentType.class);
- manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
+ manager.setEnabledDeploymentTypes(Standard.class, AnotherDeploymentType.class, HornedAnimalDeploymentType.class);
Bean<RedSnapper> bean = createSimpleBean(RedSnapper.class, manager);
manager.addBean(bean);
@@ -132,11 +124,7 @@
@Test @SpecAssertion(section={"2.5.6", "2.5.7"})
public void testCustomDeploymentTypes()
{
- List<Class<? extends Annotation>> enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
- enabledDeploymentTypes.add(Standard.class);
- enabledDeploymentTypes.add(AnotherDeploymentType.class);
- enabledDeploymentTypes.add(HornedAnimalDeploymentType.class);
- manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
+ manager.setEnabledDeploymentTypes(Standard.class, AnotherDeploymentType.class, HornedAnimalDeploymentType.class);
assert manager.getEnabledDeploymentTypes().size() == 3;
assert manager.getEnabledDeploymentTypes().get(0).equals(Standard.class);
assert manager.getEnabledDeploymentTypes().get(1).equals(AnotherDeploymentType.class);
@@ -146,10 +134,7 @@
@Test(expectedExceptions=DeploymentException.class) @SpecAssertion(section="2.5.6")
public void testStandardMustBeDeclared()
{
- List<Class<? extends Annotation>> enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
- enabledDeploymentTypes.add(AnotherDeploymentType.class);
- enabledDeploymentTypes.add(HornedAnimalDeploymentType.class);
- manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
+ manager.setEnabledDeploymentTypes(AnotherDeploymentType.class, HornedAnimalDeploymentType.class);
}
@Test(groups={"stub", "webbeansxml"}, expectedExceptions=DeploymentException.class) @SpecAssertion(section="2.5.6")
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventBeanModelTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventBeanModelTest.java 2008-11-17 11:43:53 UTC (rev 315)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventBeanModelTest.java 2008-11-18 03:00:52 UTC (rev 316)
@@ -1,9 +1,6 @@
package org.jboss.webbeans.test;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.List;
import javax.webbeans.Standard;
@@ -30,11 +27,8 @@
@BeforeMethod
public void before() throws Exception
{
- List<Class<? extends Annotation>> enabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
- enabledDeploymentTypes.add(Standard.class);
- enabledDeploymentTypes.add(AnotherDeploymentType.class);
manager = new MockManagerImpl();
- manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
+ manager.setEnabledDeploymentTypes(Standard.class, AnotherDeploymentType.class);
Field eventModelField = this.getClass().getDeclaredField("eventModelField");
/*eventBeanModel = new EventBeanModel<EventImpl<DangerCall>>(
new SimpleAnnotatedField<EventImpl<DangerCall>>(eventModelField),
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventTest.java 2008-11-17 11:43:53 UTC (rev 315)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EventTest.java 2008-11-18 03:00:52 UTC (rev 316)
@@ -55,7 +55,7 @@
enabledDeploymentTypes.add(Standard.class);
enabledDeploymentTypes.add(AnotherDeploymentType.class);
manager = new MockManagerImpl();
- manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
+ manager.setEnabledDeploymentTypes(Standard.class, AnotherDeploymentType.class);
}
/**
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java 2008-11-17 11:43:53 UTC (rev 315)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java 2008-11-18 03:00:52 UTC (rev 316)
@@ -55,7 +55,7 @@
enabledDeploymentTypes.add(Standard.class);
enabledDeploymentTypes.add(AnotherDeploymentType.class);
manager = new MockManagerImpl();
- manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
+ manager.setEnabledDeploymentTypes(Standard.class, AnotherDeploymentType.class);
// Create an observer with known binding types
// TODO This should be a real class being mapped
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockManagerImpl.java 2008-11-17 11:43:53 UTC (rev 315)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockManagerImpl.java 2008-11-18 03:00:52 UTC (rev 316)
@@ -3,7 +3,6 @@
import java.lang.annotation.Annotation;
import java.util.Arrays;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import javax.webbeans.Observer;
@@ -94,7 +93,7 @@
return observer;
}
- public void setEnabledDeploymentTypes(List<Class<? extends Annotation>> enabledDeploymentTypes)
+ public void setEnabledDeploymentTypes(Class<? extends Annotation>... enabledDeploymentTypes)
{
initEnabledDeploymentTypes(enabledDeploymentTypes);
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java 2008-11-17 11:43:53 UTC (rev 315)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java 2008-11-18 03:00:52 UTC (rev 316)
@@ -1,18 +1,37 @@
package org.jboss.webbeans.test.mock;
+import java.net.URL;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
+import org.jboss.webbeans.bootstrap.spi.EjbDescriptor;
import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
public class MockWebBeanDiscovery implements WebBeanDiscovery
{
public static Set<Class<?>> webBeanClasses = new HashSet<Class<?>>();
+
+ public static Set<URL> webBeansXmlFiles = new HashSet<URL>();
- public Set<Class<?>> discoverWebBeanClasses()
+ public static Map<Class<?>, EjbDescriptor<?>> ejbs = new HashMap<Class<?>, EjbDescriptor<?>>();
+
+ public Iterable<Class<?>> discoverWebBeanClasses()
{
return webBeanClasses;
}
+
+ public Map<Class<?>, EjbDescriptor<?>> discoverEjbs()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Iterable<URL> discoverWebBeansXml()
+ {
+ return webBeansXmlFiles;
+ }
}
15 years, 5 months
[webbeans-commits] Webbeans SVN: r315 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: contexts and 1 other directories.
by webbeans-commits@lists.jboss.org
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) {
15 years, 5 months
[webbeans-commits] Webbeans SVN: r314 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap: spi and 1 other directory.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-11-17 06:00:16 -0500 (Mon, 17 Nov 2008)
New Revision: 314
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/EjbDescriptor.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/WebBeanDiscovery.java
Log:
Update SPI
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java 2008-11-17 06:55:01 UTC (rev 313)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java 2008-11-17 11:00:16 UTC (rev 314)
@@ -92,7 +92,7 @@
registerBeans(new HashSet<Class<?>>(Arrays.asList(classes)));
}
- public void registerBeans(Set<Class<?>> classes)
+ public void registerBeans(Iterable<Class<?>> classes)
{
Set<AbstractBean<?, ?>> beans = createBeans(classes);
manager.setBeans(beans);
@@ -108,7 +108,7 @@
return createBeans(new HashSet<Class<?>>(Arrays.asList(classes)));
}
- public Set<AbstractBean<?, ?>> createBeans(Set<Class<?>> classes)
+ public Set<AbstractBean<?, ?>> createBeans(Iterable<Class<?>> classes)
{
Set<AbstractBean<?, ?>> beans = new HashSet<AbstractBean<?, ?>>();
for (Class<?> clazz : classes)
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/EjbDescriptor.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/EjbDescriptor.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/EjbDescriptor.java 2008-11-17 11:00:16 UTC (rev 314)
@@ -0,0 +1,28 @@
+package org.jboss.webbeans.bootstrap.spi;
+
+import java.lang.reflect.Method;
+import java.util.Iterator;
+
+public interface EjbDescriptor<T>
+{
+ /**
+ * @return The EJB Bean class
+ */
+ public Class<T> getType();
+
+ /**
+ * @return The JNDI name under which the EJB is registered
+ */
+ public String getJndiName();
+
+ /**
+ * @return The local interfaces of the EJB
+ */
+ public Iterator<Class<?>> getLocalInterfaces();
+
+ /**
+ * @return The remove methods of the EJB
+ */
+ public Iterator<Method> getRemoveMethods();
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/EjbDescriptor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/WebBeanDiscovery.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/WebBeanDiscovery.java 2008-11-17 06:55:01 UTC (rev 313)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/spi/WebBeanDiscovery.java 2008-11-17 11:00:16 UTC (rev 314)
@@ -1,10 +1,30 @@
package org.jboss.webbeans.bootstrap.spi;
-import java.util.Set;
+import java.net.URL;
+import java.util.Map;
+/**
+ * A container should implement this interface to allow the Web Beans RI to
+ * discover the Web Beans to deploy
+ *
+ * @author Pete Muir
+ *
+ */
public interface WebBeanDiscovery
{
+ /**
+ * @return A list of all classes in classpath archives with web-beans.xml files
+ */
+ public Iterable<Class<?>> discoverWebBeanClasses();
- public Set<Class<?>> discoverWebBeanClasses();
+ /**
+ * @return A list of all web-beans.xml files in the app classpath
+ */
+ public Iterable<URL> discoverWebBeansXml();
+ /**
+ * @return A Map of EJB descriptors, keyed by the EJB bean class
+ */
+ public Map<Class<?>, EjbDescriptor<?>> discoverEjbs();
+
}
15 years, 5 months
[webbeans-commits] Webbeans SVN: r313 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts.
by webbeans-commits@lists.jboss.org
Author: nickarls
Date: 2008-11-17 01:55:01 -0500 (Mon, 17 Nov 2008)
New Revision: 313
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java
Log:
oops, forgot to fix the dependent context
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-17 06:51:41 UTC (rev 312)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java 2008-11-17 06:55:01 UTC (rev 313)
@@ -1,21 +1,16 @@
package org.jboss.webbeans.contexts;
-import java.util.concurrent.atomic.AtomicBoolean;
-
import javax.webbeans.ContextNotActiveException;
import javax.webbeans.Dependent;
import javax.webbeans.manager.Bean;
-public class DependentContext extends AbstractContext
+public class DependentContext extends PrivateContext
{
- private BeanMap beans;
- private AtomicBoolean active;
-
+
public DependentContext()
{
super(Dependent.class);
- beans = new BeanMap();
- active = new AtomicBoolean(false);
+ setActive(false);
}
@Override
@@ -28,18 +23,6 @@
return create == false ? null : bean.create();
}
-
- @Override
- protected AtomicBoolean getActive()
- {
- return active;
- }
-
- @Override
- protected BeanMap getBeanMap()
- {
- return beans;
- }
@Override
public String toString()
15 years, 5 months
[webbeans-commits] Webbeans SVN: r312 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: servlet and 1 other directory.
by webbeans-commits@lists.jboss.org
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(a)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) {
15 years, 5 months