[jboss-cvs] JBossAS SVN: r66448 - in projects/metadata/trunk/src: main/java/org/jboss/metadata/client/spec and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Oct 25 15:03:27 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-10-25 15:03:27 -0400 (Thu, 25 Oct 2007)
New Revision: 66448

Added:
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/client/ApplicationClient14_testBasicJBoss.xml
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/client/jboss/JBossClientMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/client/spec/ApplicationClientMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/MessageDestinationsMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ResourceEnvironmentReferencesMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ResourceReferenceMetaData.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/support/IdMetaDataImplWithDescriptionGroup.java
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/support/ResourceInjectionMetaDataWithDescriptions.java
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/client/ApplicationClient14UnitTestCase.java
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/client/ApplicationClient14_testBasic.xml
Log:
Fix the merge of the client metadata

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	2007-10-25 18:23:16 UTC (rev 66447)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/client/jboss/JBossClientMetaData.java	2007-10-25 19:03:27 UTC (rev 66448)
@@ -21,6 +21,8 @@
  */
 package org.jboss.metadata.client.jboss;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 import javax.xml.bind.annotation.XmlAttribute;
@@ -31,6 +33,7 @@
 import org.jboss.metadata.javaee.spec.EJBReferencesMetaData;
 import org.jboss.metadata.javaee.spec.EnvironmentEntriesMetaData;
 import org.jboss.metadata.javaee.spec.EnvironmentEntryMetaData;
+import org.jboss.metadata.javaee.spec.MessageDestinationMetaData;
 import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
 import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
 import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
@@ -65,17 +68,18 @@
    
    /** The environment */
    private RemoteEnvironmentRefsGroupMetaData jndiEnvironmentRefsGroup;
-   
    /** A list of extra dependencies to wait on */
    private List<String> depends;
-   
+   /** The legacy dtd public id */
    private String dtdPublicId;
+   /** The legacy dtd system id */
    private String dtdSystemId;
-   /** The version of the client */
+   /** The version of the jboss client descriptor */
    private String version;
    /** The callback handler */
    private String callbackHandler;
-
+   /** Whether the spec metadata is complete */
+   private boolean metaDataComplete;
    /** The message destinations */
    private MessageDestinationsMetaData messageDestinations;
 
@@ -135,6 +139,15 @@
       this.version = version;
    }
 
+   
+   public boolean isMetaDataComplete()
+   {
+      return metaDataComplete;
+   }
+   public void setMetaDataComplete(boolean metaDataComplete)
+   {
+      this.metaDataComplete = metaDataComplete;
+   }
    public String getCallbackHandler()
    {
       return callbackHandler;
@@ -291,17 +304,29 @@
       MessageDestinationsMetaData specMsgs = null;
       if(jboss != null)
       {
-         setDepends(jboss.depends);
-         this.setJndiName(jboss.jndiName);
-         this.dtdPublicId = jboss.dtdPublicId;
-         this.dtdSystemId = jboss.dtdSystemId;
-         this.version = jboss.version;
+         if(jboss.depends != null)
+            setDepends(jboss.depends);
+         if(jboss.jndiName != null)
+            this.setJndiName(jboss.jndiName);
+         else if(jboss.getDescriptionGroup() != null && jboss.getDescriptionGroup().getDisplayName() != null)
+            this.setJndiName(jboss.getDescriptionGroup().getDisplayName());
+         if(jboss.dtdPublicId != null)
+            this.dtdPublicId = jboss.dtdPublicId;
+         if(jboss.dtdSystemId != null)
+            this.dtdSystemId = jboss.dtdSystemId;
+         if(jboss.version != null)
+            this.version = jboss.version;
          jbossEnv = jboss.getJndiEnvironmentRefsGroup();
+         jbossMsgs = jboss.getMessageDestinations();
       }
       if(spec != null)
       {
          specEnv = spec.getJndiEnvironmentRefsGroup();
          specMsgs = spec.getMessageDestinations();
+         if(jndiName == null && spec.getDescriptionGroup() != null && spec.getDescriptionGroup().getDisplayName() != null)
+            setJndiName(spec.getDescriptionGroup().getDisplayName());
+         metaDataComplete = spec.isMetadataComplete();
+         specMsgs = spec.getMessageDestinations();
       }
 
       if(jboss != null && jboss.callbackHandler != null)
@@ -309,10 +334,114 @@
       else if(spec != null && spec.getCallbackHandler() != null)
          this.setCallbackHandler(spec.getCallbackHandler());
 
-      jndiEnvironmentRefsGroup = new RemoteEnvironmentRefsGroupMetaData();
-      jndiEnvironmentRefsGroup.merge(jbossEnv, specEnv, mustOverride);
+      if(jndiEnvironmentRefsGroup == null)
+         jndiEnvironmentRefsGroup = new RemoteEnvironmentRefsGroupMetaData();
+      jndiEnvironmentRefsGroup.merge(jbossEnv, specEnv, false);
 
-      messageDestinations = new MessageDestinationsMetaData();
-      messageDestinations.merge(jbossMsgs, specMsgs);
+      // Get the merged resource-env-refs
+      ResourceEnvironmentReferencesMetaData resEnvRefs = jndiEnvironmentRefsGroup.getResourceEnvironmentReferences();
+
+      // Merge the message-destinations
+      messageDestinations = MessageDestinationsMetaData.merge(jbossMsgs, specMsgs, "jboss-client.xml", "application-client.xml");
+
+      /* Need to map message-destinations to resource-env-refs for legacy
+       * descriptors that did not have message-destinations
+      */
+      if(messageDestinations != null && resEnvRefs != null)
+      {
+         for(MessageDestinationMetaData md : messageDestinations)
+         {
+            if(md.getMappedName() == null)
+            {
+               ResourceEnvironmentReferenceMetaData ref = resEnvRefs.get(md.getMessageDestinationName());
+               if(ref != null)
+                  md.setMappedName(ref.getMappedName());
+            }
+         }
+      }
+
+      /** A  HashMap<String, ArrayList<MessageDestinationReferenceMetaData>> of
+       * message-destination-ref that resolve to a jndi-name via a message-destination
+       * via a message-destination-link
+       */
+      HashMap<String, ArrayList<MessageDestinationReferenceMetaData>> resourceEnvReferenceLinks
+         = new HashMap<String, ArrayList<MessageDestinationReferenceMetaData>>();
+      /* Merge the message-destination-ref elements
+      This is a bit convoluted because legacy jboss descriptors did not support
+      message-destination-ref elements.
+      A message-destination-ref is linked to a jndi-name either via
+      the message-destination-ref/message-destination-ref-name mapping to
+      a jboss resource-env-ref/resource-env-ref-name if there is no
+      message-destination-link, or by the message-destination-link ->
+      message-destination/message-destination-name mapping to a jboss
+      resource-env-ref/resource-env-ref-name.
+      */
+      if(specEnv != null)
+      {
+         ResourceEnvironmentReferencesMetaData specEnvRefs = specEnv.getResourceEnvironmentReferences();
+         MessageDestinationReferencesMetaData specMsgRefs = specEnv.getMessageDestinationReferences();
+         MessageDestinationReferencesMetaData msgRefs = jndiEnvironmentRefsGroup.getMessageDestinationReferences();
+         if(msgRefs == null)
+         {
+            msgRefs = new MessageDestinationReferencesMetaData();
+            jndiEnvironmentRefsGroup.setMessageDestinationReferences(msgRefs);
+         }
+         if(specMsgRefs != null)
+         for(MessageDestinationReferenceMetaData ref : specMsgRefs)
+         {
+            ref = (MessageDestinationReferenceMetaData)ref.clone();
+            String link = ref.getLink();
+            if (link != null)
+            {
+               ArrayList<MessageDestinationReferenceMetaData> linkedRefs = resourceEnvReferenceLinks.get(link);
+               if (linkedRefs == null)
+               {
+                  linkedRefs = new ArrayList<MessageDestinationReferenceMetaData>();
+                  resourceEnvReferenceLinks.put(link, linkedRefs);
+               }
+               linkedRefs.add(ref);
+            }
+            msgRefs.add(ref);
+         }
+
+         // Merge the spec resource-env-refs
+         if(resEnvRefs != null && specEnvRefs != null)
+         for(ResourceEnvironmentReferenceMetaData ref : resEnvRefs)
+         {
+            String resRefName = ref.getResourceEnvRefName();
+            ResourceEnvironmentReferenceMetaData specRef = specEnvRefs.get(resRefName);
+            if (specRef == null)
+            {
+               // Try the resourceEnvReferenceLinks
+               ArrayList<MessageDestinationReferenceMetaData> linkedRefs = resourceEnvReferenceLinks.get(resRefName);
+               if (linkedRefs != null)
+               {
+                  for(MessageDestinationReferenceMetaData mref : linkedRefs)
+                  {
+                     if(mref.getIgnoreDependency() != null)
+                        ref.setIgnoreDependency(mref.getIgnoreDependency());
+                     if(mref.getType() != null)
+                        ref.setType(mref.getType());
+                     mref.setMappedName(ref.getMappedName());
+                  }
+               }
+               else if(msgRefs.containsKey(resRefName))
+               {
+                  MessageDestinationReferenceMetaData mref = msgRefs.get(resRefName);
+                  mref.setMappedName(ref.getMappedName());                  
+               }
+               else
+               {
+                  throw new IllegalStateException("resource-env-ref " + resRefName + " found in jboss-client.xml but not in application-client.xml");
+               }
+            }
+            else
+            {
+               // Merge the spec ref into the jboss ref
+               ref.merge(null, specRef);
+            }
+         }
+      }
+
    }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/client/spec/ApplicationClientMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/client/spec/ApplicationClientMetaData.java	2007-10-25 18:23:16 UTC (rev 66447)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/client/spec/ApplicationClientMetaData.java	2007-10-25 19:03:27 UTC (rev 66448)
@@ -21,6 +21,7 @@
  */
 package org.jboss.metadata.client.spec;
 
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlTransient;
 
@@ -64,6 +65,8 @@
    private String version;
    /** The callback handler */
    private String callbackHandler;
+   /** The metadata-complete attribute */
+   private boolean metadataComplete;
 
    /** The message destinations */
    private MessageDestinationsMetaData messageDestinations;
@@ -117,6 +120,17 @@
       this.version = version;
    }
 
+   
+   public boolean isMetadataComplete()
+   {
+      return metadataComplete;
+   }
+   @XmlAttribute(name="metadata-complete")
+   public void setMetadataComplete(boolean metadataComplete)
+   {
+      this.metadataComplete = metadataComplete;
+   }
+
    public String getCallbackHandler()
    {
       return callbackHandler;

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/MessageDestinationsMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/MessageDestinationsMetaData.java	2007-10-25 18:23:16 UTC (rev 66447)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/MessageDestinationsMetaData.java	2007-10-25 19:03:27 UTC (rev 66448)
@@ -22,6 +22,7 @@
 package org.jboss.metadata.javaee.spec;
 
 import org.jboss.metadata.javaee.support.AbstractMappedMetaData;
+import org.jboss.metadata.javaee.support.JavaEEMetaDataUtil;
 
 /**
  * MessageDestinationsMetaData.
@@ -35,34 +36,36 @@
    private static final long serialVersionUID = -6198704374773701253L;
 
    /**
-    * Create a new MessageDestinationsMetaData.
+   /**
+    * Merge the contents of override with original into a new MessageDestinationsMetaData.
+    * @param override - metadata augmenting overriden
+    * @param overriden - the base metadata
+    * @param overridenFile - the source of the override destinations
+    * @param overrideFile- the source of the overriden destinations
+    * @return a new merged MessageDestinationsMetaData if either
+    * override and overriden is not null, null otherwise.
     */
-   public MessageDestinationsMetaData()
+   public static MessageDestinationsMetaData merge(MessageDestinationsMetaData override,
+         MessageDestinationsMetaData overriden,
+         String overridenFile, String overrideFile)
    {
-      super("message destination name");
+      if (override == null && overriden == null)
+         return null;
+      
+      if (override == null)
+         return overriden;
+      
+      MessageDestinationsMetaData merged = new MessageDestinationsMetaData();
+      // mustOverride is false because legacy jboss descriptors not having a message-destination
+      return JavaEEMetaDataUtil.merge(merged, overriden, override, "message-destination", overridenFile, overrideFile, false);
    }
 
    /**
-    * Merge the contents of override with original into this.
-    * 
-    * @param override data which overrides original
-    * @param original the original data
+    * Create a new MessageDestinationsMetaData.
     */
-   public void merge(MessageDestinationsMetaData override, MessageDestinationsMetaData original)
+   public MessageDestinationsMetaData()
    {
-      if(original == null && override != null)
-         addAll(override);
-      else if(override != null)
-      {
-         for(MessageDestinationMetaData md : override)
-         {
-            MessageDestinationMetaData mergedMD = new MessageDestinationMetaData();
-            MessageDestinationMetaData mdOrig = original.get(md.getMessageDestinationName());
-            if(mdOrig != null)
-               mergedMD.merge(md, mdOrig);
-         }
-      }
-      else
-         addAll(original);
+      super("message destination name");
    }
+
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ResourceEnvironmentReferencesMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ResourceEnvironmentReferencesMetaData.java	2007-10-25 18:23:16 UTC (rev 66447)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ResourceEnvironmentReferencesMetaData.java	2007-10-25 19:03:27 UTC (rev 66448)
@@ -53,7 +53,7 @@
          return overriden;
       
       ResourceEnvironmentReferencesMetaData merged = new ResourceEnvironmentReferencesMetaData();
-      return JavaEEMetaDataUtil.merge(merged, overriden, override, "resource-env-ref", overridenFile, overrideFile, true);
+      return JavaEEMetaDataUtil.merge(merged, overriden, override, "resource-env-ref", overridenFile, overrideFile, false);
    }
 
    /**

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ResourceReferenceMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ResourceReferenceMetaData.java	2007-10-25 18:23:16 UTC (rev 66447)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/ResourceReferenceMetaData.java	2007-10-25 19:03:27 UTC (rev 66448)
@@ -213,6 +213,10 @@
          setResSharingScope(override.sharingScope);
       else if (original.sharingScope != null)
          setResSharingScope(original.sharingScope);
+      if (override != null && override.resUrl != null)
+         setResUrl(override.resUrl);
+      else if (original.resUrl != null)
+         setResUrl(original.resUrl);
    }
 
    /**

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/support/IdMetaDataImplWithDescriptionGroup.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/support/IdMetaDataImplWithDescriptionGroup.java	2007-10-25 18:23:16 UTC (rev 66447)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/support/IdMetaDataImplWithDescriptionGroup.java	2007-10-25 19:03:27 UTC (rev 66448)
@@ -68,4 +68,14 @@
          throw new IllegalArgumentException("Null descriptionGroup");
       this.descriptionGroup = descriptionGroup;
    }
+
+   public void merge(IdMetaDataImplWithDescriptionGroup override,
+         IdMetaDataImplWithDescriptionGroup original)
+   {
+      super.merge(override, original);
+      if(override != null && override.descriptionGroup != null)
+         setDescriptionGroup(override.descriptionGroup);
+      else if(original != null && original.descriptionGroup != null)
+         setDescriptionGroup(original.descriptionGroup);         
+   }
 }

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/support/ResourceInjectionMetaDataWithDescriptions.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/support/ResourceInjectionMetaDataWithDescriptions.java	2007-10-25 18:23:16 UTC (rev 66447)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/support/ResourceInjectionMetaDataWithDescriptions.java	2007-10-25 19:03:27 UTC (rev 66448)
@@ -73,9 +73,9 @@
    public void merge(ResourceInjectionMetaDataWithDescriptions override, ResourceInjectionMetaDataWithDescriptions original)
    {
       super.merge(override, original);
-      if(override.descriptions != null)
+      if(override != null && override.descriptions != null)
          setDescriptions(override.descriptions);
-      else if(original.descriptions != null)
+      else if(original != null && original.descriptions != null)
          setDescriptions(original.descriptions);
    }
 }

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/client/ApplicationClient14UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/client/ApplicationClient14UnitTestCase.java	2007-10-25 18:23:16 UTC (rev 66447)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/client/ApplicationClient14UnitTestCase.java	2007-10-25 19:03:27 UTC (rev 66448)
@@ -23,14 +23,20 @@
 
 import java.util.Set;
 
+import org.jboss.metadata.client.jboss.JBossClient5DTDMetaData;
+import org.jboss.metadata.client.jboss.JBossClientMetaData;
 import org.jboss.metadata.client.spec.ApplicationClient14MetaData;
 import org.jboss.metadata.client.spec.ApplicationClientMetaData;
 import org.jboss.metadata.ear.spec.Ear13DTDMetaData;
 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.MessageDestinationUsageType;
 import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
 import org.jboss.metadata.javaee.spec.PersistenceUnitReferencesMetaData;
+import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
 import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
+import org.jboss.metadata.javaee.spec.ResourceReferenceMetaData;
 import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest;
 import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
 import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
@@ -53,6 +59,7 @@
    {
       DefaultSchemaResolver resolver = new DefaultSchemaResolver();
       resolver.addClassBindingForLocation("application-client_1_4.xsd", ApplicationClient14MetaData.class);
+      resolver.addClassBindingForLocation("jboss-client_4_0.dtd", JBossClient5DTDMetaData.class);
       return resolver;
    }
    
@@ -60,8 +67,83 @@
    {
       ApplicationClientMetaData appClientMetaData = unmarshal();
       assertEquals("1.4", appClientMetaData.getVersion());
+      assertEquals("A sample application client descriptor", appClientMetaData.getDescriptionGroup().getDescription());
+      assertEquals("J2EE Client Tests", appClientMetaData.getDescriptionGroup().getDisplayName());
+      assertEquals("org.jboss.test.client.test.SystemPropertyCallbackHandler", appClientMetaData.getCallbackHandler());
+      assertEquals(3, appClientMetaData.getEnvironmentEntries().size());
    }
-   
+
+   public void testBasicOverrides() throws Exception
+   {
+      ApplicationClientMetaData appClientMetaData = unmarshal("ApplicationClient14_testBasic.xml", ApplicationClientMetaData.class, null);
+      JBossClientMetaData jbossClientMetaData = unmarshal("ApplicationClient14_testBasicJBoss.xml", JBossClientMetaData.class, null);
+      JBossClientMetaData metaData = new JBossClientMetaData();
+      metaData.merge(jbossClientMetaData, appClientMetaData, true);
+
+      assertEquals("org.jboss.test.client.test.SystemPropertyCallbackHandler", metaData.getCallbackHandler());
+      assertEquals("A sample application client descriptor", metaData.getDescriptionGroup().getDescription());
+      assertEquals("J2EE Client Tests", metaData.getDescriptionGroup().getDisplayName());
+      assertEquals("test-client", metaData.getJndiName());
+      assertEquals("4.0", metaData.getVersion());
+
+      // Validate the resource-refs
+      ResourceReferenceMetaData res0 = metaData.getResourceReferenceByName("url/JBossHome");
+      assertNotNull(res0);
+      assertNull(res0.getJndiName());
+      assertNull(res0.getMappedName());
+      assertEquals("java.net.URL", res0.getType());
+      assertTrue(res0.isContainerAuth());
+      assertEquals("The JBoss Web Site HomePage", res0.getDescriptions().value()[0].value());
+      assertEquals("http://www.jboss.org", res0.getResUrl());
+      ResourceReferenceMetaData res1 = metaData.getResourceReferenceByName("url/IndirectURL");
+      assertNotNull(res1);
+      assertEquals("SomeWebSite", res1.getJndiName());
+      assertEquals("SomeWebSite", res1.getMappedName());
+      assertEquals("java.net.URL", res1.getType());
+      assertTrue(res1.isContainerAuth());
+      assertEquals("SomeWebSite HomePage", res1.getDescriptions().value()[0].value());
+      assertNull(res1.getResUrl());
+      // Validate the resource-env-refs
+      ResourceEnvironmentReferenceMetaData res2 = metaData.getResourceEnvironmentReferenceByName("jms/aQueue");
+      assertNotNull(res2);
+      assertEquals("A test of the resource-env-ref tag", res2.getDescriptions().value()[0].value());
+      assertEquals("jms/aQueue", res2.getResourceEnvRefName());
+      assertEquals("javax.jms.Queue", res2.getType());
+      assertEquals("queue/testQueue", res2.getJndiName());
+      assertEquals("queue/testQueue", res2.getMappedName());
+      // This is legacy behavior that should be dropped?
+      ResourceEnvironmentReferenceMetaData res3 = metaData.getResourceEnvironmentReferenceByName("jms/anotherQueue");
+      assertNotNull(res3);
+      // Validate the message-destination-refs
+      MessageDestinationReferenceMetaData msg1 = metaData.getMessageDestinationReferenceByName("jms/anotherQueue");
+      assertNotNull(msg1);
+      assertEquals("A message-destination-ref needing a jboss/resource-env-ref", msg1.getDescriptions().value()[0].value());
+      assertEquals("jms/anotherQueue", msg1.getMessageDestinationRefName());
+      assertEquals("javax.jms.Queue", msg1.getType());
+      assertNull(msg1.getLink());
+      assertEquals(MessageDestinationUsageType.Consumes, msg1.getMessageDestinationUsage());
+      assertEquals("queue/A", msg1.getJndiName());
+      assertEquals("queue/A", msg1.getMappedName());
+      MessageDestinationReferenceMetaData msg2 = metaData.getMessageDestinationReferenceByName("jms/anotherQueue2");
+      assertNotNull(msg2);
+      assertNull(msg2.getDescriptions());
+      assertEquals("jms/anotherQueue2", msg2.getMessageDestinationRefName());
+      assertEquals("javax.jms.Queue", msg2.getType());
+      assertEquals("TheOtherQueue", msg2.getLink());
+      assertEquals(MessageDestinationUsageType.Consumes, msg2.getMessageDestinationUsage());
+      assertEquals("queue/B", msg2.getJndiName());
+      assertEquals("queue/B", msg2.getMappedName());
+      // Validate message-destination
+      MessageDestinationsMetaData msgDests = metaData.getMessageDestinations();
+      assertEquals(1, msgDests.size());
+      MessageDestinationMetaData md0 = msgDests.get("TheOtherQueue");
+      assertEquals("Some msg destination needing a jboss/resource-env-ref", md0.getDescriptionGroup().getDescription());
+      assertEquals("TheOtherQueue", md0.getMessageDestinationName());
+      assertEquals("TheOtherQueue-id", md0.getId());
+      assertEquals("queue/B", md0.getJndiName());
+      assertEquals("queue/B", md0.getMappedName());      
+   }
+
    protected ApplicationClientMetaData unmarshal() throws Exception
    {
       return unmarshal(ApplicationClientMetaData.class);

Modified: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/client/ApplicationClient14_testBasic.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/client/ApplicationClient14_testBasic.xml	2007-10-25 18:23:16 UTC (rev 66447)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/client/ApplicationClient14_testBasic.xml	2007-10-25 19:03:27 UTC (rev 66448)
@@ -59,6 +59,7 @@
     </resource-env-ref>
     
     <message-destination-ref>
+        <description>A message-destination-ref needing a jboss/resource-env-ref</description>
         <message-destination-ref-name>jms/anotherQueue</message-destination-ref-name>
         <message-destination-type>javax.jms.Queue</message-destination-type>
         <message-destination-usage>Consumes</message-destination-usage>
@@ -73,7 +74,8 @@
     
     <callback-handler>org.jboss.test.client.test.SystemPropertyCallbackHandler</callback-handler>
     
-    <message-destination>
+    <message-destination id="TheOtherQueue-id">
+        <description>Some msg destination needing a jboss/resource-env-ref</description>
         <message-destination-name>TheOtherQueue</message-destination-name>
     </message-destination>
 </application-client>
\ No newline at end of file

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/client/ApplicationClient14_testBasicJBoss.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/client/ApplicationClient14_testBasicJBoss.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/client/ApplicationClient14_testBasicJBoss.xml	2007-10-25 19:03:27 UTC (rev 66448)
@@ -0,0 +1,40 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE jboss-client PUBLIC
+   "-//JBoss//DTD Application Client 4.0//EN"
+   "http://www.jboss.org/j2ee/dtd/jboss-client_4_0.dtd">
+
+<!-- The jboss-client doc for testing overrides to the
+ ApplicationClient14_testBasic.xml spec document
+ -->
+<jboss-client>
+   <jndi-name>test-client</jndi-name>
+   
+   <ejb-ref>
+       <ejb-ref-name>ejb/StatelessSessionBean</ejb-ref-name>
+       <jndi-name>ejbcts/StatelessSessionHome</jndi-name>
+   </ejb-ref>
+   
+   <resource-ref>
+       <res-ref-name>url/JBossHome</res-ref-name>
+       <res-url>http://www.jboss.org</res-url>
+   </resource-ref>
+   <resource-ref>
+       <res-ref-name>url/IndirectURL</res-ref-name>
+       <jndi-name>SomeWebSite</jndi-name>
+   </resource-ref>
+   
+   <resource-env-ref>
+       <resource-env-ref-name>jms/aQueue</resource-env-ref-name>
+       <jndi-name>queue/testQueue</jndi-name>
+   </resource-env-ref>
+   <!-- Map the message-destination-ref without a message-destination-link -->
+   <resource-env-ref>
+       <resource-env-ref-name>jms/anotherQueue</resource-env-ref-name>
+       <jndi-name>queue/A</jndi-name>
+   </resource-env-ref>
+   <!-- Map the message-destination-ref with a message-destination-link -->
+   <resource-env-ref>
+       <resource-env-ref-name>TheOtherQueue</resource-env-ref-name>
+       <jndi-name>queue/B</jndi-name>
+   </resource-env-ref>
+</jboss-client>


Property changes on: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/client/ApplicationClient14_testBasicJBoss.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native




More information about the jboss-cvs-commits mailing list