[jboss-cvs] JBossAS SVN: r75601 - trunk/connector/src/main/org/jboss/resource/deployers.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jul 10 06:27:57 EDT 2008
Author: vicky.kak at jboss.com
Date: 2008-07-10 06:27:57 -0400 (Thu, 10 Jul 2008)
New Revision: 75601
Modified:
trunk/connector/src/main/org/jboss/resource/deployers/RARParserDeployer.java
Log:
JBAS-3415 changes.
Modified: trunk/connector/src/main/org/jboss/resource/deployers/RARParserDeployer.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/deployers/RARParserDeployer.java 2008-07-10 10:27:30 UTC (rev 75600)
+++ trunk/connector/src/main/org/jboss/resource/deployers/RARParserDeployer.java 2008-07-10 10:27:57 UTC (rev 75601)
@@ -21,10 +21,17 @@
*/
package org.jboss.resource.deployers;
-import org.jboss.deployers.vfs.spi.deployer.ObjectModelFactoryDeployer;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.jboss.deployers.vfs.spi.deployer.MultipleObjectModelFactoryDeployer;
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.resource.deployment.JBossRAObjectModelFactory;
import org.jboss.resource.deployment.ResourceAdapterObjectModelFactory;
import org.jboss.resource.metadata.ConnectorMetaData;
+import org.jboss.resource.metadata.JBossRAMetaData;
+import org.jboss.resource.metadata.RARDeploymentMetaData;
import org.jboss.resource.metadata.repository.JCAMetaDataRepository;
import org.jboss.virtual.VirtualFile;
import org.jboss.xb.binding.ObjectModelFactory;
@@ -33,22 +40,40 @@
* RARParserDeployer.
*
* @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="vicky.kak at jboss.com">Vicky Kak</a>
* @version $Revision: 1.1 $
*/
-public class RARParserDeployer extends ObjectModelFactoryDeployer<ConnectorMetaData>
+public class RARParserDeployer extends MultipleObjectModelFactoryDeployer<RARDeploymentMetaData>
{
/** The metadata repsoitory */
private JCAMetaDataRepository metaDataRepository;
-
+ /** */
+
+ /** JEE specific RAR DD name */
+ private static String jeeSpecRarDD = "ra.xml";
+
+ /** Jboss specific RAR DD name */
+ private static String jbossRarDD = "jboss-ra.xml";
+
+ private JBossRAMetaData jbossSpecificMetaData;
+
+ private static Map<String, Class<?>> getCustomMappings()
+ {
+ Map<String, Class<?>> mappings = new HashMap<String, Class<?>>();
+ mappings.put(jeeSpecRarDD, ConnectorMetaData.class);
+ mappings.put(jbossRarDD, JBossRAMetaData.class);
+ return mappings;
+ }
+
/**
* Create a new RARParserDeployer.
*/
public RARParserDeployer()
- {
- super(ConnectorMetaData.class);
- setName("ra.xml");
+ {
+ super(RARDeploymentMetaData.class, getCustomMappings());
}
+
public JCAMetaDataRepository getMetaDataRepository()
{
return metaDataRepository;
@@ -58,20 +83,46 @@
{
this.metaDataRepository = metaDataRepository;
}
-
- protected ObjectModelFactory getObjectModelFactory(ConnectorMetaData root)
- {
- return new ResourceAdapterObjectModelFactory();
+
+
+ protected <U> ObjectModelFactory getObjectModelFactory(Class<U> expectedType, String fileName, U root)
+ {
+ if(jeeSpecRarDD.equals(fileName))
+ {
+ return new ResourceAdapterObjectModelFactory();
+ }
+ else if(jbossRarDD.equals(fileName))
+ {
+ return new JBossRAObjectModelFactory();
+ }
+ else
+ {
+ return null;
+ }
}
-
- @Override
- protected void init(VFSDeploymentUnit unit, ConnectorMetaData cmd, VirtualFile file) throws Exception
- {
- cmd.setURL(file.toURL());
- VFSDeploymentUnit parent = unit.getParent();
- String name = unit.getSimpleName();
- if( parent != null )
- name = parent.getSimpleName() + "#" + name;
- metaDataRepository.addConnectorMetaData(name, cmd);
+
+ protected RARDeploymentMetaData mergeMetaData(VFSDeploymentUnit unit, Map<Class<?>, List<Object>> metadata) throws Exception
+ {
+ RARDeploymentMetaData deployment = new RARDeploymentMetaData();
+
+ // Getting the List of MetaData Objects
+ List<Object> cmdInstances = metadata.get(ConnectorMetaData.class);
+ if(cmdInstances != null && !cmdInstances.isEmpty())
+ deployment.setConnectorMetaData(ConnectorMetaData.class.cast(cmdInstances.get(0)));
+
+ List<Object> jmdInstances = metadata.get(JBossRAMetaData.class);
+ if(jmdInstances != null && !jmdInstances.isEmpty())
+ deployment.setRaXmlMetaData(JBossRAMetaData.class.cast(jmdInstances.get(0)));
+
+
+ VFSDeploymentUnit parent = unit.getParent();
+ String name = unit.getSimpleName();
+ if( parent != null )
+ name = parent.getSimpleName() + "#" + name;
+
+ VirtualFile file = unit.getMetaDataFile(jeeSpecRarDD);
+ deployment.getConnectorMetaData().setURL(file.toURL());
+ metaDataRepository.addConnectorMetaData(name, deployment.getConnectorMetaData());
+ return deployment;
}
}
More information about the jboss-cvs-commits
mailing list