[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