[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