[jboss-cvs] JBossAS SVN: r74506 - projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jun 12 19:05:49 EDT 2008
Author: alex.loubyansky at jboss.com
Date: 2008-06-12 19:05:49 -0400 (Thu, 12 Jun 2008)
New Revision: 74506
Modified:
projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
Log:
JBMETA-45
Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java 2008-06-12 21:42:08 UTC (rev 74505)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java 2008-06-12 23:05:49 UTC (rev 74506)
@@ -44,8 +44,10 @@
import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
import org.jboss.metadata.ejb.jboss.JBossEntityBeanMetaData;
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;
import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
@@ -75,12 +77,26 @@
import org.jboss.metadata.ejb.spec.SessionType;
import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
+import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
+import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationUsageType;
import org.jboss.metadata.javaee.spec.RunAsMetaData;
import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
+import org.jboss.test.metadata.annotation.ejb3.defaultinterface.DefaultInterface;
+import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview21Remote;
+import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview3Remote;
+import org.jboss.test.metadata.annotation.ejb3.multiview.MultiviewHome;
+import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink2Bean;
+import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink3Bean;
import org.jboss.test.metadata.annotation.ejb3.runas.InterMediateBean;
+import org.jboss.test.metadata.common.PackageScanner;
+import org.jboss.test.metadata.common.ScanPackage;
+import org.jboss.test.metadata.common.SetHelper;
import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
@@ -278,6 +294,241 @@
assertInterMediateBean(enterpriseBean);
}
+ public void testAnnotationMergedViewWithPartialXml() throws Exception
+ {
+ Class<?>[] beanClasses =
+ {EjbLink2Bean.class, EjbLink3Bean.class};
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData metaData = creator.create(classes);
+ EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml.xml", EjbJar3xMetaData.class, null);
+ JBoss50MetaData dd = new JBoss50MetaData();
+ dd.merge(null, specMetaData);
+
+ JBoss50MetaData merged = new JBoss50MetaData();
+ merged.merge(dd, metaData);
+ //AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ JBoss50MetaData jbossMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml-jboss.xml",
+ JBoss50MetaData.class, null);
+ // Create a merged view
+ JBossMetaData jbossMergedMetaData = new JBossMetaData();
+ jbossMergedMetaData.merge(jbossMetaData, merged);
+
+ JBossEnterpriseBeanMetaData bean2 = merged.getEnterpriseBean("EjbLink2Bean");
+ assertNotNull(bean2);
+ EJBReferenceMetaData ref1 = bean2.getEjbReferenceByName("ejb/EjbLink1Bean");
+ assertNotNull(ref1);
+ EJBLocalReferenceMetaData ref3 = bean2.getEjbLocalReferenceByName("ejb/EjbLink3Bean");
+ assertNotNull(ref3);
+
+ JBossEnterpriseBeanMetaData bean3 = merged.getEnterpriseBean("EjbLink3Bean");
+ assertNotNull(bean3);
+
+ JBossEnterpriseBeanMetaData jbean2 = jbossMergedMetaData.getEnterpriseBean("EjbLink2Bean");
+ assertNotNull(jbean2);
+ JBossEnterpriseBeanMetaData jbean3 = jbossMergedMetaData.getEnterpriseBean("EjbLink3Bean");
+ assertNotNull(jbean3);
+ }
+
+ /**
+ * Test merging annotation based metadata without xml
+ * @throws Exception
+ */
+ public void testAnnotationMergedViewWithNoXml()
+ throws Exception
+ {
+ Class<?>[] beanClasses = {
+ MyStatelessBean.class
+ };
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData metaData = creator.create(classes);
+ JBoss50MetaData specMetaData = new JBoss50MetaData();
+ JBoss50MetaData merged = new JBoss50MetaData();
+ //AnnotationMergedView.merge(merged, specMetaData, metaData);
+ merged.merge(specMetaData, metaData);
+
+ JBossEnterpriseBeansMetaData beans = merged.getEnterpriseBeans();
+ assertNotNull(beans);
+ assertEquals(1, beans.size());
+ JBossEnterpriseBeanMetaData bean = beans.get("MyStatelessBean");
+ assertNotNull(bean);
+ assertMyStatelessBean(bean);
+ }
+
+ @SuppressWarnings("unchecked")
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.multiview")
+ public void testMultiview() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+
+ //enableTrace("org.jboss.metadata.annotation.creator");
+ JBoss50Creator creator = new JBoss50Creator(finder);
+
+ JBoss50MetaData metaData = creator.create(classes);
+
+ assertTrue(metaData.isEJB3x());
+ assertEquals("3.0", metaData.getVersion());
+
+ assertNotNull("no beans defined", metaData.getEnterpriseBeans());
+ //assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("MultiviewBean");
+ assertNotNull(bean);
+ assertEquals(MultiviewHome.class.getName(), bean.getHome());
+ assertEquals(Multiview21Remote.class.getName(), bean.getRemote());
+ assertEquals(SetHelper.createSet(Multiview3Remote.class.getName()), bean.getBusinessRemotes());
+ InitMethodsMetaData initMethods = bean.getInitMethods();
+ assertNotNull(initMethods);
+ assertEquals(1, initMethods.size());
+ InitMethodMetaData initMethod = initMethods.get(0);
+ assertEquals("create", initMethod.getBeanMethod().getMethodName());
+ }
+
+ /**
+ * Test merging annotation and xml based metadata
+ * @throws Exception
+ */
+ public void testPostConstruct()
+ throws Exception
+ {
+ Class<?>[] beanClasses = {
+ MetaDataStatelessBean.class
+ };
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData metaData = creator.create(classes);
+ EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testPostConstruct.xml", EjbJar3xMetaData.class, null);
+ JBoss50MetaData dd = new JBoss50MetaData();
+ dd.merge(null, specMetaData);
+ JBoss50MetaData merged = new JBoss50MetaData();
+ merged.merge(dd, metaData);
+ //AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ JBossSessionBeanMetaData sessionBean = (JBossSessionBeanMetaData) merged.getEnterpriseBean("MetaDataStatelessBean");
+ assertNotNull(sessionBean);
+ LifecycleCallbacksMetaData lifecycleCallbacks = sessionBean.getPostConstructs();
+ assertNotNull(lifecycleCallbacks);
+ assertEquals(1, lifecycleCallbacks.size());
+ LifecycleCallbackMetaData lifecycleCallback = lifecycleCallbacks.get(0);
+ assertEquals("postConstruct", lifecycleCallback.getMethodName());
+ }
+
+ /**
+ * Test the merge of a MessageDrivenBeanMetaData.
+ *
+ * @throws Exception
+ */
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.messagelistenerinterface")
+ public void testMessageDrivenBeanMerge() throws Exception
+ {
+ // annotations define a MDB
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData metaData = creator.create(classes);
+
+ // xml augments it with a messaging-interface
+ EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testMessageDrivenBeanMerge.xml", EjbJar3xMetaData.class, null);
+ JBoss50MetaData dd = new JBoss50MetaData();
+ dd.merge(null, specMetaData);
+
+ JBoss50MetaData merged = new JBoss50MetaData();
+ merged.merge(dd, metaData);
+ //AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ JBossMessageDrivenBeanMetaData result = (JBossMessageDrivenBeanMetaData) merged.getEnterpriseBean("UnknownMessageListenerInterfaceMDB");
+ assertEquals("javax.jms.MessageListener", result.getMessagingType());
+ ActivationConfigPropertiesMetaData activationConfigProperties = result.getActivationConfig().getActivationConfigProperties();
+ assertEquals(3, activationConfigProperties.size());
+ assertEquals("none", activationConfigProperties.get("dummy").getValue());
+ assertEquals("Auto-acknowledge", activationConfigProperties.get("acknowledgeMode").getValue());
+ assertEquals("javax.jms.Queue", activationConfigProperties.get("destinationType").getValue());
+ assertEquals("two_ejb.jar#MsgBeanInQueue", result.getMessageDestinationLink());
+ MessageDestinationReferencesMetaData mdRefs = result.getMessageDestinationReferences();
+ assertEquals(1, mdRefs.size());
+ MessageDestinationReferenceMetaData replyQueue = mdRefs.get("replyQueue");
+ assertNotNull(replyQueue);
+ assertEquals("javax.jms.Queue", replyQueue.getType());
+ assertEquals("two_ejb.jar#MsgBeanOutQueue", replyQueue.getLink());
+ assertEquals(MessageDestinationUsageType.Produces, replyQueue.getMessageDestinationUsage());
+ }
+
+ /**
+ * EJB 3 4.6.6:
+ * If bean class implements a single interface, that interface is assumed to be the busi-
+ * ness interface of the bean. This business interface will be a local interface unless the
+ * interface is designated as a remote business interface by use of the Remote annota-
+ * tion on the bean class or interface or by means of the deployment descriptor.
+ * @throws Exception
+ */
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.defaultinterface")
+ public void testDefaultInterface() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+
+ JBoss50MetaData metaData = creator.create(classes);
+
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("DefaultRemoteInterfaceBean");
+
+ assertEquals(1, bean.getBusinessRemotes().size());
+ assertTrue(bean.getBusinessRemotes().contains(DefaultInterface.class.getName()));
+
+ bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("DefaultLocalInterfaceBean");
+
+ assertEquals(1, bean.getBusinessLocals().size());
+ assertTrue(bean.getBusinessLocals().contains(DefaultInterface.class.getName()));
+ }
+
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbmeta30")
+ public void testMergeGenericMDBMetaData()
+ throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData specMetaData = creator.create(classes);
+
+ JBossMetaData mergedMetaData = new JBossMetaData();
+ JBossMetaData metaData = unmarshal("AnnotationEjb3_testMergeGenericMDBMetaData.xml", JBossMetaData.class, null);
+ mergedMetaData.merge(metaData, specMetaData);
+
+ JBossMessageDrivenBeanMetaData mdb = (JBossMessageDrivenBeanMetaData) mergedMetaData.getEnterpriseBean("MessageDrivenBean");
+ assertEquals("MDB_QUEUE", mdb.getDestinationJndiName());
+ }
+
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbas5124")
+ public void testMergeGenericMetaData()
+ throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData specMetaData = creator.create(classes);
+
+ JBossMetaData mergedMetaData = new JBossMetaData();
+ JBossMetaData metaData = unmarshal("AnnotationEjb3_testMergeGenericMetaData.xml", JBossMetaData.class);
+ mergedMetaData.merge(metaData, specMetaData);
+
+ JBossSessionBeanMetaData ssbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatelessBean");
+ assertNotNull(ssbean);
+ assertEquals("StatelessBean-jndi-name", ssbean.getJndiName());
+ assertTrue(ssbean.isStateless());
+ JBossSessionBeanMetaData sfbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatefulBean");
+ assertNotNull(sfbean);
+ assertEquals("StatefulBean-jndi-name", sfbean.getJndiName());
+ assertTrue(sfbean.isStateful());
+ }
+
private void assertMyStatefulBean(IEnterpriseBeanMetaData enterpriseBean)
{
assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
More information about the jboss-cvs-commits
mailing list