[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