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();
 }