[jboss-cvs] JBossAS SVN: r91768 - projects/jboss-jca/trunk/sjc/src/main/java/org/jboss/jca/sjc/deployers/ra.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 29 10:48:13 EDT 2009


Author: jesper.pedersen
Date: 2009-07-29 10:48:13 -0400 (Wed, 29 Jul 2009)
New Revision: 91768

Modified:
   projects/jboss-jca/trunk/sjc/src/main/java/org/jboss/jca/sjc/deployers/ra/Metadata.java
   projects/jboss-jca/trunk/sjc/src/main/java/org/jboss/jca/sjc/deployers/ra/RADeployer.java
Log:
[JBJCA-118] SJC/RADeployer: Merge specification and vendor metadata

Modified: projects/jboss-jca/trunk/sjc/src/main/java/org/jboss/jca/sjc/deployers/ra/Metadata.java
===================================================================
--- projects/jboss-jca/trunk/sjc/src/main/java/org/jboss/jca/sjc/deployers/ra/Metadata.java	2009-07-29 14:42:06 UTC (rev 91767)
+++ projects/jboss-jca/trunk/sjc/src/main/java/org/jboss/jca/sjc/deployers/ra/Metadata.java	2009-07-29 14:48:13 UTC (rev 91768)
@@ -23,11 +23,16 @@
 package org.jboss.jca.sjc.deployers.ra;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 import org.jboss.logging.Logger;
 import org.jboss.metadata.rar.jboss.JBossRA10DefaultNSMetaData;
 import org.jboss.metadata.rar.jboss.JBossRA10MetaData;
 import org.jboss.metadata.rar.jboss.JBossRAMetaData;
+import org.jboss.metadata.rar.jboss.RaConfigPropertyMetaData;
+import org.jboss.metadata.rar.spec.ConfigPropertyMetaData;
 import org.jboss.metadata.rar.spec.ConnectorMetaData;
 import org.jboss.metadata.rar.spec.JCA15DTDMetaData;
 import org.jboss.metadata.rar.spec.JCA15MetaData;
@@ -147,4 +152,71 @@
       
       return result;
    }
+
+   /**
+    * Merge specification metadata with vendor metadata
+    * @param cmd The specification metadata
+    * @param jmd The vendor metadata
+    * @return The merged metadata
+    * @exception Exception Thrown if an error occurs
+    */
+   public static ConnectorMetaData merge(ConnectorMetaData cmd, JBossRAMetaData jmd) throws Exception
+   {
+      if (cmd != null && jmd != null)
+      {
+         List<RaConfigPropertyMetaData> props = jmd.getRaConfigProps();
+         List<ConfigPropertyMetaData> append = null;
+
+         if (props != null)
+         {
+            for (RaConfigPropertyMetaData rcmd : props)
+            {
+               List<ConfigPropertyMetaData> l = cmd.getRa().getConfigProperty();
+               boolean found = false;
+
+               if (l != null)
+               {
+                  Iterator<ConfigPropertyMetaData> it = l.iterator();
+                  
+                  while (!found && it.hasNext())
+                  {
+                     ConfigPropertyMetaData cpmd = it.next();
+                     if (cpmd.getName().equals(rcmd.getName()) &&
+                         cpmd.getType().equals(rcmd.getType()))
+                     {
+                        cpmd.setValue(rcmd.getValue());
+                        found = true;
+                     }
+                  }
+               }
+
+               if (!found)
+               {
+                  if (append == null)
+                     append = new ArrayList<ConfigPropertyMetaData>();
+
+                  ConfigPropertyMetaData cpmd = new ConfigPropertyMetaData();
+                  cpmd.setName(rcmd.getName());
+                  cpmd.setType(rcmd.getType());
+                  cpmd.setValue(rcmd.getValue());
+                  
+                  append.add(cpmd);
+               }
+            }
+
+            if (append != null)
+            {
+               if (cmd.getRa().getConfigProperty() == null)
+                  cmd.getRa().setConfigProperty(new ArrayList<ConfigPropertyMetaData>());
+
+               for (ConfigPropertyMetaData cpmd : append)
+               {
+                  cmd.getRa().getConfigProperty().add(cpmd);
+               }
+            }
+         }
+      }
+
+      return cmd;
+   }
 }

Modified: projects/jboss-jca/trunk/sjc/src/main/java/org/jboss/jca/sjc/deployers/ra/RADeployer.java
===================================================================
--- projects/jboss-jca/trunk/sjc/src/main/java/org/jboss/jca/sjc/deployers/ra/RADeployer.java	2009-07-29 14:42:06 UTC (rev 91767)
+++ projects/jboss-jca/trunk/sjc/src/main/java/org/jboss/jca/sjc/deployers/ra/RADeployer.java	2009-07-29 14:48:13 UTC (rev 91768)
@@ -99,13 +99,14 @@
          // Parse metadata
          ConnectorMetaData cmd = Metadata.getStandardMetaData(root);
          JBossRAMetaData jrmd = Metadata.getJBossMetaData(root);
+         boolean isMetadataComplete = true;
 
          // Process annotations
          if (cmd == null || cmd.is16())
          {
             Map<Class, List<Annotation>> annotations = AnnotationScanner.scan(cl.getURLs(), cl);
 
-            boolean isMetadataComplete = false;
+            isMetadataComplete = false;
             if (cmd != null)
             {
                if (cmd instanceof JCA16MetaData)
@@ -129,10 +130,11 @@
                cmd = Annotations.process(cmd, annotations);
          }
          
+         // Validate metadata
+         
          // Merge metadata
+         cmd = Metadata.merge(cmd, jrmd);
          
-         // Validate metadata
-         
          // Create objects
          
          // Inject values




More information about the jboss-cvs-commits mailing list