[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