[jboss-cvs] JBossAS SVN: r82743 - in projects/ejb3/trunk: test and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 9 20:48:19 EST 2009


Author: ALRubinger
Date: 2009-01-09 20:48:19 -0500 (Fri, 09 Jan 2009)
New Revision: 82743

Modified:
   projects/ejb3/trunk/common/src/main/java/org/jboss/ejb3/common/deployers/spi/Ejb3DeployerUtils.java
   projects/ejb3/trunk/test/pom.xml
   projects/ejb3/trunk/test/src/main/java/org/jboss/ejb3/test/common/MetaDataHelper.java
   projects/ejb3/trunk/test/src/main/java/org/jboss/ejb3/test/deployers/MockDeploymentUnit.java
Log:
[EJBTHREE-1672] Add support to jboss-ejb3-test to get JBossMetaData from a Collection/Array of EJB Implementation classes

Modified: projects/ejb3/trunk/common/src/main/java/org/jboss/ejb3/common/deployers/spi/Ejb3DeployerUtils.java
===================================================================
--- projects/ejb3/trunk/common/src/main/java/org/jboss/ejb3/common/deployers/spi/Ejb3DeployerUtils.java	2009-01-09 23:04:09 UTC (rev 82742)
+++ projects/ejb3/trunk/common/src/main/java/org/jboss/ejb3/common/deployers/spi/Ejb3DeployerUtils.java	2009-01-10 01:48:19 UTC (rev 82743)
@@ -87,14 +87,13 @@
          // Get the associated DU
          DeploymentUnit du = mds.getDeploymentUnit(d.getName());
 
-         // Ensure it's an EJB3 DU (by looking for the processed metadata)
-         if (du.getAttachment(AttachmentNames.PROCESSED_METADATA, JBossMetaData.class) == null)
+         // Ensure it's an EJB3 DU (by looking for the metadata)
+         JBossMetaData metadata = du.getAttachment(JBossMetaData.class);
+         if (metadata != null && metadata.isEJB3x())
          {
-            continue;
+            // Add to the set
+            deploymentUnits.add(du);
          }
-
-         // Add to the set
-         deploymentUnits.add(du);
       }
 
       // Return

Modified: projects/ejb3/trunk/test/pom.xml
===================================================================
--- projects/ejb3/trunk/test/pom.xml	2009-01-09 23:04:09 UTC (rev 82742)
+++ projects/ejb3/trunk/test/pom.xml	2009-01-10 01:48:19 UTC (rev 82743)
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.jboss.ejb3</groupId>
       <artifactId>jboss-ejb3-common</artifactId>
-      <version>1.0.0-Beta3</version>
+      <version>1.0.0-Beta4</version>
     </dependency>
     
     <dependency>

Modified: projects/ejb3/trunk/test/src/main/java/org/jboss/ejb3/test/common/MetaDataHelper.java
===================================================================
--- projects/ejb3/trunk/test/src/main/java/org/jboss/ejb3/test/common/MetaDataHelper.java	2009-01-09 23:04:09 UTC (rev 82742)
+++ projects/ejb3/trunk/test/src/main/java/org/jboss/ejb3/test/common/MetaDataHelper.java	2009-01-10 01:48:19 UTC (rev 82743)
@@ -22,17 +22,13 @@
 package org.jboss.ejb3.test.common;
 
 import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Field;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Set;
 
-import javax.annotation.Resource;
-
-import org.jboss.annotation.javaee.Descriptions;
 import org.jboss.ejb3.common.metadata.MetadataUtil;
 import org.jboss.logging.Logger;
-import org.jboss.metadata.annotation.creator.ProcessorUtils;
 import org.jboss.metadata.annotation.creator.ejb.jboss.JBoss50Creator;
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
@@ -40,10 +36,6 @@
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.jboss.jndipolicy.plugins.BasicJndiBindingPolicy;
-import org.jboss.metadata.ejb.jboss.jndipolicy.plugins.JBossSessionPolicyDecorator;
-import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
-import org.jboss.metadata.javaee.spec.ResourceReferenceMetaData;
 import org.jboss.metadata.process.chain.ProcessorChain;
 
 /**
@@ -72,29 +64,60 @@
 
    /**
     * Mock the appropriate deployers and populate metadata for the EJB with the
-    * specified implementation class
+    * specified implementation classes
     * 
-    * @param beanImplClass
+    * @param beanImplClasses
     * @return
     */
-   public static JBossSessionBeanMetaData getMetadataFromBeanImplClass(Class<?> beanImplClass)
+   public static JBossMetaData getMetaDataFromBeanImplClasses(Collection<Class<?>> beanImplClasses)
    {
+      return getMetaDataFromBeanImplClasses(beanImplClasses.toArray(new Class<?>[]
+      {}));
+   }
+
+   /**
+    * Mock the appropriate deployers and populate metadata for the EJB with the
+    * specified implementation classes
+    * 
+    * @param beanImplClasses
+    * @return
+    */
+   public static JBossMetaData getMetaDataFromBeanImplClasses(Class<?>[] beanImplClasses)
+   {
+      /*
+       * Create the metadata
+       */
+
       // emulate annotation deployer
       AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
       Collection<Class<?>> classes = new HashSet<Class<?>>();
-      classes.add(beanImplClass);
+      for (Class<?> beanImplClass : beanImplClasses)
+      {
+         boolean unique = classes.add(beanImplClass);
+         if (!unique)
+         {
+            log.warn("Specified class " + beanImplClass + " was not unique, skipping...");
+         }
+      }
       JBossMetaData metadata = new JBoss50Creator(finder).create(classes);
 
-      // Get delegate
-      String ejbName = beanImplClass.getSimpleName();
-      JBossSessionBeanMetaData beanMetaDataDelegate = (JBossSessionBeanMetaData) metadata
-            .getEnterpriseBean(ejbName);
-      assert beanMetaDataDelegate!=null : "Bean metadata for " + ejbName + " could not be found";
+      /*
+       * Mock the EjbMetadataJndiPolicyDecoratorDeployer
+       */
 
-      // Use a Session JNDI Binding Policy for the metadata
-      JBossSessionPolicyDecorator beanMetaData = new JBossSessionPolicyDecorator(beanMetaDataDelegate,
-            new BasicJndiBindingPolicy());
-      
+      // Decorate w/ JNDI Policy
+      log.debug("Decorating EJB3 EJBs in " + metadata + " with JNDI Policy");
+      MetadataUtil.decorateEjbsWithJndiPolicy(metadata, AccessController
+            .doPrivileged(new PrivilegedAction<ClassLoader>()
+            {
+
+               public ClassLoader run()
+               {
+                  return Thread.currentThread().getContextClassLoader();
+               }
+
+            }));
+
       /*
        * Mock the post-merge processing deployers
        */
@@ -103,58 +126,29 @@
       chain.process(metadata);
 
       // Return
-      return beanMetaData;
+      return metadata;
    }
 
-   /*
-    * DEPRECATED Below this marker
+   /**
+    * Mock the appropriate deployers and populate metadata for the EJB with the
+    * specified implementation class
+    * 
+    * @param beanImplClass
+    * @return
     */
-   
-   @Deprecated
-   protected static ResourceReferenceMetaData createResourceEnvRef(Resource annotation, Field element)
+   public static JBossSessionBeanMetaData getMetadataFromBeanImplClass(Class<?> beanImplClass)
    {
-      ResourceReferenceMetaData ref = new ResourceReferenceMetaData();
-      String name = annotation.name();
-      if (name.length() == 0)
-         name = getName(element);
-      if (annotation.mappedName().length() > 0)
-         ref.setMappedName(annotation.mappedName());
-      if (annotation.type() != Object.class)
-         ref.setType(annotation.type().getName());
-      else
-         ref.setType(getType(element));
-      Descriptions descriptions = ProcessorUtils.getDescription(annotation.description());
-      if (descriptions != null)
-         ref.setDescriptions(descriptions);
+      // Create metadata
+      JBossMetaData metadata = getMetaDataFromBeanImplClasses(new Class<?>[]
+      {beanImplClass});
 
-      String injectionName = getInjectionName(element);
-      Set<ResourceInjectionTargetMetaData> injectionTargets = ProcessorUtils
-            .getInjectionTargets(injectionName, element);
-      if (injectionTargets != null)
-         ref.setInjectionTargets(injectionTargets);
+      // Get bean metadata
+      String ejbName = beanImplClass.getSimpleName();
+      JBossSessionBeanMetaData beanMetaData = (JBossSessionBeanMetaData) metadata.getEnterpriseBean(ejbName);
+      assert beanMetaData != null : "Bean metadata for " + ejbName + " could not be found";
 
-      return ref;
+      // Return
+      return beanMetaData;
    }
-   
-   @Deprecated
-   protected static String getName(Field element)
-   {
-      String name = element.getName();
-      return name;
-   }
-   @Deprecated
-   protected static String getInjectionName(Field element)
-   {
-      return element.getName();
-   }
-   @Deprecated
-   protected static String getType(Field element)
-   {
-      return element.getType().getName();
-   }
-   @Deprecated
-   protected static String getDeclaringClass(Field element)
-   {
-      return element.getDeclaringClass().getName();
-   }
+
 }

Modified: projects/ejb3/trunk/test/src/main/java/org/jboss/ejb3/test/deployers/MockDeploymentUnit.java
===================================================================
--- projects/ejb3/trunk/test/src/main/java/org/jboss/ejb3/test/deployers/MockDeploymentUnit.java	2009-01-09 23:04:09 UTC (rev 82742)
+++ projects/ejb3/trunk/test/src/main/java/org/jboss/ejb3/test/deployers/MockDeploymentUnit.java	2009-01-10 01:48:19 UTC (rev 82743)
@@ -1,5 +1,7 @@
 package org.jboss.ejb3.test.deployers;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -12,9 +14,11 @@
 /**
  * MockDeploymentUnit
  * 
+ * An implementation of DeploymentUnit used in EJB3 Testing, equipped with
+ * ability to:
+ * 
  * - Add attachments
  * - Manage the parent/child relationship
- * - toString()
  * - Get the ClassLoader
  *
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
@@ -103,6 +107,12 @@
    @Override
    public ClassLoader getClassLoader()
    {
-      return Thread.currentThread().getContextClassLoader();
+      return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+      {
+         public ClassLoader run()
+         {
+            return Thread.currentThread().getContextClassLoader();
+         }
+      });
    }
 }




More information about the jboss-cvs-commits mailing list