[jboss-cvs] JBossAS SVN: r78845 - in projects/ejb3/trunk/embedded: src/main/java/org/jboss/ejb3/embedded/deployers and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 25 04:42:43 EDT 2008


Author: wolfc
Date: 2008-09-25 04:42:43 -0400 (Thu, 25 Sep 2008)
New Revision: 78845

Added:
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedDescriptorHandler.java
Modified:
   projects/ejb3/trunk/embedded/pom.xml
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbComponentDeployer.java
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EjbDeployment.java
   projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedEjb3DeploymentUnit.java
Log:
EJBTHREE-1492: Using legacy Ejb3DescriptorHandler to instantiate containers

Modified: projects/ejb3/trunk/embedded/pom.xml
===================================================================
--- projects/ejb3/trunk/embedded/pom.xml	2008-09-25 08:19:56 UTC (rev 78844)
+++ projects/ejb3/trunk/embedded/pom.xml	2008-09-25 08:42:43 UTC (rev 78845)
@@ -40,6 +40,11 @@
   <dependencyManagement>
     <dependencies>
       <dependency>
+        <groupId>org.jboss</groupId>
+        <artifactId>jboss-reflect</artifactId>
+        <version>2.0.0.CR1</version>
+      </dependency>
+      <dependency>
         <groupId>org.jboss.microcontainer</groupId>
         <artifactId>jboss-kernel</artifactId>
         <version>2.0.0.CR1</version>

Modified: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbComponentDeployer.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbComponentDeployer.java	2008-09-25 08:19:56 UTC (rev 78844)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployers/EjbComponentDeployer.java	2008-09-25 08:42:43 UTC (rev 78845)
@@ -21,11 +21,6 @@
  */
 package org.jboss.ejb3.embedded.deployers;
 
-import java.util.Hashtable;
-
-import org.jboss.aop.AspectManager;
-import org.jboss.aop.Domain;
-import org.jboss.aop.DomainDefinition;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.deployers.spi.DeploymentException;
@@ -33,13 +28,11 @@
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.ejb3.EJBContainer;
 import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.embedded.deployment.EmbeddedDescriptorHandler;
 import org.jboss.ejb3.javaee.JavaEEComponentHelper;
 import org.jboss.ejb3.javaee.JavaEEModule;
 import org.jboss.ejb3.javaee.SimpleJavaEEModule;
-import org.jboss.ejb3.stateful.StatefulContainer;
-import org.jboss.ejb3.stateless.StatelessContainer;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
 
 /**
  * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
@@ -72,38 +65,19 @@
       
       String ejbName = metaData.getEjbName();
       String componentName = JavaEEComponentHelper.createObjectName(module, ejbName);
-      String componentClassName = metaData.getEjbClass();
       
-      ClassLoader classLoader = unit.getClassLoader();
-      Domain domain;
-      Hashtable ctxProperties = null;
       Ejb3Deployment deployment = unit.getAttachment(Ejb3Deployment.class);
       
       EJBContainer component;
-      if(metaData instanceof JBossSessionBeanMetaData)
+      try
       {
-         try
-         {
-            boolean isStateful = ((JBossSessionBeanMetaData) metaData).isStateful();
-            String domainName = metaData.getAopDomainName();
-            if(domainName == null)
-               domainName = deployment.getDefaultSLSBDomain();
-            DomainDefinition domainDefintion = AspectManager.instance().getContainer(domainName);
-            if(domainDefintion == null)
-               throw new DeploymentException("Can't find domain " + domainName + " for " + componentName);
-            domain = (Domain) domainDefintion.getManager();
-            if(isStateful)
-               component = new StatefulContainer(classLoader, componentClassName, ejbName, domain, ctxProperties, deployment, (JBossSessionBeanMetaData) metaData);
-            else
-               component = new StatelessContainer(classLoader, componentClassName, ejbName, domain, ctxProperties, deployment, (JBossSessionBeanMetaData) metaData);
-         }
-         catch (ClassNotFoundException e)
-         {
-            throw new DeploymentException("Unable to find class " + componentClassName + " in class loader " + classLoader, e);
-         }
+         EmbeddedDescriptorHandler handler = new EmbeddedDescriptorHandler(deployment, metaData.getEjbJarMetaData());
+         component = handler.createEJBContainer(metaData);
       }
-      else
-         throw new DeploymentException("Can't deploy " + metaData.getEjbName() + ", " + metaData.getClass() + " is not supported");
+      catch(Exception e)
+      {
+         throw new DeploymentException(e);
+      }
       
       BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(componentName, component.getClass().getName());
       builder.setConstructorValue(component);

Modified: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EjbDeployment.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EjbDeployment.java	2008-09-25 08:19:56 UTC (rev 78844)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EjbDeployment.java	2008-09-25 08:42:43 UTC (rev 78845)
@@ -30,6 +30,7 @@
 import org.jboss.ejb3.Ejb3Deployment;
 import org.jboss.ejb3.cache.CacheFactoryRegistry;
 import org.jboss.ejb3.cache.persistence.PersistenceManagerFactoryRegistry;
+import org.jboss.ejb3.deployers.JBoss5DependencyPolicy;
 import org.jboss.ejb3.javaee.JavaEEComponent;
 import org.jboss.ejb3.pool.PoolFactoryRegistry;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
@@ -61,8 +62,7 @@
    
    public DependencyPolicy createDependencyPolicy(JavaEEComponent component)
    {
-      //throw new RuntimeException("NYI");
-      return null;
+      return new JBoss5DependencyPolicy(component);
    }
 
    protected PolicyConfiguration createPolicyConfiguration() throws Exception

Added: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedDescriptorHandler.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedDescriptorHandler.java	                        (rev 0)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedDescriptorHandler.java	2008-09-25 08:42:43 UTC (rev 78845)
@@ -0,0 +1,106 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.embedded.deployment;
+
+import org.jboss.ejb3.EJBContainer;
+import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.Ejb3DescriptorHandler;
+import org.jboss.ejb3.mdb.ConsumerContainer;
+import org.jboss.ejb3.mdb.MDB;
+import org.jboss.ejb3.service.ServiceContainer;
+import org.jboss.ejb3.stateful.StatefulContainer;
+import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+
+/**
+ * Provide a wrapper around Ejb3DescriptorHandler to make it usable
+ * in embedded.
+ * 
+ * Note that Ejb3DescriptorHandler is the legacy way of translating
+ * meta data into annotations.
+ * 
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class EmbeddedDescriptorHandler extends Ejb3DescriptorHandler
+{
+   /**
+    * @param deployment
+    * @param dd
+    */
+   public EmbeddedDescriptorHandler(Ejb3Deployment deployment, JBossMetaData metaData)
+   {
+      super(deployment, metaData);
+      
+      for(JBossEnterpriseBeanMetaData bean : metaData.getEnterpriseBeans())
+      {
+         ejbNames.add(bean.getEjbName());
+         ejbs.add(bean);
+      }
+   }
+
+   public EJBContainer createEJBContainer(JBossEnterpriseBeanMetaData beanMetaData) throws Exception
+   {
+      int index = ejbNames.indexOf(beanMetaData.getEjbName());
+      assert index != -1 : "Can't find bean " + beanMetaData.getEjbName() + " in " + ejbNames;
+      
+      EJB_TYPE ejbType = getEjbType(beanMetaData);
+      
+      className = beanMetaData.getEjbClass();
+      ejbClass = di.getClassLoader().loadClass(className);
+      if (ejbType == EJB_TYPE.STATELESS)
+      {
+         EJBContainer container = getStatelessContainer(index, (JBossSessionBeanMetaData) beanMetaData);
+         container.setJaccContextId(getJaccContextId());
+         return container;
+      }
+      else if (ejbType == EJB_TYPE.STATEFUL)
+      {
+         StatefulContainer container = getStatefulContainer(index, (JBossSessionBeanMetaData) beanMetaData);
+         container.setJaccContextId(getJaccContextId());
+         return container;
+      }
+      else if (ejbType == EJB_TYPE.MESSAGE_DRIVEN)
+      {
+         MDB container = getMDB(index, (JBossMessageDrivenBeanMetaData) beanMetaData);
+         container.setJaccContextId(getJaccContextId());
+         return container;
+      }
+      else if (ejbType == EJB_TYPE.SERVICE)
+      {
+         ServiceContainer container = getServiceContainer(index, (JBossServiceBeanMetaData) beanMetaData);
+         container.setJaccContextId(getJaccContextId());
+         return container;
+      }
+      else if (ejbType == EJB_TYPE.CONSUMER)
+      {
+         ConsumerContainer container = getConsumerContainer(index, (JBossConsumerBeanMetaData) beanMetaData);
+         container.setJaccContextId(getJaccContextId());
+         return container;
+      }
+      throw new UnsupportedOperationException("Can't create a container for type "  + ejbType);
+   }
+}

Modified: projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedEjb3DeploymentUnit.java
===================================================================
--- projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedEjb3DeploymentUnit.java	2008-09-25 08:19:56 UTC (rev 78844)
+++ projects/ejb3/trunk/embedded/src/main/java/org/jboss/ejb3/embedded/deployment/EmbeddedEjb3DeploymentUnit.java	2008-09-25 08:42:43 UTC (rev 78845)
@@ -67,14 +67,9 @@
       throw new RuntimeException("NYI");
    }
 
-   /* (non-Javadoc)
-    * @see org.jboss.ejb3.DeploymentUnit#getClassLoader()
-    */
    public ClassLoader getClassLoader()
    {
-      // TODO Auto-generated method stub
-      //return null;
-      throw new RuntimeException("NYI");
+      return unit.getClassLoader();
    }
 
    /* (non-Javadoc)




More information about the jboss-cvs-commits mailing list