Author: pete.muir(a)jboss.org
Date: 2009-11-02 19:01:39 -0500 (Mon, 02 Nov 2009)
New Revision: 4576
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java
Log:
use contextual store to identify beans
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java 2009-11-02
23:59:27 UTC (rev 4575)
+++
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java 2009-11-03
00:01:39 UTC (rev 4576)
@@ -30,7 +30,9 @@
import javax.enterprise.inject.spi.Bean;
import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
import org.jboss.weld.context.WeldCreationalContext;
+import org.jboss.weld.serialization.spi.ContextualStore;
import org.jboss.weld.util.Reflections;
import org.slf4j.cal10n.LocLogger;
@@ -52,7 +54,7 @@
// The bean
private transient Bean<?> bean;
// The bean index in the manager
- private final int beanIndex;
+ private final String id;
private final BeanManagerImpl manager;
@@ -64,12 +66,12 @@
* @param bean The bean to proxy
* @param beanIndex The index to the bean in the manager bean list
*/
- public ClientProxyMethodHandler(Bean<?> bean, BeanManagerImpl manager, int
beanIndex)
+ public ClientProxyMethodHandler(Bean<?> bean, BeanManagerImpl manager, String
id)
{
this.bean = bean;
- this.beanIndex = beanIndex;
+ this.id = id;
this.manager = manager;
- log.trace("Created method handler for bean " + bean + " indexed as
" + beanIndex);
+ log.trace("Created method handler for bean " + bean + " identified
as " + id);
}
/**
@@ -94,7 +96,7 @@
{
if (bean == null)
{
- bean = manager.getBeans().get(beanIndex);
+ bean =
Container.instance().deploymentServices().get(ContextualStore.class).<Bean<Object>,
Object>getContextual(id);
}
Object proxiedInstance = getProxiedInstance(bean);
if ("touch".equals(proxiedMethod.getName()) && Marker.isMarker(0,
proxiedMethod, args))
@@ -164,7 +166,7 @@
{
StringBuilder buffer = new StringBuilder();
String beanInfo = bean == null ? "null bean" : bean.toString();
- buffer.append("Proxy method handler for " + beanInfo + " with index
" + beanIndex);
+ buffer.append("Proxy method handler for " + beanInfo + " with id
" + id);
return buffer.toString();
}
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java
===================================================================
---
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java 2009-11-02
23:59:27 UTC (rev 4575)
+++
core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java 2009-11-03
00:01:39 UTC (rev 4576)
@@ -27,7 +27,9 @@
import javax.enterprise.inject.spi.Bean;
import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
import org.jboss.weld.DefinitionException;
+import org.jboss.weld.serialization.spi.ContextualStore;
import org.jboss.weld.util.Proxies;
import org.jboss.weld.util.collections.ConcurrentCache;
@@ -70,12 +72,12 @@
* @throws InstantiationException When the proxy couldn't be created
* @throws IllegalAccessException When the proxy couldn't be created
*/
- private static <T> T createClientProxy(Bean<T> bean, BeanManagerImpl
manager, int beanIndex) throws RuntimeException
+ private static <T> T createClientProxy(Bean<T> bean, BeanManagerImpl
manager, String id) throws RuntimeException
{
try
{
- ClientProxyMethodHandler proxyMethodHandler = new ClientProxyMethodHandler(bean,
manager, beanIndex);
+ ClientProxyMethodHandler proxyMethodHandler = new ClientProxyMethodHandler(bean,
manager, id);
Set<Type> classes = new LinkedHashSet<Type>(bean.getTypes());
//classes.add(ClientProxyInstance.class);
classes.add(Serializable.class);
@@ -114,12 +116,12 @@
public T call() throws Exception
{
- int beanIndex = manager.getBeans().indexOf(bean);
- if (beanIndex < 0)
+ String id =
Container.instance().deploymentServices().get(ContextualStore.class).putIfAbsent(bean);
+ if (id == null)
{
- throw new DefinitionException(bean + " is not known to the
manager");
+ throw new DefinitionException("There was an error creating an id for
" + bean);
}
- return createClientProxy(bean, manager, beanIndex);
+ return createClientProxy(bean, manager, id);
}
});
Show replies by date