[jboss-cvs] JBossAS SVN: r109981 - in trunk/weld-int: ejb/src/main/java/org/jboss/weld/integration/ejb and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Dec 17 04:20:03 EST 2010
Author: marius.bogoevici
Date: 2010-12-17 04:20:02 -0500 (Fri, 17 Dec 2010)
New Revision: 109981
Modified:
trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/Jsr299InjectorDeployer.java
trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEJBDescriptorAdaptor.java
trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java
trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java
trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionObjectReference.java
trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/SessionBeanInterceptor.java
trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/interceptor/Jsr299BindingsInterceptor.java
Log:
JBAS-8293, JBAS-8742
Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/Jsr299InjectorDeployer.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/Jsr299InjectorDeployer.java 2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/injection/Jsr299InjectorDeployer.java 2010-12-17 09:20:02 UTC (rev 109981)
@@ -109,7 +109,7 @@
@Override
public void undeploy(DeploymentUnit unit, InjectionManager deployment)
{
- if (isCDIDeployment(unit))
+ if (isCDIDeployment(unit) && hasInjector(unit))
{
kernelController.uninstall(getJsr299InjectorMcBeanName(unit));
}
@@ -126,4 +126,17 @@
return deploymentUnit.getParent().getName() + "/" + deploymentUnit.getName() + "_Jsr299Injector";
}
}
+
+ private boolean hasInjector(DeploymentUnit deploymentUnit)
+ {
+ if (!deploymentUnit.isComponent())
+ {
+ return true;
+ }
+ else
+ {
+ JBossEnterpriseBeanMetaData enterpriseBeanMetaData = deploymentUnit.getAttachment(JBossEnterpriseBeanMetaData.class);
+ return (enterpriseBeanMetaData != null && enterpriseBeanMetaData.getJBossMetaData().isEJB3x());
+ }
+ }
}
Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEJBDescriptorAdaptor.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEJBDescriptorAdaptor.java 2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEJBDescriptorAdaptor.java 2010-12-17 09:20:02 UTC (rev 109981)
@@ -1,5 +1,7 @@
package org.jboss.weld.integration.ejb;
+import java.io.Serializable;
+
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.ejb3.ejbref.resolver.spi.EjbReferenceResolver;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
@@ -7,11 +9,10 @@
import org.jboss.weld.ejb.spi.InterceptorBindings;
import org.jboss.weld.integration.util.Reflections;
-public abstract class JBossEJBDescriptorAdaptor<T> implements EjbDescriptor<T>
+public abstract class JBossEJBDescriptorAdaptor<T> implements EjbDescriptor<T>, Serializable
{
private final Class<T> beanClass;
private final String ejbName;
- private InterceptorBindings interceptorBindings;
public JBossEJBDescriptorAdaptor(JBossEnterpriseBeanMetaData enterpriseBeanMetaData, DeploymentUnit deploymentUnit, EjbReferenceResolver resolver)
{
@@ -91,14 +92,4 @@
{
return getEjbName().hashCode();
}
-
- public void setInterceptorBindings(InterceptorBindings interceptorBindings)
- {
- this.interceptorBindings = interceptorBindings;
- }
-
- public InterceptorBindings getInterceptorBindings()
- {
- return interceptorBindings;
- }
}
\ No newline at end of file
Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java 2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java 2010-12-17 09:20:02 UTC (rev 109981)
@@ -1,15 +1,12 @@
package org.jboss.weld.integration.ejb;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import javax.ejb.EJB;
-import javax.enterprise.inject.spi.InjectionPoint;
+
import javax.naming.NamingException;
import org.jboss.deployers.structure.spi.DeploymentUnit;
@@ -41,7 +38,8 @@
protected EjbReferenceResolver resolver;
private final List<EjbDescriptor<?>> ejbs = new ArrayList<EjbDescriptor<?>>();
private final List<String> ejbContainerNames = new ArrayList<String>();
- private Map<EjbDescriptor<?>, InterceptorBindings> interceptorBindings = new ConcurrentHashMap<EjbDescriptor<?>, InterceptorBindings>();
+ private Map<String, InterceptorBindings> interceptorBindings = new ConcurrentHashMap<String, InterceptorBindings>();
+ private Map<EjbDescriptor<?>, DeploymentUnit> deploymentUnitMap = new ConcurrentHashMap<EjbDescriptor<?>, DeploymentUnit>();
public JBossEjbServices() throws NamingException
{
@@ -64,7 +62,7 @@
{
try
{
- return new JBossSessionObjectReference(ejbDescriptor, context);
+ return new JBossSessionObjectReference(ejbDescriptor, deploymentUnitMap.get(ejbDescriptor), context);
}
catch (NamingException e)
{
@@ -74,7 +72,7 @@
public void registerInterceptors(EjbDescriptor<?> ejbDescriptor, InterceptorBindings interceptorBindings)
{
- this.interceptorBindings.put(ejbDescriptor, interceptorBindings);
+ this.interceptorBindings.put(ejbDescriptor.getEjbName(), interceptorBindings);
}
public Object resolveRemoteEjb(String jndiName, String mappedName, String ejbLink)
@@ -124,19 +122,19 @@
{
JBossSessionBean31MetaData sessionBeanMetaData = (JBossSessionBean31MetaData) enterpriseBeanMetaData;
EjbDescriptor<?> ejbDescriptor = new JBossSessionBean31DescriptorAdaptor<Object>(sessionBeanMetaData, du, resolver);
- ejbs.add(ejbDescriptor);
+ addEjbDescriptor(ejbDescriptor, du);
}
else if (enterpriseBeanMetaData.isSession())
{
JBossSessionBeanMetaData sessionBeanMetaData = (JBossSessionBeanMetaData) enterpriseBeanMetaData;
EjbDescriptor<?> ejbDescriptor = new JBossSessionBeanDescriptorAdaptor<Object>(sessionBeanMetaData, du, resolver);
- ejbs.add(ejbDescriptor);
+ addEjbDescriptor(ejbDescriptor, du);
}
else if (enterpriseBeanMetaData.isMessageDriven())
{
JBossMessageDrivenBeanMetaData messageDrivenBeanMetaData = (JBossMessageDrivenBeanMetaData) enterpriseBeanMetaData;
EjbDescriptor<?> ejbDescriptor = new JBossMessageDrivenBeanDescriptorAdaptor<Object>(messageDrivenBeanMetaData, du, resolver);
- ejbs.add(ejbDescriptor);
+ addEjbDescriptor(ejbDescriptor, du);
}
if (enterpriseBeanMetaData.getContainerName() != null)
{
@@ -159,6 +157,12 @@
}
}
+ private void addEjbDescriptor(EjbDescriptor<?> ejbDescriptor, DeploymentUnit deploymentUnit)
+ {
+ deploymentUnitMap.put(ejbDescriptor, deploymentUnit);
+ ejbs.add(ejbDescriptor);
+ }
+
public Iterable<EjbDescriptor<?>> getEjbs()
{
return ejbs;
@@ -174,9 +178,9 @@
return Collections.unmodifiableCollection(ejbContainerNames);
}
- public InterceptorBindings getInterceptorBindings(EjbDescriptor<?> ejbDescriptor)
+ public InterceptorBindings getInterceptorBindings(String ejbName)
{
- return interceptorBindings.get(ejbDescriptor);
+ return interceptorBindings.get(ejbName);
}
@Override
Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java 2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java 2010-12-17 09:20:02 UTC (rev 109981)
@@ -26,7 +26,6 @@
private final boolean stateless;
private final boolean singleton;
private final String localJndiName;
- private final DeploymentUnit deploymentUnit;
public JBossSessionBeanDescriptorAdaptor(JBossSessionBeanMetaData sessionBeanMetaData, DeploymentUnit deploymentUnit, EjbReferenceResolver resolver)
{
@@ -95,7 +94,6 @@
this.stateless = sessionBeanMetaData.isStateless();
this.singleton = false;
this.localJndiName = jndiName;
- this.deploymentUnit = deploymentUnit;
}
public Collection<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces()
@@ -139,11 +137,6 @@
return localJndiName;
}
- public DeploymentUnit getDeploymentUnit()
- {
- return deploymentUnit;
- }
-
public boolean isNoInterfaceView()
{
return false;
Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionObjectReference.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionObjectReference.java 2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionObjectReference.java 2010-12-17 09:20:02 UTC (rev 109981)
@@ -27,14 +27,14 @@
private final Object reference;
private final Serializable id;
- private final DeploymentUnit deploymentUnit;
private final String ejbClassName;
private final String jndiName;
private final boolean stateful;
boolean removed = false;
+ private final String endpointMcBindName;
- public JBossSessionObjectReference(EjbDescriptor<?> descriptor, Context context) throws NamingException
+ public JBossSessionObjectReference(EjbDescriptor<?> descriptor, DeploymentUnit deploymentUnit, Context context) throws NamingException
{
if (!(descriptor instanceof JBossSessionBeanDescriptorAdaptor<?>))
{
@@ -51,8 +51,14 @@
SessionProxyInvocationHandler handler = (SessionProxyInvocationHandler) Proxy.getInvocationHandler(reference);
id = (Serializable) handler.getTarget();
}
- this.deploymentUnit = ((JBossSessionBeanDescriptorAdaptor<?>) descriptor).getDeploymentUnit();
+
+ @Deprecated
+ Ejb3Registrar registrar = Ejb3RegistrarLocator.locateRegistrar();
+
+ // Get the resolver
+ EndpointResolver resolver = registrar.lookup(MC_BIND_NAME_ENDPOINT_RESOLVER, EndpointResolver.class);
this.ejbClassName = descriptor.getBeanClass().getSimpleName();
+ endpointMcBindName = resolver.resolve(deploymentUnit, ejbClassName);
this.stateful = descriptor.isStateful();
}
@@ -85,10 +91,6 @@
{
@Deprecated
Ejb3Registrar registrar = Ejb3RegistrarLocator.locateRegistrar();
-
- // Get the resolver
- EndpointResolver resolver = registrar.lookup(MC_BIND_NAME_ENDPOINT_RESOLVER, EndpointResolver.class);
- String endpointMcBindName = resolver.resolve(deploymentUnit, ejbClassName);
return registrar.lookup(endpointMcBindName, Endpoint.class);
}
Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/SessionBeanInterceptor.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/SessionBeanInterceptor.java 2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/SessionBeanInterceptor.java 2010-12-17 09:20:02 UTC (rev 109981)
@@ -76,7 +76,6 @@
private WeldManager beanManager;
private CreationalContext<Object> creationalContext;
- private InjectionTarget<Object> injectionTarget;
public static final String CREATIONAL_CONTEXT = "org.jboss.weld.integration.ejb.SessionBeanInterceptor.creationalContext";
public static final String EJB_DESCRIPTOR = "org.jboss.weld.integration.ejb.SessionBeanInterceptor.ejbName";
@@ -92,7 +91,7 @@
{
String ejbName = getEjbName();
EjbDescriptor<Object> descriptor = beanManager.getEjbDescriptor(ejbName);
- injectionTarget = beanManager.createInjectionTarget(descriptor);
+ InjectionTarget<Object> injectionTarget = beanManager.createInjectionTarget(descriptor);
Bean<Object> bean = beanManager.getBean(descriptor);
creationalContext = beanManager.createCreationalContext(bean);
injectionTarget.inject(invocationContext.getTarget(), creationalContext);
Modified: trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/interceptor/Jsr299BindingsInterceptor.java
===================================================================
--- trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/interceptor/Jsr299BindingsInterceptor.java 2010-12-17 08:56:47 UTC (rev 109980)
+++ trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/interceptor/Jsr299BindingsInterceptor.java 2010-12-17 09:20:02 UTC (rev 109981)
@@ -58,10 +58,10 @@
@Resource(mappedName="java:comp/BeanManager")
private WeldManager beanManager;
- private InterceptorBindings interceptorBindings;
-
private Map<String, SerializableContextualInstance<Interceptor<Object>, Object>> interceptorInstances;
+ private String ejbName;
+
@PostConstruct
public void doPostConstruct(InvocationContext invocationContext) throws Exception
{
@@ -73,17 +73,8 @@
{
// create contextual instances for inteDITrceptors
interceptorInstances = new ConcurrentHashMap<String, SerializableContextualInstance<Interceptor<Object>, Object>>();
- EjbDescriptor<?> ejbDescriptor = (EjbDescriptor<?>) invocationContext.getContextData().get(SessionBeanInterceptor.EJB_DESCRIPTOR);
- EjbServices ejbServices = beanManager.getServices().get(EjbServices.class);
- if (ejbServices instanceof ForwardingEjbServices)
- {
- ejbServices = ((ForwardingEjbServices)ejbServices).delegate();
- }
- if (ejbServices instanceof JBossEjbServices)
- {
- interceptorBindings = ((JBossEjbServices)ejbServices).getInterceptorBindings(ejbDescriptor);
- }
-
+ ejbName = ((EjbDescriptor<?>) invocationContext.getContextData().get(SessionBeanInterceptor.EJB_DESCRIPTOR)).getEjbName();
+ InterceptorBindings interceptorBindings = getInterceptorBindings(ejbName);
if (interceptorBindings != null)
{
for (Interceptor<?> interceptor : interceptorBindings.getAllInterceptors())
@@ -94,6 +85,21 @@
}
}
+ private InterceptorBindings getInterceptorBindings(String ejbName)
+ {
+ EjbServices ejbServices = beanManager.getServices().get(EjbServices.class);
+ if (ejbServices instanceof ForwardingEjbServices)
+ {
+ ejbServices = ((ForwardingEjbServices)ejbServices).delegate();
+ }
+ InterceptorBindings interceptorBindings = null;
+ if (ejbServices instanceof JBossEjbServices)
+ {
+ interceptorBindings = ((JBossEjbServices)ejbServices).getInterceptorBindings(ejbName);
+ }
+ return interceptorBindings;
+ }
+
@SuppressWarnings("unchecked")
private void addInterceptorInstance(Interceptor<Object> interceptor, InvocationContext invocationContext)
{
@@ -119,6 +125,7 @@
private void doLifecycleInterception(InvocationContext invocationContext, InterceptionType interceptionType)
throws Exception
{
+ InterceptorBindings interceptorBindings = getInterceptorBindings(ejbName);
if (interceptorBindings != null)
{
List<Interceptor<?>> currentInterceptors = interceptorBindings.getLifecycleInterceptors(interceptionType);
@@ -133,6 +140,7 @@
private Object doMethodInterception(InvocationContext invocationContext, InterceptionType interceptionType)
throws Exception
{
+ InterceptorBindings interceptorBindings = getInterceptorBindings(ejbName);
if (interceptorBindings != null)
{
List<Interceptor<?>> currentInterceptors = interceptorBindings.getMethodInterceptors(interceptionType, invocationContext.getMethod());
More information about the jboss-cvs-commits
mailing list