You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2010/09/01 08:54:59 UTC
svn commit: r991445 - in /openejb/trunk/openejb3/container: openejb-core/
openejb-core/src/main/java/org/apache/openejb/assembler/classic/
openejb-core/src/main/java/org/apache/openejb/cdi/
openejb-core/src/main/java/org/apache/openejb/config/ openejb-...
Author: dblevins
Date: Wed Sep 1 06:54:57 2010
New Revision: 991445
URL: http://svn.apache.org/viewvc?rev=991445&view=rev
Log:
Merge of the current JCDI integration code
Added:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java
- copied unchanged from r987963, openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/BeansInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/
- copied from r987963, openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/cdi/
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java
- copied, changed from r990929, openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/services/org.apache.webbeans.spi.plugins.OpenWebBeansPlugin
- copied unchanged from r987963, openejb/branches/openejb-jcdi/container/openejb-core/src/test/resources/META-INF/services/org.apache.webbeans.spi.plugins.OpenWebBeansPlugin
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/
- copied from r987963, openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/tck/
- copied from r987973, openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/tck/
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/tck/ServiceProviders.java
- copied unchanged from r990929, openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/tck/ServiceProviders.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/tck/TestMethodSelector.java
- copied unchanged from r990929, openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/cdi/tck/TestMethodSelector.java
openejb/trunk/openejb3/container/openejb-core/src/test/resources/META-INF/jboss-test-harness.properties
- copied unchanged from r990929, openejb/branches/openejb-jcdi/container/openejb-core/src/test/resources/META-INF/jboss-test-harness.properties
openejb/trunk/openejb3/container/openejb-core/src/test/resources/META-INF/services/
- copied from r987963, openejb/branches/openejb-jcdi/container/openejb-core/src/test/resources/META-INF/services/
openejb/trunk/openejb3/container/openejb-core/src/test/resources/cdi-suite.xml
- copied unchanged from r990929, openejb/branches/openejb-jcdi/container/openejb-core/src/test/resources/cdi-suite.xml
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Beans.java
- copied unchanged from r987963, openejb/branches/openejb-jcdi/container/openejb-jee/src/main/java/org/apache/openejb/jee/Beans.java
Removed:
openejb/trunk/openejb3/container/openejb-core/src/test/resources/META-INF/services/org.apache.webbeans.spi.plugins.OpenWebBeansPlugin
Modified:
openejb/trunk/openejb3/container/openejb-core/pom.xml
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/MethodContext.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java
Modified: openejb/trunk/openejb3/container/openejb-core/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/pom.xml?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/pom.xml (original)
+++ openejb/trunk/openejb3/container/openejb-core/pom.xml Wed Sep 1 06:54:57 2010
@@ -362,11 +362,55 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.codehaus.swizzle</groupId>
- <artifactId>swizzle-confluence</artifactId>
- <version>1.1</version>
- <type>jar</type>
- <scope>test</scope>
+ <groupId>org.codehaus.swizzle</groupId>
+ <artifactId>swizzle-confluence</artifactId>
+ <version>1.1</version>
+ <type>jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openwebbeans</groupId>
+ <artifactId>openwebbeans-impl</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openwebbeans</groupId>
+ <artifactId>openwebbeans-spi</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openwebbeans</groupId>
+ <artifactId>openwebbeans-ejb-common</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openwebbeans</groupId>
+ <artifactId>openwebbeans-ee</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject-tck</artifactId>
+ <version>1</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.jsr299.tck</groupId>
+ <artifactId>jsr299-tck-impl</artifactId>
+ <version>1.0.2.CR1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.test-harness</groupId>
+ <artifactId>jboss-test-harness</artifactId>
+ <version>1.1.0-CR5</version>
+ <scope>test</scope>
</dependency>
</dependencies>
<profiles>
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Wed Sep 1 06:54:57 2010
@@ -68,6 +68,7 @@ import org.apache.openejb.NoSuchApplicat
import org.apache.openejb.OpenEJB;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.UndeployException;
+import org.apache.openejb.cdi.CdiBuilder;
import org.apache.openejb.core.AppContext;
import org.apache.openejb.core.ConnectorReference;
import org.apache.openejb.core.CoreContainerSystem;
@@ -641,6 +642,9 @@ public class Assembler extends Assembler
allDeployments = sort(allDeployments);
+ CdiBuilder cdiBuilder = new CdiBuilder(appInfo, appContext);
+ cdiBuilder.build(allDeployments);
+
// now that everything is configured, deploy to the container
if (start) {
for (DeploymentInfo deployment : allDeployments) {
@@ -660,7 +664,7 @@ public class Assembler extends Assembler
List<Injection> injections = injectionBuilder.buildInjections(clientInfo.jndiEnc);
// build the enc
- JndiEncBuilder jndiEncBuilder = new JndiEncBuilder(clientInfo.jndiEnc, injections, "Bean", clientInfo.moduleId, classLoader);
+ JndiEncBuilder jndiEncBuilder = new JndiEncBuilder(clientInfo.jndiEnc, injections, "Bean", clientInfo.moduleId, classLoader, appContext);
// if there is at least a remote client classes
// or if there is no local client classes
// then, we can set the client flag
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java Wed Sep 1 06:54:57 2010
@@ -40,4 +40,6 @@ public class EjbJarInfo extends InfoObje
public final List<PortInfo> portInfos = new ArrayList<PortInfo>();
public final Set<String> watchedResources = new TreeSet<String>();
public final JndiEncInfo moduleJndiEnc = new JndiEncInfo();
+
+ public BeansInfo beans;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java Wed Sep 1 06:54:57 2010
@@ -137,7 +137,7 @@ class EnterpriseBeanBuilder {
}
// build the enc
- JndiEncBuilder jndiEncBuilder = new JndiEncBuilder(bean.jndiEnc, injections, transactionType, moduleContext.getId(), moduleContext.getClassLoader());
+ JndiEncBuilder jndiEncBuilder = new JndiEncBuilder(bean.jndiEnc, injections, transactionType, moduleContext.getId(), moduleContext.getClassLoader(), moduleContext.getAppContext());
Context compJndiContext = jndiEncBuilder.build(JndiEncBuilder.JndiScope.comp);
bind(compJndiContext, "module", moduleContext.getModuleJndiContext());
bind(compJndiContext, "app", moduleContext.getAppContext().getAppJndiContext());
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java Wed Sep 1 06:54:57 2010
@@ -19,6 +19,7 @@ package org.apache.openejb.assembler.cla
import org.apache.openejb.Injection;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.InterfaceType;
+import org.apache.openejb.core.AppContext;
import org.apache.openejb.spi.ContainerSystem;
import org.apache.openejb.core.CoreUserTransaction;
import org.apache.openejb.core.TransactionSynchronizationRegistryWrapper;
@@ -90,17 +91,19 @@ public class JndiEncBuilder {
private final URI moduleUri;
private final List<Injection> injections;
private final ClassLoader classLoader;
-
+ private final AppContext appContext;
+
private boolean useCrossClassLoaderRef = true;
private boolean client = false;
public JndiEncBuilder(JndiEncInfo jndiEnc, List<Injection> injections, String moduleId, ClassLoader classLoader) throws OpenEJBException {
- this(jndiEnc, injections, null, moduleId, classLoader);
+ this(jndiEnc, injections, null, moduleId, classLoader, null);
}
- public JndiEncBuilder(JndiEncInfo jndiEnc, List<Injection> injections, String transactionType, String moduleId, ClassLoader classLoader) throws OpenEJBException {
+ public JndiEncBuilder(JndiEncInfo jndiEnc, List<Injection> injections, String transactionType, String moduleId, ClassLoader classLoader, AppContext appContext) throws OpenEJBException {
this.jndiEnc = jndiEnc;
this.injections = injections;
+ this.appContext = appContext;
beanManagedTransactions = transactionType != null && transactionType.equalsIgnoreCase("Bean");
try {
Copied: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java (from r990929, openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java?p2=openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java&p1=openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java&r1=990929&r2=991445&rev=991445&view=diff
==============================================================================
--- openejb/branches/openejb-jcdi/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java Wed Sep 1 06:54:57 2010
@@ -303,6 +303,7 @@ public class CdiBuilder {
}
private Class load(String className, String type) throws OpenEJBException {
+ System.out.println("cdi.load = " + className);
try {
return classLoader.loadClass(className);
} catch (ClassNotFoundException e) {
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java?rev=991445&r1=987963&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java Wed Sep 1 06:54:57 2010
@@ -16,6 +16,7 @@
*/
package org.apache.openejb.cdi;
+import org.apache.openejb.BeanType;
import org.apache.openejb.DeploymentInfo;
import org.apache.openejb.assembler.classic.ProxyInterfaceResolver;
import org.apache.webbeans.ejb.common.component.BaseEjbBean;
@@ -31,7 +32,7 @@ public class CdiEjbBean<T> extends BaseE
private final DeploymentInfo deploymentInfo;
public CdiEjbBean(DeploymentInfo deploymentInfo) {
- super(deploymentInfo.getBeanClass());
+ super(deploymentInfo.getBeanClass(), toSessionType(deploymentInfo.getComponentType()));
this.deploymentInfo = deploymentInfo;
}
@@ -39,23 +40,17 @@ public class CdiEjbBean<T> extends BaseE
return this.deploymentInfo;
}
- @Override
- public void setEjbType(SessionBeanType type) {
- throw new IllegalStateException("The SessionBeanType cannot be changed");
- }
-
- @Override
- public SessionBeanType getEjbType() {
- switch (deploymentInfo.getComponentType()) {
- case SINGLETON:
- return SessionBeanType.SINGLETON;
- case STATELESS:
- return SessionBeanType.STATELESS;
- case STATEFUL:
- case MANAGED:
- return SessionBeanType.STATEFUL;
- default:
- throw new IllegalStateException("Unknown Session BeanType " + deploymentInfo.getComponentType());
+ private static SessionBeanType toSessionType(BeanType beanType) {
+ switch (beanType) {
+ case SINGLETON:
+ return SessionBeanType.SINGLETON;
+ case STATELESS:
+ return SessionBeanType.STATELESS;
+ case STATEFUL:
+ case MANAGED:
+ return SessionBeanType.STATEFUL;
+ default:
+ throw new IllegalStateException("Unknown Session BeanType " + beanType);
}
}
@@ -68,8 +63,11 @@ public class CdiEjbBean<T> extends BaseE
@SuppressWarnings("unchecked")
protected T getInstance(CreationalContext<T> creationalContext) {
- List<Class> interfaces = ProxyInterfaceResolver.getInterfaces(deploymentInfo.getBeanClass(), iface, deploymentInfo.getBusinessLocalInterfaces());
- DeploymentInfo.BusinessLocalHome home = deploymentInfo.getBusinessLocalHome(interfaces);
+ final List<Class> classes = deploymentInfo.getBusinessLocalInterfaces();
+ final Class mainInterface = classes.get(0);
+
+ List<Class> interfaces = ProxyInterfaceResolver.getInterfaces(deploymentInfo.getBeanClass(), mainInterface, classes);
+ DeploymentInfo.BusinessLocalHome home = deploymentInfo.getBusinessLocalHome(interfaces, mainInterface);
return (T) home.create();
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java?rev=991445&r1=987963&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java Wed Sep 1 06:54:57 2010
@@ -171,7 +171,7 @@ public class CdiPlugin extends AbstractO
final List<Class> localInterfaces = deployment.getBusinessLocalInterfaces();
List<Class> interfaces = ProxyInterfaceResolver.getInterfaces(beanClass, interfce, localInterfaces);
- DeploymentInfo.BusinessLocalHome home = deployment.getBusinessLocalHome(interfaces);
+ DeploymentInfo.BusinessLocalHome home = deployment.getBusinessLocalHome(interfaces, interfaces.get(0));
return home.create();
// try {
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java?rev=991445&r1=987963&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java Wed Sep 1 06:54:57 2010
@@ -73,14 +73,15 @@ public class CdiResourceInjectionService
deployer.deploy(cdiInfo);
JndiEncInfoBuilder infoBuilder = new JndiEncInfoBuilder(appModule);
- JndiEncInfo encInfo = infoBuilder.build(cdiInfo, cdiInfo.getBeanName(), appModule.jarPath);
+ JndiEncInfo encInfo = new JndiEncInfo();
+ infoBuilder.build(cdiInfo, cdiInfo.getBeanName(), appModule.path, null, encInfo);
InjectionBuilder builder = new InjectionBuilder(classLoader);
List<Injection> injections = builder.buildInjections(encInfo);
cdiInfo.setInjections(injections);
- JndiEncBuilder encBuilder = new JndiEncBuilder(encInfo, injections, appModule.jarPath, classLoader);
- this.contexts.put(cdiInfo, encBuilder.build());
+ JndiEncBuilder encBuilder = new JndiEncBuilder(encInfo, injections, appModule.path, classLoader);
+ this.contexts.put(cdiInfo, encBuilder.build(JndiEncBuilder.JndiScope.comp));
}
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Wed Sep 1 06:54:57 2010
@@ -102,6 +102,7 @@ import org.apache.openejb.DeploymentInfo
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.api.LocalClient;
import org.apache.openejb.api.RemoteClient;
+import org.apache.openejb.cdi.CdiBeanInfo;
import org.apache.openejb.core.webservices.JaxWsUtils;
import org.apache.openejb.jee.ActivationConfig;
import org.apache.openejb.jee.ApplicationClient;
@@ -235,6 +236,12 @@ public class AnnotationDeployer implemen
}
}
+ // TODO Remove this section. It's called by some code in the assembler.
+ // The scanning portion should be completed prior to this point
+ public void deploy(CdiBeanInfo beanInfo) throws OpenEJBException{
+ this.processAnnotatedBeans.deploy(beanInfo);
+ }
+
public WebModule deploy(WebModule webModule) throws OpenEJBException {
setModule(webModule);
try {
@@ -654,6 +661,22 @@ public class AnnotationDeployer implemen
public static final String STRICT_INTERFACE_DECLARATION = "openejb.strict.interface.declaration";
+ public void deploy(CdiBeanInfo beanInfo) throws OpenEJBException{
+
+ ClassFinder inheritedClassFinder = createInheritedClassFinder(beanInfo.getBeanClass());
+ /*
+ * @EJB
+ * @Resource
+ * @WebServiceRef
+ * @PersistenceUnit
+ * @PersistenceContext
+ */
+ buildAnnotatedRefs(beanInfo, inheritedClassFinder, beanInfo.getClassLoader());
+
+ processWebServiceClientHandlers(beanInfo, beanInfo.getClassLoader());
+
+ }
+
public AppModule deploy(AppModule appModule) throws OpenEJBException {
for (EjbModule ejbModule : appModule.getEjbModules()) {
setModule(ejbModule);
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java Wed Sep 1 06:54:57 2010
@@ -28,6 +28,7 @@ import java.util.Map;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.assembler.classic.ApplicationExceptionInfo;
+import org.apache.openejb.assembler.classic.BeansInfo;
import org.apache.openejb.assembler.classic.CallbackInfo;
import org.apache.openejb.assembler.classic.CmrFieldInfo;
import org.apache.openejb.assembler.classic.EjbJarInfo;
@@ -195,6 +196,15 @@ public class EjbJarInfoBuilder {
initRelationships(jar, infos);
}
+ if (jar.getBeans() != null) {
+ ejbJar.beans = new BeansInfo();
+ ejbJar.beans.interceptors.addAll(jar.getBeans().getInterceptors());
+ ejbJar.beans.decorators.addAll(jar.getBeans().getDecorators());
+ ejbJar.beans.alternativeClasses.addAll(jar.getBeans().getAlternativeClasses());
+ ejbJar.beans.alternativeStereotypes.addAll(jar.getBeans().getAlternativeStereotypes());
+ ejbJar.beans.managedClasses.addAll(jar.getBeans().getManagedClasses());
+ }
+
return ejbJar;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java Wed Sep 1 06:54:57 2010
@@ -17,6 +17,7 @@
*/
package org.apache.openejb.config;
+import org.apache.openejb.jee.Beans;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.Webservices;
import org.apache.openejb.jee.oejb3.OpenejbJar;
@@ -48,6 +49,7 @@ public class EjbModule implements WsModu
private final AtomicReference<AbstractFinder> finder = new AtomicReference<AbstractFinder>();
private final Map<String,Object> altDDs = new HashMap<String,Object>();
private final Set<String> watchedResources = new TreeSet<String>();
+ private Beans beans;
private ClientModule clientModule;
@@ -99,6 +101,14 @@ public class EjbModule implements WsModu
this(classLoader, null, jarURI, ejbJar, openejbJar);
}
+ public Beans getBeans() {
+ return beans;
+ }
+
+ public void setBeans(Beans beans) {
+ this.beans = beans;
+ }
+
public AbstractFinder getFinder() {
return finder.get();
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java Wed Sep 1 06:54:57 2010
@@ -19,6 +19,7 @@ package org.apache.openejb.config;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.core.webservices.WsdlResolver;
import org.apache.openejb.jee.ApplicationClient;
+import org.apache.openejb.jee.Beans;
import org.apache.openejb.jee.Connector;
import org.apache.openejb.jee.Connector10;
import org.apache.openejb.jee.EjbJar;
@@ -73,6 +74,10 @@ public class ReadDescriptors implements
readOpenejbJar(ejbModule);
}
+ if (ejbModule.getBeans() == null) {
+ readBeans(ejbModule, appModule);
+ }
+
readCmpOrm(ejbModule);
}
@@ -256,6 +261,22 @@ public class ReadDescriptors implements
}
}
+ private void readBeans(EjbModule ejbModule, AppModule appModule) throws OpenEJBException {
+ if (ejbModule.getBeans() != null) return;
+
+ Object data = ejbModule.getAltDDs().get("beans.xml");
+ if (data instanceof Beans) {
+ ejbModule.setBeans((Beans) data);
+ } else if (data instanceof URL) {
+ URL url = (URL) data;
+ Beans beans = readBeans(url);
+ ejbModule.setBeans(beans);
+ } else {
+ DeploymentLoader.logger.debug("No beans.xml found assuming annotated beans present: " + appModule.getJarLocation() + ", module: " + ejbModule.getModuleId());
+ ejbModule.setBeans(new Beans());
+ }
+ }
+
private void readCmpOrm(EjbModule ejbModule) throws OpenEJBException {
Object data = ejbModule.getAltDDs().get("openejb-cmp-orm.xml");
if (data == null || data instanceof EntityMappings) {
@@ -340,6 +361,20 @@ public class ReadDescriptors implements
}
}
+ public static Beans readBeans(URL url) throws OpenEJBException {
+ try {
+ return (Beans) JaxbJavaee.unmarshalJavaee(Beans.class, url.openStream());
+ } catch (SAXException e) {
+ throw new OpenEJBException("Cannot parse the beans.xml file: " + url.toExternalForm(), e);
+ } catch (JAXBException e) {
+ throw new OpenEJBException("Cannot unmarshall the beans.xml file: " + url.toExternalForm(), e);
+ } catch (IOException e) {
+ throw new OpenEJBException("Cannot read the beans.xml file: " + url.toExternalForm(), e);
+ } catch (Exception e) {
+ throw new OpenEJBException("Encountered unknown error parsing the beans.xml file: " + url.toExternalForm(), e);
+ }
+ }
+
private static boolean isEmptyEjbJar(URL url) throws IOException, ParserConfigurationException, SAXException {
InputSource inputSource = new InputSource(url.openStream());
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/AppContext.java Wed Sep 1 06:54:57 2010
@@ -20,6 +20,7 @@ import org.apache.openejb.DeploymentInfo
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.loader.Options;
+import javax.enterprise.inject.spi.BeanManager;
import javax.naming.Context;
import java.util.ArrayList;
import java.util.List;
@@ -33,6 +34,7 @@ public class AppContext extends Deployme
private final Context globalJndiContext;
private final Context appJndiContext;
private final boolean standaloneModule;
+ private BeanManager beanManager;
// TODO perhaps to be deleted
private final List<DeploymentInfo> deployments = new ArrayList<DeploymentInfo>();
@@ -46,6 +48,19 @@ public class AppContext extends Deployme
this.standaloneModule = standaloneModule;
}
+ public BeanManager getBeanManager() {
+ return beanManager;
+ }
+
+ /**
+ * TODO: Ideally this would be a final field
+ * @param beanManager
+ */
+ @Deprecated
+ public void setBeanManager(BeanManager beanManager) {
+ this.beanManager = beanManager;
+ }
+
@Override
public String getId() {
return super.getId();
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java Wed Sep 1 06:54:57 2010
@@ -61,6 +61,7 @@ import org.apache.openejb.util.Duration;
import org.apache.openejb.util.Index;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
+import org.apache.webbeans.inject.OWBInjector;
import org.apache.xbean.recipe.ConstructionException;
public class CoreDeploymentInfo extends DeploymentContext implements org.apache.openejb.DeploymentInfo {
@@ -699,9 +700,12 @@ public class CoreDeploymentInfo extends
return systemInterceptors;
}
+ private final Set<InterceptorData> cdiInterceptors = new LinkedHashSet<InterceptorData>();
+
public List<InterceptorData> getCallbackInterceptors() {
List<InterceptorData> datas = getInterceptorData();
datas.addAll(callbackInterceptors);
+ datas.addAll(cdiInterceptors);
return datas;
}
@@ -712,6 +716,16 @@ public class CoreDeploymentInfo extends
this.instanceScopedInterceptors.addAll(callbackInterceptors);
}
+ public List<InterceptorData> getCdiInterceptors() {
+ return new ArrayList<InterceptorData>(cdiInterceptors);
+ }
+
+ public void setCdiInterceptors(List<InterceptorData> cdiInterceptors) {
+ this.cdiInterceptors.clear();
+ this.cdiInterceptors.addAll(cdiInterceptors);
+ this.instanceScopedInterceptors.addAll(cdiInterceptors);
+ }
+
public List<InterceptorData> getMethodInterceptors(Method method) {
return getMethodContext(method).getInterceptors();
}
@@ -1067,6 +1081,10 @@ public class CoreDeploymentInfo extends
final InjectionProcessor injectionProcessor = new InjectionProcessor(beanClass, this.getInjections(), null, null, org.apache.openejb.InjectionProcessor.unwrap(ctx));
final Object bean = injectionProcessor.createInstance();
+ // TODO we likely don't want to create a new one each time -- investigate the destroy() method
+ OWBInjector beanInjector = new OWBInjector();
+ beanInjector.inject(bean);
+
// Create interceptors
final HashMap<String, Object> interceptorInstances = new HashMap<String, Object>();
@@ -1085,6 +1103,11 @@ public class CoreDeploymentInfo extends
final InjectionProcessor interceptorInjector = new InjectionProcessor(clazz, this.getInjections(), org.apache.openejb.InjectionProcessor.unwrap(ctx));
try {
final Object interceptorInstance = interceptorInjector.createInstance();
+
+ // TODO we likely don't want to create a new one each time -- investigate the destroy() method
+ OWBInjector interceptorCdiInjector = new OWBInjector();
+ interceptorCdiInjector.inject(interceptorInstance);
+
interceptorInstances.put(clazz.getName(), interceptorInstance);
} catch (ConstructionException e) {
throw new Exception("Failed to create interceptor: " + clazz.getName(), e);
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/MethodContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/MethodContext.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/MethodContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/MethodContext.java Wed Sep 1 06:54:57 2010
@@ -67,6 +67,7 @@ public class MethodContext {
public List<InterceptorData> getInterceptors() {
List<InterceptorData> datas = beanContext.getInterceptorData();
datas.addAll(interceptors);
+ datas.addAll(beanContext.getCdiInterceptors());
return datas;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorData.java Wed Sep 1 06:54:57 2010
@@ -148,4 +148,10 @@ public class InterceptorData {
return data;
}
+
+ @Override
+ public String toString() {
+ return "InterceptorData{" +
+ "clazz=" + clazz.getSimpleName() + '}';
+ }
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java Wed Sep 1 06:54:57 2010
@@ -54,16 +54,16 @@ public class DependenceValidationTest ex
// Nothing may depend on the Assembler except the config code
String dynamicAssembler = "org.apache.openejb.assembler.dynamic";
- assertNotDependentOn("org.apache.openejb", "org.apache.openejb.assembler.classic", "org.apache.openejb.assembler", "org.apache.openejb.config", "org.apache.openejb.assembler.dynamic", "org.apache.openejb.assembler.classic.cmd");
+ assertNotDependentOn("org.apache.openejb", "org.apache.openejb.assembler.classic", "org.apache.openejb.assembler", "org.apache.openejb.config", "org.apache.openejb.assembler.dynamic", "org.apache.openejb.assembler.classic.cmd", "org.apache.openejb.cdi");
// Nothing may depend on the Dynamic Assembler
assertNotDependentOn("org.apache.openejb", dynamicAssembler);
// Nothing may depend on the JAXB Tree except the Config code
- assertNotDependentOn("org.apache.openejb", "org.apache.openejb.jee", "org.apache.openejb.config", "org.apache.openejb.config.rules", "org.apache.openejb.config.sys");
+ assertNotDependentOn("org.apache.openejb", "org.apache.openejb.jee", "org.apache.openejb.config", "org.apache.openejb.config.rules", "org.apache.openejb.config.sys", "org.apache.openejb.cdi");
// Nothing may depend on the Config code except it's subpackages
- assertNotDependentOn("org.apache.openejb", "org.apache.openejb.config", "org.apache.openejb.config.rules", "org.apache.openejb.config.sys", "org.apache.openejb.assembler", dynamicAssembler);
+ assertNotDependentOn("org.apache.openejb", "org.apache.openejb.config", "org.apache.openejb.config.rules", "org.apache.openejb.config.sys", "org.apache.openejb.assembler","org.apache.openejb.cdi", dynamicAssembler);
// The assembler may not be dependent on the config factory Implementation
assertNotDependentOn("org.apache.openejb.assembler.classic", "org.apache.openejb.config");
Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java?rev=991445&r1=987963&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/CdiDecoratorTest.java Wed Sep 1 06:54:57 2010
@@ -33,6 +33,7 @@ import org.junit.Before;
import javax.annotation.PostConstruct;
import javax.decorator.Decorator;
import javax.decorator.Delegate;
+import javax.ejb.Local;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.inject.Inject;
@@ -120,6 +121,7 @@ public class CdiDecoratorTest extends Te
private static final List<String> businessMethod = new ArrayList<String>();
private static final List<String> callback = new ArrayList<String>();
+ @Local
public static interface Color {
public void hello();
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java?rev=991445&r1=991444&r2=991445&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/Key.java Wed Sep 1 06:54:57 2010
@@ -27,5 +27,5 @@ public @interface Key {
String value();
int count() default 1;
- KeyType type() default KeyType.FAILURE;
+ KeyType type();
}