[jboss-cvs] JBossAS SVN: r72961 - in projects/metadata/trunk/src: test/java/org/jboss/test/metadata/annotation/client and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu May 1 17:59:24 EDT 2008


Author: scott.stark at jboss.org
Date: 2008-05-01 17:59:24 -0400 (Thu, 01 May 2008)
New Revision: 72961

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/client/jboss/JBossClientMetaData.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/basic/Client.java
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/client/AnnotationClient_testJBossXmlMerge.xml
Log:
JBMETA-31, fix merging of annotation msg-refs with jboss.xml msg refs

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/client/jboss/JBossClientMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/client/jboss/JBossClientMetaData.java	2008-05-01 21:58:17 UTC (rev 72960)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/client/jboss/JBossClientMetaData.java	2008-05-01 21:59:24 UTC (rev 72961)
@@ -193,6 +193,18 @@
 
    // Convinence accessors
    
+   /**
+    * Get a message destination
+    * 
+    * @param name the name of the destination
+    * @return the destination or null if not found
+    */
+   public MessageDestinationMetaData getMessageDestinationByName(String name)
+   {
+      if (messageDestinations == null)
+         return null;
+      return messageDestinations.get(name);
+   }
    public MessageDestinationsMetaData getMessageDestinations()
    {
       return messageDestinations;
@@ -463,7 +475,8 @@
                }
                linkedRefs.add(ref);
             }
-            msgRefs.add(ref);
+            if(msgRefs.contains(ref) == false)
+               msgRefs.add(ref);
          }
 
          // Merge the spec resource-env-refs

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java	2008-05-01 21:58:17 UTC (rev 72960)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/AnnotationClientUnitTestCase.java	2008-05-01 21:59:24 UTC (rev 72961)
@@ -29,22 +29,18 @@
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
 import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
 import org.jboss.metadata.client.jboss.JBossClient5DTDMetaData;
+import org.jboss.metadata.client.jboss.JBossClientMetaData;
 import org.jboss.metadata.client.spec.AnnotationMergedView;
 import org.jboss.metadata.client.spec.ApplicationClient14DTDMetaData;
 import org.jboss.metadata.client.spec.ApplicationClient14MetaData;
 import org.jboss.metadata.client.spec.ApplicationClient5MetaData;
-import org.jboss.metadata.ejb.jboss.JBoss50DTDMetaData;
-import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
-import org.jboss.metadata.ejb.spec.EjbJar20MetaData;
-import org.jboss.metadata.ejb.spec.EjbJar21MetaData;
-import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
 import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
-import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
 import org.jboss.metadata.javaee.spec.EnvironmentEntryMetaData;
 import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
 import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
 import org.jboss.metadata.javaee.spec.MessageDestinationMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
 import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
 import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
 import org.jboss.metadata.javaee.spec.ResourceReferenceMetaData;
@@ -58,6 +54,8 @@
 import org.omg.CORBA.ORB;
 
 /**
+ * Tests of JBossClientMetaData from annotations + xml merging
+ * 
  * @author Scott.Stark at jboss.org
  * @version $Revision:$
  */
@@ -70,6 +68,7 @@
       resolver.addClassBindingForLocation("application-client_1_3.dtd", ApplicationClient14DTDMetaData.class);
       resolver.addClassBindingForLocation("application-client_1_4.xsd", ApplicationClient14MetaData.class);
       resolver.addClassBindingForLocation("application-client_5.xsd", ApplicationClient5MetaData.class);
+      resolver.addClassBindingForLocation("jboss-client_5_0.dtd", JBossClient5DTDMetaData.class);
       resolver.addClassBindingForLocation("jboss-client", JBossClient5DTDMetaData.class);
       return resolver;
    }
@@ -120,6 +119,13 @@
       assertEquals("refs/resources/ResourcesOnClassBean", resourceClassBean.getMappedName());
       assertEquals("refs/resources/ResourcesOnClassBean", resourceClassBean.getJndiName());
 
+      // jms Queue maps to message-destination-refs
+      MessageDestinationReferencesMetaData msgRefs = clientMD.getMessageDestinationReferences();
+      System.out.println(clientMD.getResourceEnvironmentReferences());
+      assertNotNull(msgRefs);
+      MessageDestinationReferenceMetaData sendQueue = clientMD.getMessageDestinationReferenceByName("sendQueue");
+      assertNotNull(sendQueue);
+
       // ORB maps to a resource-env-ref
       ResourceEnvironmentReferenceMetaData orbRes = clientMD.getResourceEnvironmentReferenceByName("orb");
       System.out.println(clientMD.getResourceEnvironmentReferences());
@@ -233,4 +239,80 @@
       assertEquals("queue/testQueue", md.getJndiName());
       assertEquals("queue/testQueue", md.getMappedName());
    }
+   
+   @ScanPackage("org.jboss.test.metadata.annotation.client.basic")
+   public void testJBossXmlMerge()
+      throws Exception
+   {
+         AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+         Collection<Class<?>> classes = PackageScanner.loadClasses();
+         System.out.println("Processing classes: "+classes);
+         ApplicationClient5MetaDataCreator creator = new ApplicationClient5MetaDataCreator(finder);
+         ApplicationClient5MetaData clientMD = creator.create(classes);
+         
+         ApplicationClient5MetaData xmlMD = super.unmarshal("AnnotationClient_testXmlMerge.xml", ApplicationClient5MetaData.class);
+         ApplicationClient5MetaData merged = new ApplicationClient5MetaData();
+         AnnotationMergedView.merge(merged, xmlMD, clientMD);
+         
+         JBossClientMetaData jbossXmlMD = super.unmarshal(JBossClientMetaData.class);
+         // Create a merged view
+         JBossClientMetaData mergedMetaData = new JBossClientMetaData();
+         mergedMetaData.merge(jbossXmlMD, merged, false);
+
+         EnvironmentEntryMetaData msg = mergedMetaData.getEnvironmentEntryByName("msg");
+         assertNotNull(msg);
+         assertEquals("java.lang.String", msg.getType());
+         assertEquals("how are you?", msg.getValue());
+
+         LifecycleCallbacksMetaData postConstructs = mergedMetaData.getPostConstructs();
+         assertNotNull(postConstructs);
+         // 2 because of the null class name in the xml
+         assertEquals(2, postConstructs.size());
+         LifecycleCallbackMetaData pc0 = postConstructs.get(0);
+         assertEquals("postConstruct", pc0.getMethodName());
+
+         LifecycleCallbacksMetaData preDestroys = mergedMetaData.getPreDestroys();
+         assertNotNull(preDestroys);
+         // 2 because of the null class name in the xml
+         assertEquals(2, preDestroys.size());
+         LifecycleCallbackMetaData pd0 = preDestroys.get(0);
+         assertEquals("preDestroy", pd0.getMethodName());
+
+         assertEquals("org.jboss.ejb3.test.applicationclient.client.TestCallbackHandler", mergedMetaData.getCallbackHandler());
+
+         // jms Queue maps to message-destination-refs
+         MessageDestinationReferencesMetaData msgRefs = mergedMetaData.getMessageDestinationReferences();
+         System.out.println(clientMD.getResourceEnvironmentReferences());
+         assertNotNull(msgRefs);
+         MessageDestinationReferenceMetaData sendQueue = mergedMetaData.getMessageDestinationReferenceByName("sendQueue");
+         assertNotNull(sendQueue);
+         assertEquals("MDB_QUEUE", sendQueue.getJndiName());
+         assertEquals("MDB_QUEUE", sendQueue.getMappedName());
+
+         // ORB maps to a resource-env-ref
+         ResourceEnvironmentReferenceMetaData orbRes = mergedMetaData.getResourceEnvironmentReferenceByName("orb");
+         System.out.println(clientMD.getResourceEnvironmentReferences());
+         assertNotNull(orbRes);
+         assertEquals(ORB.class.getName(), orbRes.getType());
+         ResourceEnvironmentReferenceMetaData messageReplier = mergedMetaData.getResourceEnvironmentReferenceByName("messageReplier");
+         assertNotNull(messageReplier);
+         assertEquals("javax.jms.Queue", messageReplier.getType());
+
+         // String maps to env-entry
+         System.out.println(clientMD.getEnvironmentEntries());
+         EnvironmentEntryMetaData queueNameEntry = clientMD.getEnvironmentEntryByName("queueName");
+         assertNotNull(queueNameEntry);
+         assertEquals("queue/testQueueOverride", queueNameEntry.getValue());
+         Set<ResourceInjectionTargetMetaData> queueNameEntryTargets = queueNameEntry.getInjectionTargets();
+         assertNotNull(queueNameEntryTargets);
+         assertEquals(1, queueNameEntryTargets.size());
+         ResourceInjectionTargetMetaData queueNameEntryField = queueNameEntryTargets.iterator().next();
+         assertEquals(Client.class.getName(), queueNameEntryField.getInjectionTargetClass());
+         assertEquals("queueName", queueNameEntryField.getInjectionTargetName());
+
+         MessageDestinationMetaData md = mergedMetaData.getMessageDestinationByName("MY-QUEUE");
+         assertNotNull(md);
+         assertEquals("queue/testQueue", md.getJndiName());
+         assertEquals("queue/testQueue", md.getMappedName());
+   }
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/basic/Client.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/basic/Client.java	2008-05-01 21:58:17 UTC (rev 72960)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/annotation/client/basic/Client.java	2008-05-01 21:59:24 UTC (rev 72961)
@@ -27,6 +27,7 @@
 import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
 import javax.ejb.EJB;
+import javax.jms.Queue;
 import javax.transaction.UserTransaction;
 
 import org.omg.CORBA.ORB;
@@ -51,6 +52,12 @@
       resourceMethodBean = rif;
    }
 
+   @Resource(name="sendQueue")
+   private static Queue sendQueue;
+
+   @Resource(name="receiveQueue")
+   private static Queue receiveQueue;
+
    @Resource(name="queueName", mappedName="queue/testQueue")
    private static String queueName;
    @Resource(mappedName="3.14159", description="pi to 5", name="PI")

Modified: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/client/AnnotationClient_testJBossXmlMerge.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/client/AnnotationClient_testJBossXmlMerge.xml	2008-05-01 21:58:17 UTC (rev 72960)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/annotation/client/AnnotationClient_testJBossXmlMerge.xml	2008-05-01 21:59:24 UTC (rev 72961)
@@ -9,4 +9,14 @@
         <resource-env-ref-name>messageReplier</resource-env-ref-name>
         <jndi-name>queue/messageReplier</jndi-name>
     </resource-env-ref>
+    
+    <message-destination-ref>
+        <message-destination-ref-name>sendQueue</message-destination-ref-name>
+        <jndi-name>MDB_QUEUE</jndi-name>
+    </message-destination-ref>
+    <message-destination-ref>
+        <message-destination-ref-name>receiveQueue</message-destination-ref-name>
+        <jndi-name>MDB_QUEUE_REPLY</jndi-name>
+    </message-destination-ref>
+    
 </jboss-client>




More information about the jboss-cvs-commits mailing list