[jboss-cvs] JBossAS SVN: r111445 - in projects/jboss-jca/trunk/codegenerator/src/main: java/org/jboss/jca/codegenerator/code and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed May 25 07:31:26 EDT 2011


Author: jeff.zhang
Date: 2011-05-25 07:31:26 -0400 (Wed, 25 May 2011)
New Revision: 111445

Added:
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/McfDef.java
Modified:
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/BaseProfile.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Definition.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Main.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/AbstractCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CciConnCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CciConnFactoryCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CfCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CfInterfaceCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnImplCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnInterfaceCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnMetaCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnSpecCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanImplCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanInterfaceCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McMetaCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McfCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/TestCodeGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/IronjacamarXmlGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/Ra10XmlGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/RaXmlGen.java
   projects/jboss-jca/trunk/codegenerator/src/main/resources/codegenerator.properties
Log:
[JBJCA-584] Support for multiple mcfs when JCA >= 1.5

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/BaseProfile.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/BaseProfile.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/BaseProfile.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -83,7 +83,7 @@
       if (def.isSupportOutbound())
          generateIronjacamarXml(def, def.getOutputDir());
       
-      if (def.isGenMbean() && !def.isUseCciConnection())
+      if (def.isGenMbean() && !def.getMcfDefs().get(0).isUseCciConnection())
       {
          generateMBeanCode(def);
          generateMbeanXml(def, def.getOutputDir());
@@ -100,6 +100,7 @@
       if (def.isUseRa())
       {
          generateClassCode(def, "Ra");
+         generateClassCode(def, "RaMeta");
       }
       if (def.isGenAdminObject())
       {
@@ -120,25 +121,30 @@
    {
       if (def.isSupportOutbound())
       {
-         generateClassCode(def, "Mcf");
-         generateClassCode(def, "Mc");
-         generateClassCode(def, "McMeta");
-   
-         if (!def.isUseCciConnection())
+         if (def.getMcfDefs() == null)
+            throw new IllegalStateException("Should define at least one mcf class");
+         
+         for (int num = 0; num < def.getMcfDefs().size(); num++)
          {
-            generateClassCode(def, "CfInterface");
-            generateClassCode(def, "Cf");
-            generateClassCode(def, "ConnInterface");
-            generateClassCode(def, "ConnImpl");
+            generateMultiMcfClassCode(def, "Mcf", num);
+            generateMultiMcfClassCode(def, "Mc", num);
+            generateMultiMcfClassCode(def, "McMeta", num);
+      
+            if (!def.getMcfDefs().get(num).isUseCciConnection())
+            {
+               generateMultiMcfClassCode(def, "CfInterface", num);
+               generateMultiMcfClassCode(def, "Cf", num);
+               generateMultiMcfClassCode(def, "ConnInterface", num);
+               generateMultiMcfClassCode(def, "ConnImpl", num);
+            }
+            else
+            {
+               generateMultiMcfClassCode(def, "CciConn", num);
+               generateMultiMcfClassCode(def, "CciConnFactory", num);
+               generateMultiMcfClassCode(def, "ConnMeta", num);
+               generateMultiMcfClassCode(def, "ConnSpec", num);
+            }
          }
-         else
-         {
-            generateClassCode(def, "CciConn");
-            generateClassCode(def, "CciConnFactory");
-            generateClassCode(def, "ConnMeta");
-            generateClassCode(def, "RaMeta");
-            generateClassCode(def, "ConnSpec");
-         }
       }
    }
 
@@ -224,6 +230,50 @@
    }
    
    /**
+    * generate multi mcf class code
+    * @param def Definition 
+    * @param className class name 
+    * @param num number of order
+    */
+   void generateMultiMcfClassCode(Definition def, String className, int num)
+   {
+      if (className == null || className.equals(""))
+         return;
+      if (num < 0 || num + 1 > def.getMcfDefs().size())
+         return;
+      try
+      {
+
+         String clazzName = this.getClass().getPackage().getName() + ".code." + className + "CodeGen";
+
+         String javaFile = (String)McfDef.class.getMethod(
+               "get" + className + "Class").invoke(def.getMcfDefs().get(num), (Object[])null) + ".java";
+         FileWriter fw = null;
+         if (def.getMcfDefs().size() == 1)
+            fw = Utils.createSrcFile(javaFile, def.getRaPackage(), def.getOutputDir());
+         else
+            fw = Utils.createSrcFile(javaFile, def.getRaPackage() + ".mcf" + num, def.getOutputDir());
+         
+         Class<?> clazz = Class.forName(clazzName, true, Thread.currentThread().getContextClassLoader());
+         AbstractCodeGen codeGen = (AbstractCodeGen)clazz.newInstance();
+         codeGen.setNumOfMcf(num);
+         
+         codeGen.generate(def, fw);
+
+         fw.flush();
+         fw.close();
+      }
+      catch (IOException ioe)
+      {
+         ioe.printStackTrace();
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+      }
+   }
+   
+   /**
     * generate multi admin object class code
     * @param def Definition 
     * @param className class name 

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Definition.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Definition.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Definition.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -64,12 +64,8 @@
    @XmlElement(name = "RaConfigProp") 
    private List<ConfigPropType> raConfigProps;
    
-   /** managed connection factory class name */
-   @XmlElement(name = "ManagedConnectionFactory")
-   private String mcfClass;
-   /** resource adapter configuration properties */
-   @XmlElement(name = "McfConfigProp") 
-   private List<ConfigPropType> mcfConfigProps;
+   /** mcf list */
+   private List<McfDef> mcfDefs;
    
    /** support transaction  */
    @XmlElement(name = "Transaction") 
@@ -84,42 +80,6 @@
    @XmlElement(name = "AuthenMechanism") 
    private List<AuthenMechanismType> authenMechanisms;
    
-   /** managed connection class name */
-   @XmlElement(name = "ManagedConnection")
-   private String mcClass;
-   /** connection interface name */
-   @XmlElement(name = "ConnectionInterface")
-   private String connInterfaceClass;
-   /** connection impl class name */
-   @XmlElement(name = "ConnectionImpl")
-   private String connImplClass;
-   /** connection factory interface name */
-   @XmlElement(name = "ConnectionFactoryInterface")
-   private String cfInterfaceClass;
-   /** connection factory class name */
-   @XmlElement(name = "ConnectionFactoryImpl")
-   private String cfClass;
-   
-   /** ResourceAdapterAssociation optional  */
-   @XmlElement(name = "ImplRaAssociation")
-   private boolean implRaAssociation;
-   /** ResourceAdapterAssociation optional  */
-   @XmlElement(name = "UseCciConnection")
-   private boolean useCciConnection;
-   
-   /** cci connection factory class name */
-   private String cciConnFactoryClass;
-   /** cci connection class name */
-   private String cciConnClass;
-   /** managed connection metadata class name */
-   private String mcMetaClass;
-   /** connection manage class name */
-   private String cmClass;
-   
-   /** connection metadata class name */
-   private String connMetaClass;
-   /** connection spec class name */
-   private String connSpecClass;
    /** resource adapter metadata class name */
    private String raMetaClass;
 
@@ -141,13 +101,6 @@
    /** Activation class name */
    @XmlElement(name = "Activation")
    private String activationClass;
-   
-   /** support self defined method in connection class  */
-   @XmlElement(name = "DefineMethod") 
-   private boolean defineMethodInConnection;
-   /** define methods */
-   @XmlElement(name = "Method") 
-   private List<MethodForConnection> methods;
 
    /** build  */
    @XmlElement(name = "build")
@@ -278,342 +231,26 @@
    }
 
    /**
-    * Set the mcfClass.
+    * Set the mcfDefs.
     * 
-    * @param mcfClass The mcfClass to set.
+    * @param mcfDefs The mcfDefs to set.
     */
-   public void setMcfClass(String mcfClass)
+   public void setMcfDefs(List<McfDef> mcfDefs)
    {
-      this.mcfClass = mcfClass;
+      this.mcfDefs = mcfDefs;
    }
 
    /**
-    * Get the mcfClass.
+    * Get the mcfDefs.
     * 
-    * @return the mcfClass.
+    * @return the mcfDefs.
     */
-   public String getMcfClass()
+   public List<McfDef> getMcfDefs()
    {
-      if (mcfClass == null || mcfClass.equals(""))
-      {
-         mcfClass = getDefaultValue() + "ManagedConnectionFactory";
-      }
-      return mcfClass;
+      return mcfDefs;
    }
-
-   /**
-    * Set the mcClass.
-    * 
-    * @param mcClass The mcClass to set.
-    */
-   public void setMcClass(String mcClass)
-   {
-      this.mcClass = mcClass;
-   }
-
-   /**
-    * Get the mcClass.
-    * 
-    * @return the mcClass.
-    */
-   public String getMcClass()
-   {
-      if (mcClass == null || mcClass.equals(""))
-      {
-         mcClass = getDefaultValue() + "ManagedConnection";
-      }
-      return mcClass;
-   }
-
-   /**
-    * Set the connInterfaceClass.
-    * 
-    * @param connInterfaceClass The connInterfaceClass to set.
-    */
-   public void setConnInterfaceClass(String connInterfaceClass)
-   {
-      this.connInterfaceClass = connInterfaceClass;
-   }
-
-   /**
-    * Get the connInterfaceClass.
-    * 
-    * @return the connInterfaceClass.
-    */
-   public String getConnInterfaceClass()
-   {
-      if (connInterfaceClass == null || connInterfaceClass.equals(""))
-      {
-         connInterfaceClass = getDefaultValue() + "Connection";
-      }
-      return connInterfaceClass;
-   }
-
-   /**
-    * Set the connImplClass.
-    * 
-    * @param connImplClass The connImplClass to set.
-    */
-   public void setConnImplClass(String connImplClass)
-   {
-      this.connImplClass = connImplClass;
-   }
-
-   /**
-    * Get the connImplClass.
-    * 
-    * @return the connImplClass.
-    */
-   public String getConnImplClass()
-   {
-      if (connImplClass == null || connImplClass.equals(""))
-      {
-         connImplClass = getDefaultValue() + "ConnectionImpl";
-      }
-      return connImplClass;
-   }
-
-   /**
-    * Set the mcfConfigProps.
-    * 
-    * @param mcfConfigProps The mcfConfigProps to set.
-    */
-   public void setMcfConfigProps(List<ConfigPropType> mcfConfigProps)
-   {
-      this.mcfConfigProps = mcfConfigProps;
-   }
-
-   /**
-    * Get the mcfConfigProps.
-    * 
-    * @return the mcfConfigProps.
-    */
-   public List<ConfigPropType> getMcfConfigProps()
-   {
-      return mcfConfigProps;
-   }
-
-   /**
-    * Set the implRaAssociation.
-    * 
-    * @param implRaAssociation The implRaAssociation to set.
-    */
-   public void setImplRaAssociation(boolean implRaAssociation)
-   {
-      this.implRaAssociation = implRaAssociation;
-   }
-
-   /**
-    * Get the implRaAssociation.
-    * 
-    * @return the implRaAssociation.
-    */
-   public boolean isImplRaAssociation()
-   {
-      return implRaAssociation;
-   }
-
-   /**
-    * Set the useCciConnection.
-    * 
-    * @param useCciConnection The useCciConnection to set.
-    */
-   public void setUseCciConnection(boolean useCciConnection)
-   {
-      this.useCciConnection = useCciConnection;
-   }
-
-   /**
-    * Get the useCciConnection.
-    * 
-    * @return the useCciConnection.
-    */
-   public boolean isUseCciConnection()
-   {
-      return useCciConnection;
-   }
    
    /**
-    * Set the cciConnFactoryClass.
-    * 
-    * @param cciConnFactoryClass The cciConnFactoryClass to set.
-    */
-   public void setCciConnFactoryClass(String cciConnFactoryClass)
-   {
-      this.cciConnFactoryClass = cciConnFactoryClass;
-   }
-
-   /**
-    * Get the cciConnFactoryClass.
-    * 
-    * @return the cciConnFactoryClass.
-    */
-   public String getCciConnFactoryClass()
-   {
-      if (cciConnFactoryClass == null || cciConnFactoryClass.equals(""))
-         cciConnFactoryClass = getDefaultValue() + "CciConnectionFactory";
-      return cciConnFactoryClass;
-   }
-
-   /**
-    * Set the cciConnClass.
-    * 
-    * @param cciConnClass The cciConnClass to set.
-    */
-   public void setCciConnClass(String cciConnClass)
-   {
-      this.cciConnClass = cciConnClass;
-   }
-
-   /**
-    * Get the cciConnClass.
-    * 
-    * @return the cciConnClass.
-    */
-   public String getCciConnClass()
-   {
-      if (cciConnClass == null || cciConnClass.equals(""))
-         cciConnClass = getDefaultValue() + "CciConnection";
-      return cciConnClass;
-   }
-
-   /**
-    * Set the mcMetaClass.
-    * 
-    * @param mcMetaClass The mcMetaClass to set.
-    */
-   public void setMcMetaClass(String mcMetaClass)
-   {
-      this.mcMetaClass = mcMetaClass;
-   }
-
-   /**
-    * Get the mcMetaClass.
-    * 
-    * @return the mcMetaClass.
-    */
-   public String getMcMetaClass()
-   {
-      if (mcMetaClass == null || mcMetaClass.equals(""))
-         mcMetaClass = getDefaultValue() + "ManagedConnectionMetaData";
-      return mcMetaClass;
-   }
-
-   /**
-    * Set the cmClass.
-    * 
-    * @param cmClass The cmClass to set.
-    */
-   public void setCmClass(String cmClass)
-   {
-      this.cmClass = cmClass;
-   }
-
-   /**
-    * Get the cmClass.
-    * 
-    * @return the cmClass.
-    */
-   public String getCmClass()
-   {
-      if (cmClass == null || cmClass.equals(""))
-         cmClass = getDefaultValue() + "ConnectionManager";
-      return cmClass;
-   }
-
-   /**
-    * Set the cfClass.
-    * 
-    * @param cfClass The cfClass to set.
-    */
-   public void setCfClass(String cfClass)
-   {
-      this.cfClass = cfClass;
-   }
-
-   /**
-    * Get the cfClass.
-    * 
-    * @return the cfClass.
-    */
-   public String getCfClass()
-   {
-      if (cfClass == null || cfClass.equals(""))
-      {
-         cfClass =  getDefaultValue() + "ConnectionFactoryImpl";
-      }
-      return cfClass;
-   }
-
-   /**
-    * Set the cfInterfaceClass.
-    * 
-    * @param cfInterfaceClass The cfInterfaceClass to set.
-    */
-   public void setCfInterfaceClass(String cfInterfaceClass)
-   {
-      this.cfInterfaceClass = cfInterfaceClass;
-   }
-
-   /**
-    * Get the cfInterfaceClass.
-    * 
-    * @return the cfInterfaceClass.
-    */
-   public String getCfInterfaceClass()
-   {
-      if (cfInterfaceClass == null || cfInterfaceClass.equals(""))
-      {
-         cfInterfaceClass =  getDefaultValue() + "ConnectionFactory";
-      }
-      return cfInterfaceClass;
-   }
-
-   /**
-    * Set the connMetaClass.
-    * 
-    * @param connMetaClass The connMetaClass to set.
-    */
-   public void setConnMetaClass(String connMetaClass)
-   {
-      this.connMetaClass = connMetaClass;
-   }
-
-   /**
-    * Get the connMetaClass.
-    * 
-    * @return the connMetaClass.
-    */
-   public String getConnMetaClass()
-   {
-      if (connMetaClass == null || connMetaClass.equals(""))
-         connMetaClass = getDefaultValue() + "ConnectionMetaData";
-      return connMetaClass;
-   }
-
-   /**
-    * Set the connSpecClass.
-    * 
-    * @param connSpecClass The connSpecClass to set.
-    */
-   public void setConnSpecClass(String connSpecClass)
-   {
-      this.connSpecClass = connSpecClass;
-   }
-
-   /**
-    * Get the connSpecClass.
-    * 
-    * @return the connSpecClass.
-    */
-   public String getConnSpecClass()
-   {
-      if (connSpecClass == null || connSpecClass.equals(""))
-         connSpecClass = getDefaultValue() + "ConnectionSpec";
-      return connSpecClass;
-   }
-
-   /**
     * Set the raMetaClass.
     * 
     * @param raMetaClass The raMetaClass to set.
@@ -828,46 +465,6 @@
    }
 
    /**
-    * Set the defineMethodInConnection.
-    * 
-    * @param defineMethodInConnection The defineMethodInConnection to set.
-    */
-   public void setDefineMethodInConnection(boolean defineMethodInConnection)
-   {
-      this.defineMethodInConnection = defineMethodInConnection;
-   }
-
-   /**
-    * Get the defineMethodInConnection.
-    * 
-    * @return the defineMethodInConnection.
-    */
-   public boolean isDefineMethodInConnection()
-   {
-      return defineMethodInConnection;
-   }
-
-   /**
-    * Set the methods.
-    * 
-    * @param methods The methods to set.
-    */
-   public void setMethods(List<MethodForConnection> methods)
-   {
-      this.methods = methods;
-   }
-
-   /**
-    * Get the methods.
-    * 
-    * @return the methods.
-    */
-   public List<MethodForConnection> getMethods()
-   {
-      return methods;
-   }
-
-   /**
     * Set the defaultValue.
     * 
     * @param defaultValue The defaultValue to set.

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Main.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Main.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Main.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -300,94 +300,125 @@
       //outbound
       if (def.isSupportOutbound())
       {
-         System.out.print(rb.getString("mcf.class.name"));
-         System.out.print("[" + def.getMcfClass() + "]: ");
-         String mcfClassName = in.readLine();
-         if (mcfClassName != null && !mcfClassName.equals(""))
+         List<McfDef> mcfDefs = new ArrayList<McfDef>();
+         def.setMcfDefs(mcfDefs);
+         int mcfID = 1;
+         boolean moreMcf;
+         do
          {
-            def.setMcfClass(mcfClassName);
-            setDefaultValue(def, mcfClassName, "ManagedConnectionfactory");
-            setDefaultValue(def, mcfClassName, "Mcf");
-         }
-  
-         List<ConfigPropType> mcfProps = inputProperties("mcf", in, false);
-         def.setMcfConfigProps(mcfProps);
-
-         if (def.isUseRa())
-         {
-            System.out.print(rb.getString("mcf.impl.raa") + "[Y]: ");
-            String raAssociation = in.readLine();
-            if (raAssociation == null || raAssociation.equals(""))
-               def.setImplRaAssociation(true);
+            McfDef mcfdef = new McfDef(mcfID, def);
+            
+            System.out.print(rb.getString("mcf.class.name"));
+            System.out.print("[" + mcfdef.getMcfClass() + "]: ");
+            String mcfClassName = in.readLine();
+            if (mcfClassName != null && !mcfClassName.equals(""))
+            {
+               mcfdef.setMcfClass(mcfClassName);
+               setDefaultValue(def, mcfClassName, "ManagedConnectionfactory");
+               setDefaultValue(def, mcfClassName, "Mcf");
+            }
             else
             {
-               if (raAssociation.equals("Y") || raAssociation.equals("y") || raAssociation.equals("Yes"))
-                  def.setImplRaAssociation(true);
+               if (mcfID > 1)
+               {
+                  //make mcf classname different to make deployment successful
+                  mcfdef.setMcfClass(def.getDefaultValue() + mcfID + "ManagedConnectionfactory");
+               } 
+            }
+
+     
+            List<ConfigPropType> mcfProps = inputProperties("mcf", in, false);
+            mcfdef.setMcfConfigProps(mcfProps);
+   
+            if (def.isUseRa())
+            {
+               System.out.print(rb.getString("mcf.impl.raa") + "[Y]: ");
+               String raAssociation = in.readLine();
+               if (raAssociation == null || raAssociation.equals(""))
+                  mcfdef.setImplRaAssociation(true);
                else
-                  def.setImplRaAssociation(false);
+               {
+                  if (raAssociation.equals("Y") || raAssociation.equals("y") || raAssociation.equals("Yes"))
+                     mcfdef.setImplRaAssociation(true);
+                  else
+                     mcfdef.setImplRaAssociation(false);
+               }
             }
-         }
-         
-         System.out.print(rb.getString("mc.class.name"));
-         System.out.print("[" + def.getMcClass() + "]: ");
-         String mcClassName = in.readLine();
-         if (mcClassName != null && !mcClassName.equals(""))
-            def.setMcClass(mcClassName);
-         
-         System.out.print(rb.getString("mcf.use.cci") + "[N]: ");
-         String useCciConnection = in.readLine();
-         if (useCciConnection == null)
-            def.setUseCciConnection(false);
-         else
-         {
-            if (useCciConnection.equals("Y") || useCciConnection.equals("y") || useCciConnection.equals("Yes"))
-               def.setUseCciConnection(true);
-            else
-               def.setUseCciConnection(false);
-         }
-         
-         if (!def.isUseCciConnection())
-         {
-            System.out.print(rb.getString("cf.interface.name"));
-            System.out.print("[" + def.getCfInterfaceClass() + "]: ");
-            String cfInterfaceName = in.readLine();
-            if (cfInterfaceName != null && !cfInterfaceName.equals(""))
-               def.setCfInterfaceClass(cfInterfaceName);
             
-            System.out.print(rb.getString("cf.class.name"));
-            System.out.print("[" + def.getCfClass() + "]: ");
-            String cfClassName = in.readLine();
-            if (cfClassName != null && !cfClassName.equals(""))
-               def.setCfClass(cfClassName);
-  
-            System.out.print(rb.getString("conn.interface.name"));
-            System.out.print("[" + def.getConnInterfaceClass() + "]: ");
-            String connInterfaceName = in.readLine();
-            if (connInterfaceName != null && !connInterfaceName.equals(""))
-               def.setConnInterfaceClass(connInterfaceName);
+            System.out.print(rb.getString("mc.class.name"));
+            System.out.print("[" + mcfdef.getMcClass() + "]: ");
+            String mcClassName = in.readLine();
+            if (mcClassName != null && !mcClassName.equals(""))
+               mcfdef.setMcClass(mcClassName);
             
-            System.out.print(rb.getString("conn.class.name"));
-            System.out.print("[" + def.getConnImplClass() + "]: ");
-            String connImplName = in.readLine();
-            if (connImplName != null && !connImplName.equals(""))
-               def.setConnImplClass(connImplName);
-            
-            System.out.print(rb.getString("connection.method.support") + "[N]: ");
-            String supportMethod = in.readLine();
-            if (supportMethod == null)
-               def.setDefineMethodInConnection(false);
+            System.out.print(rb.getString("mcf.use.cci") + "[N]: ");
+            String useCciConnection = in.readLine();
+            if (useCciConnection == null)
+               mcfdef.setUseCciConnection(false);
             else
             {
-               if (supportMethod.equals("Y") || supportMethod.equals("y") || supportMethod.equals("Yes"))
-                  def.setDefineMethodInConnection(true);
+               if (useCciConnection.equals("Y") || useCciConnection.equals("y") || useCciConnection.equals("Yes"))
+                  mcfdef.setUseCciConnection(true);
                else
-                  def.setDefineMethodInConnection(false);
+                  mcfdef.setUseCciConnection(false);
             }
-            if (def.isDefineMethodInConnection())
+            
+            if (!mcfdef.isUseCciConnection())
             {
-               def.setMethods(inputMethod(in));
+               System.out.print(rb.getString("cf.interface.name"));
+               System.out.print("[" + mcfdef.getCfInterfaceClass() + "]: ");
+               String cfInterfaceName = in.readLine();
+               if (cfInterfaceName != null && !cfInterfaceName.equals(""))
+                  mcfdef.setCfInterfaceClass(cfInterfaceName);
+               
+               System.out.print(rb.getString("cf.class.name"));
+               System.out.print("[" + mcfdef.getCfClass() + "]: ");
+               String cfClassName = in.readLine();
+               if (cfClassName != null && !cfClassName.equals(""))
+                  mcfdef.setCfClass(cfClassName);
+     
+               System.out.print(rb.getString("conn.interface.name"));
+               System.out.print("[" + mcfdef.getConnInterfaceClass() + "]: ");
+               String connInterfaceName = in.readLine();
+               if (connInterfaceName != null && !connInterfaceName.equals(""))
+                  mcfdef.setConnInterfaceClass(connInterfaceName);
+               
+               System.out.print(rb.getString("conn.class.name"));
+               System.out.print("[" + mcfdef.getConnImplClass() + "]: ");
+               String connImplName = in.readLine();
+               if (connImplName != null && !connImplName.equals(""))
+                  mcfdef.setConnImplClass(connImplName);
+               
+               System.out.print(rb.getString("connection.method.support") + "[N]: ");
+               String supportMethod = in.readLine();
+               if (supportMethod == null)
+                  mcfdef.setDefineMethodInConnection(false);
+               else
+               {
+                  if (supportMethod.equals("Y") || supportMethod.equals("y") || supportMethod.equals("Yes"))
+                     mcfdef.setDefineMethodInConnection(true);
+                  else
+                     mcfdef.setDefineMethodInConnection(false);
+               }
+               if (mcfdef.isDefineMethodInConnection())
+               {
+                  mcfdef.setMethods(inputMethod(in));
+               }
             }
+            mcfDefs.add(mcfdef);
+            mcfID++;
+            moreMcf = false;
+
+            if (def.getVersion().equals("1.5") || def.getVersion().equals("1.6"))
+            {
+               System.out.print(rb.getString("more.mcf") + "[N]: ");
+               String inputMoreMcf = in.readLine();
+               if (inputMoreMcf != null && 
+                  (inputMoreMcf.equals("Y") || inputMoreMcf.equals("y") || inputMoreMcf.equals("Yes")))
+                  moreMcf = true;
+            }
          }
+         while (moreMcf);
       }
 
       //inbound
@@ -495,7 +526,7 @@
          }
       }
       
-      if (!def.isUseCciConnection())
+      if (!def.getVersion().equals("1.0") && !def.getMcfDefs().get(0).isUseCciConnection())
       {
          //generate mbean classes
          System.out.print(rb.getString("gen.mbean") + "[Y]: ");

Added: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/McfDef.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/McfDef.java	                        (rev 0)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/McfDef.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -0,0 +1,499 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2010, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.jca.codegenerator;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * A Definition.
+ * 
+ * @author Jeff Zhang</a>
+ * @version $Revision: $
+ */
+public class McfDef
+{
+   /** id */
+   private int id;
+   /** Definition */
+   private Definition def;
+   
+   /** managed connection factory class name */
+   @XmlElement(name = "ManagedConnectionFactory")
+   private String mcfClass;
+   /** resource adapter configuration properties */
+   @XmlElement(name = "McfConfigProp") 
+   private List<ConfigPropType> mcfConfigProps;
+   
+   /** managed connection class name */
+   @XmlElement(name = "ManagedConnection")
+   private String mcClass;
+   /** connection interface name */
+   @XmlElement(name = "ConnectionInterface")
+   private String connInterfaceClass;
+   /** connection impl class name */
+   @XmlElement(name = "ConnectionImpl")
+   private String connImplClass;
+   /** connection factory interface name */
+   @XmlElement(name = "ConnectionFactoryInterface")
+   private String cfInterfaceClass;
+   /** connection factory class name */
+   @XmlElement(name = "ConnectionFactoryImpl")
+   private String cfClass;
+
+   /** ResourceAdapterAssociation optional  */
+   @XmlElement(name = "ImplRaAssociation")
+   private boolean implRaAssociation;
+   /** ResourceAdapterAssociation optional  */
+   @XmlElement(name = "UseCciConnection")
+   private boolean useCciConnection;
+   
+   /** cci connection factory class name */
+   private String cciConnFactoryClass;
+   /** cci connection class name */
+   private String cciConnClass;
+   /** managed connection metadata class name */
+   private String mcMetaClass;
+   /** connection manage class name */
+   private String cmClass;
+   
+   /** connection metadata class name */
+   private String connMetaClass;
+   /** connection spec class name */
+   private String connSpecClass;
+   
+   /** support self defined method in connection class  */
+   @XmlElement(name = "DefineMethod") 
+   private boolean defineMethodInConnection;
+   /** define methods */
+   @XmlElement(name = "Method") 
+   private List<MethodForConnection> methods;
+
+   /**
+    * Construct
+    * 
+    * @param id MCF id
+    * @param def Definition
+    */
+   public McfDef(int id, Definition def)
+   {
+      this.id = id;
+      this.def = def;
+   }
+   
+   /**
+    * getDefaultValue
+    * 
+    * @return default name
+    */
+   private String getDefaultValue()
+   {
+      return def.getDefaultValue();
+   }
+   
+   /**
+    * getMcfPackage
+    * 
+    * @return default name
+    */
+   public String getMcfPackage()
+   {
+      return "mcf" + id;
+   }
+   
+   /**
+    * Set the mcfClass.
+    * 
+    * @param mcfClass The mcfClass to set.
+    */
+   public void setMcfClass(String mcfClass)
+   {
+      this.mcfClass = mcfClass;
+   }
+
+   /**
+    * Get the mcfClass.
+    * 
+    * @return the mcfClass.
+    */
+   public String getMcfClass()
+   {
+      if (mcfClass == null || mcfClass.equals(""))
+      {
+         mcfClass = getDefaultValue() + "ManagedConnectionFactory";
+      }
+      return mcfClass;
+   }
+
+   /**
+    * Set the mcClass.
+    * 
+    * @param mcClass The mcClass to set.
+    */
+   public void setMcClass(String mcClass)
+   {
+      this.mcClass = mcClass;
+   }
+
+   /**
+    * Get the mcClass.
+    * 
+    * @return the mcClass.
+    */
+   public String getMcClass()
+   {
+      if (mcClass == null || mcClass.equals(""))
+      {
+         mcClass = getDefaultValue() + "ManagedConnection";
+      }
+      return mcClass;
+   }
+
+   /**
+    * Set the connInterfaceClass.
+    * 
+    * @param connInterfaceClass The connInterfaceClass to set.
+    */
+   public void setConnInterfaceClass(String connInterfaceClass)
+   {
+      this.connInterfaceClass = connInterfaceClass;
+   }
+
+   /**
+    * Get the connInterfaceClass.
+    * 
+    * @return the connInterfaceClass.
+    */
+   public String getConnInterfaceClass()
+   {
+      if (connInterfaceClass == null || connInterfaceClass.equals(""))
+      {
+         connInterfaceClass = getDefaultValue() + "Connection";
+      }
+      return connInterfaceClass;
+   }
+
+   /**
+    * Set the connImplClass.
+    * 
+    * @param connImplClass The connImplClass to set.
+    */
+   public void setConnImplClass(String connImplClass)
+   {
+      this.connImplClass = connImplClass;
+   }
+
+   /**
+    * Get the connImplClass.
+    * 
+    * @return the connImplClass.
+    */
+   public String getConnImplClass()
+   {
+      if (connImplClass == null || connImplClass.equals(""))
+      {
+         connImplClass = getDefaultValue() + "ConnectionImpl";
+      }
+      return connImplClass;
+   }
+
+   /**
+    * Set the mcfConfigProps.
+    * 
+    * @param mcfConfigProps The mcfConfigProps to set.
+    */
+   public void setMcfConfigProps(List<ConfigPropType> mcfConfigProps)
+   {
+      this.mcfConfigProps = mcfConfigProps;
+   }
+
+   /**
+    * Get the mcfConfigProps.
+    * 
+    * @return the mcfConfigProps.
+    */
+   public List<ConfigPropType> getMcfConfigProps()
+   {
+      return mcfConfigProps;
+   }
+   
+   /**
+    * Set the implRaAssociation.
+    * 
+    * @param implRaAssociation The implRaAssociation to set.
+    */
+   public void setImplRaAssociation(boolean implRaAssociation)
+   {
+      this.implRaAssociation = implRaAssociation;
+   }
+
+   /**
+    * Get the implRaAssociation.
+    * 
+    * @return the implRaAssociation.
+    */
+   public boolean isImplRaAssociation()
+   {
+      return implRaAssociation;
+   }
+   
+   /**
+    * Set the useCciConnection.
+    * 
+    * @param useCciConnection The useCciConnection to set.
+    */
+   public void setUseCciConnection(boolean useCciConnection)
+   {
+      this.useCciConnection = useCciConnection;
+   }
+
+   /**
+    * Get the useCciConnection.
+    * 
+    * @return the useCciConnection.
+    */
+   public boolean isUseCciConnection()
+   {
+      return useCciConnection;
+   }
+   
+   /**
+    * Set the cciConnFactoryClass.
+    * 
+    * @param cciConnFactoryClass The cciConnFactoryClass to set.
+    */
+   public void setCciConnFactoryClass(String cciConnFactoryClass)
+   {
+      this.cciConnFactoryClass = cciConnFactoryClass;
+   }
+
+   /**
+    * Get the cciConnFactoryClass.
+    * 
+    * @return the cciConnFactoryClass.
+    */
+   public String getCciConnFactoryClass()
+   {
+      if (cciConnFactoryClass == null || cciConnFactoryClass.equals(""))
+         cciConnFactoryClass = getDefaultValue() + "CciConnectionFactory";
+      return cciConnFactoryClass;
+   }
+
+   /**
+    * Set the cciConnClass.
+    * 
+    * @param cciConnClass The cciConnClass to set.
+    */
+   public void setCciConnClass(String cciConnClass)
+   {
+      this.cciConnClass = cciConnClass;
+   }
+
+   /**
+    * Get the cciConnClass.
+    * 
+    * @return the cciConnClass.
+    */
+   public String getCciConnClass()
+   {
+      if (cciConnClass == null || cciConnClass.equals(""))
+         cciConnClass = getDefaultValue() + "CciConnection";
+      return cciConnClass;
+   }
+
+   /**
+    * Set the mcMetaClass.
+    * 
+    * @param mcMetaClass The mcMetaClass to set.
+    */
+   public void setMcMetaClass(String mcMetaClass)
+   {
+      this.mcMetaClass = mcMetaClass;
+   }
+
+   /**
+    * Get the mcMetaClass.
+    * 
+    * @return the mcMetaClass.
+    */
+   public String getMcMetaClass()
+   {
+      if (mcMetaClass == null || mcMetaClass.equals(""))
+         mcMetaClass = getDefaultValue() + "ManagedConnectionMetaData";
+      return mcMetaClass;
+   }
+
+   /**
+    * Set the cmClass.
+    * 
+    * @param cmClass The cmClass to set.
+    */
+   public void setCmClass(String cmClass)
+   {
+      this.cmClass = cmClass;
+   }
+
+   /**
+    * Get the cmClass.
+    * 
+    * @return the cmClass.
+    */
+   public String getCmClass()
+   {
+      if (cmClass == null || cmClass.equals(""))
+         cmClass = getDefaultValue() + "ConnectionManager";
+      return cmClass;
+   }
+
+   /**
+    * Set the cfClass.
+    * 
+    * @param cfClass The cfClass to set.
+    */
+   public void setCfClass(String cfClass)
+   {
+      this.cfClass = cfClass;
+   }
+
+   /**
+    * Get the cfClass.
+    * 
+    * @return the cfClass.
+    */
+   public String getCfClass()
+   {
+      if (cfClass == null || cfClass.equals(""))
+      {
+         cfClass =  getDefaultValue() + "ConnectionFactoryImpl";
+      }
+      return cfClass;
+   }
+
+   /**
+    * Set the cfInterfaceClass.
+    * 
+    * @param cfInterfaceClass The cfInterfaceClass to set.
+    */
+   public void setCfInterfaceClass(String cfInterfaceClass)
+   {
+      this.cfInterfaceClass = cfInterfaceClass;
+   }
+
+   /**
+    * Get the cfInterfaceClass.
+    * 
+    * @return the cfInterfaceClass.
+    */
+   public String getCfInterfaceClass()
+   {
+      if (cfInterfaceClass == null || cfInterfaceClass.equals(""))
+      {
+         cfInterfaceClass =  getDefaultValue() + "ConnectionFactory";
+      }
+      return cfInterfaceClass;
+   }
+
+   /**
+    * Set the connMetaClass.
+    * 
+    * @param connMetaClass The connMetaClass to set.
+    */
+   public void setConnMetaClass(String connMetaClass)
+   {
+      this.connMetaClass = connMetaClass;
+   }
+
+   /**
+    * Get the connMetaClass.
+    * 
+    * @return the connMetaClass.
+    */
+   public String getConnMetaClass()
+   {
+      if (connMetaClass == null || connMetaClass.equals(""))
+         connMetaClass = getDefaultValue() + "ConnectionMetaData";
+      return connMetaClass;
+   }
+
+   /**
+    * Set the connSpecClass.
+    * 
+    * @param connSpecClass The connSpecClass to set.
+    */
+   public void setConnSpecClass(String connSpecClass)
+   {
+      this.connSpecClass = connSpecClass;
+   }
+
+   /**
+    * Get the connSpecClass.
+    * 
+    * @return the connSpecClass.
+    */
+   public String getConnSpecClass()
+   {
+      if (connSpecClass == null || connSpecClass.equals(""))
+         connSpecClass = getDefaultValue() + "ConnectionSpec";
+      return connSpecClass;
+   }
+
+   /**
+    * Set the defineMethodInConnection.
+    * 
+    * @param defineMethodInConnection The defineMethodInConnection to set.
+    */
+   public void setDefineMethodInConnection(boolean defineMethodInConnection)
+   {
+      this.defineMethodInConnection = defineMethodInConnection;
+   }
+
+   /**
+    * Get the defineMethodInConnection.
+    * 
+    * @return the defineMethodInConnection.
+    */
+   public boolean isDefineMethodInConnection()
+   {
+      return defineMethodInConnection;
+   }
+
+   /**
+    * Set the methods.
+    * 
+    * @param methods The methods to set.
+    */
+   public void setMethods(List<MethodForConnection> methods)
+   {
+      this.methods = methods;
+   }
+
+   /**
+    * Get the methods.
+    * 
+    * @return the methods.
+    */
+   public List<MethodForConnection> getMethods()
+   {
+      return methods;
+   }
+}

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/AbstractCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/AbstractCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/AbstractCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -36,6 +36,9 @@
  */
 public abstract class AbstractCodeGen extends BaseGen
 {
+   /** num of mcf */
+   private int numOfMcf = 0;
+   
    /**
     * generate code
     * @param def Definition 
@@ -244,4 +247,26 @@
       writeEol(out);
    }
 
+
+   /**
+    * Set the numOfMcf.
+    * 
+    * @param numOfMcf The numOfMcf to set.
+    */
+   public void setNumOfMcf(int numOfMcf)
+   {
+      this.numOfMcf = numOfMcf;
+   }
+
+
+   /**
+    * Get the numOfMcf.
+    * 
+    * @return the numOfMcf.
+    */
+   public int getNumOfMcf()
+   {
+      return numOfMcf;
+   }
+
 }

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CciConnCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CciConnCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CciConnCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -89,7 +89,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import javax.resource.ResourceException;");
@@ -118,7 +121,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getCciConnClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getCciConnClass();
    }
    
    /**
@@ -281,7 +284,7 @@
       writeLeftCurlyBracket(out, indent);
 
       writeIndent(out, indent + 1);
-      out.write("return new " + def.getConnMetaClass() + "();");
+      out.write("return new " + def.getMcfDefs().get(getNumOfMcf()).getConnMetaClass() + "();");
       writeRightCurlyBracket(out, indent);
       writeEol(out);
    }

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CciConnFactoryCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CciConnFactoryCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CciConnFactoryCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -91,7 +91,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import javax.naming.NamingException;");
@@ -114,6 +117,10 @@
       out.write("import javax.resource.spi.ConnectionManager;");
       writeEol(out);
       writeEol(out);
+      if (def.getMcfDefs().size() != 1)
+         out.write("import " + def.getRaPackage() + ".*;");
+      writeEol(out);
+      writeEol(out);
    }
    
    /**
@@ -124,7 +131,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getCciConnFactoryClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getCciConnFactoryClass();
    }
    
    /**
@@ -163,7 +170,8 @@
       writeLeftCurlyBracket(out, indent);
 
       writeIndent(out, indent + 1);
-      out.write("return new " + def.getCciConnClass() + "(new " + def.getConnSpecClass() + "());");
+      out.write("return new " + def.getMcfDefs().get(getNumOfMcf()).getCciConnClass()
+         + "(new " + def.getMcfDefs().get(getNumOfMcf()).getConnSpecClass() + "());");
       writeRightCurlyBracket(out, indent);
       writeEol(out);
       
@@ -198,7 +206,7 @@
       writeLeftCurlyBracket(out, indent);
 
       writeIndent(out, indent + 1);
-      out.write("return new " + def.getCciConnClass() + "(connSpec);");
+      out.write("return new " + def.getMcfDefs().get(getNumOfMcf()).getCciConnClass() + "(connSpec);");
       writeRightCurlyBracket(out, indent);
       writeEol(out);
    }

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CfCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CfCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CfCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -44,7 +44,8 @@
    public void writeClassBody(Definition def, Writer out) throws IOException
    {
 
-      out.write("public class " + getClassName(def) + " implements " + def.getCfInterfaceClass());
+      out.write("public class " + getClassName(def) + " implements " + 
+         def.getMcfDefs().get(getNumOfMcf()).getCfInterfaceClass());
       writeLeftCurlyBracket(out, 0);
       int indent = 1;
       
@@ -76,7 +77,7 @@
       out.write("/** ManagedConnectionFactory */");
       writeEol(out);
       writeIndent(out, indent);
-      out.write("private " + def.getMcfClass() + " mcf;");
+      out.write("private " + def.getMcfDefs().get(getNumOfMcf()).getMcfClass() + " mcf;");
       writeEol(out);
       writeEol(out);
       
@@ -108,7 +109,8 @@
       writeEol(out);
       
       writeIndent(out, indent);
-      out.write("public " + getClassName(def) + "(" + def.getMcfClass() + " mcf, ConnectionManager cxManager)");
+      out.write("public " + getClassName(def) + "(" + def.getMcfDefs().get(getNumOfMcf()).getMcfClass() + 
+         " mcf, ConnectionManager cxManager)");
       writeLeftCurlyBracket(out, indent);
       writeIndent(out, indent + 1);
       out.write("this.mcf = mcf;");
@@ -132,7 +134,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import java.util.logging.Logger;");
@@ -158,7 +163,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getCfClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getCfClass();
    }
    
    /**
@@ -180,7 +185,7 @@
       out.write(" *");
       writeEol(out);
       writeIndent(out, indent);
-      out.write(" * @return " + def.getConnInterfaceClass() + " instance");
+      out.write(" * @return " + def.getMcfDefs().get(getNumOfMcf()).getConnInterfaceClass() + " instance");
       writeEol(out);
       writeIndent(out, indent);
       out.write(" * @exception ResourceException Thrown if a connection can't be obtained");
@@ -193,13 +198,15 @@
       out.write("@Override");
       writeEol(out);
       writeIndent(out, indent);
-      out.write("public " + def.getConnInterfaceClass() + " getConnection() throws ResourceException");
+      out.write("public " + def.getMcfDefs().get(getNumOfMcf()).getConnInterfaceClass() + 
+         " getConnection() throws ResourceException");
       writeLeftCurlyBracket(out, indent);
       writeIndent(out, indent + 1);
       out.write("log.finest(\"getConnection()\");");
       writeEol(out);
       writeIndent(out, indent + 1);
-      out.write("return (" + def.getConnInterfaceClass() + ")connectionManager.allocateConnection(mcf, null);");
+      out.write("return (" + def.getMcfDefs().get(getNumOfMcf()).getConnInterfaceClass() + 
+         ")connectionManager.allocateConnection(mcf, null);");
       writeRightCurlyBracket(out, indent);
       writeEol(out);
    }

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CfInterfaceCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CfInterfaceCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/CfInterfaceCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -61,7 +61,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import java.io.Serializable;");
@@ -82,7 +85,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getCfInterfaceClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getCfInterfaceClass();
    }
    
    /**
@@ -104,7 +107,7 @@
       out.write(" *");
       writeEol(out);
       writeIndent(out, indent);
-      out.write(" * @return " + def.getConnInterfaceClass() + " instance");
+      out.write(" * @return " + def.getMcfDefs().get(getNumOfMcf()).getConnInterfaceClass() + " instance");
       writeEol(out);
       writeIndent(out, indent);
       out.write(" * @exception ResourceException Thrown if a connection can't be obtained");
@@ -114,7 +117,8 @@
       writeEol(out);
       
       writeIndent(out, indent);
-      out.write("public " + def.getConnInterfaceClass() + " getConnection() throws ResourceException;");
+      out.write("public " + def.getMcfDefs().get(getNumOfMcf()).getConnInterfaceClass() + 
+         " getConnection() throws ResourceException;");
       writeEol(out);
    }
 }

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnImplCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnImplCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnImplCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -47,7 +47,8 @@
    public void writeClassBody(Definition def, Writer out) throws IOException
    {
 
-      out.write("public class " + getClassName(def) + " implements " + def.getConnInterfaceClass());
+      out.write("public class " + getClassName(def) + " implements " + 
+         def.getMcfDefs().get(getNumOfMcf()).getConnInterfaceClass());
       writeLeftCurlyBracket(out, 0);
       int indent = 1;
       writeIndent(out, indent);
@@ -62,7 +63,7 @@
       out.write("/** ManagedConnection */");
       writeEol(out);
       writeIndent(out, indent);
-      out.write("private " + def.getMcClass() + " mc;");
+      out.write("private " + def.getMcfDefs().get(getNumOfMcf()).getMcClass() + " mc;");
       writeEol(out);
       writeEol(out);
       
@@ -70,7 +71,7 @@
       out.write("/** ManagedConnectionFactory */");
       writeEol(out);
       writeIndent(out, indent);
-      out.write("private " + def.getMcfClass() + " mcf;");
+      out.write("private " + def.getMcfDefs().get(getNumOfMcf()).getMcfClass() + " mcf;");
       writeEol(out);
       writeEol(out);
       
@@ -82,10 +83,10 @@
       out.write(" * Default constructor");
       writeEol(out);
       writeIndent(out, indent);
-      out.write(" * @param mc " + def.getMcClass());
+      out.write(" * @param mc " + def.getMcfDefs().get(getNumOfMcf()).getMcClass());
       writeEol(out);
       writeIndent(out, indent);
-      out.write(" * @param mcf " + def.getMcfClass());
+      out.write(" * @param mcf " + def.getMcfDefs().get(getNumOfMcf()).getMcfClass());
       writeEol(out);
       writeIndent(out, indent);
       out.write(" */");
@@ -93,7 +94,8 @@
       
       writeIndent(out, indent);
       out.write("public " + getClassName(def) + "(" + 
-         def.getMcClass() + " mc, " + def.getMcfClass() + " mcf)");
+         def.getMcfDefs().get(getNumOfMcf()).getMcClass() + " mc, " + 
+         def.getMcfDefs().get(getNumOfMcf()).getMcfClass() + " mcf)");
       writeLeftCurlyBracket(out, indent);
       writeIndent(out, indent + 1);
       out.write("this.mc = mc;");
@@ -116,7 +118,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import java.util.logging.Logger;");
@@ -132,7 +137,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getConnImplClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getConnImplClass();
    }
    
    /**
@@ -144,11 +149,11 @@
     */
    private void writeMethod(Definition def, Writer out, int indent) throws IOException
    {
-      if (def.isDefineMethodInConnection())
+      if (def.getMcfDefs().get(getNumOfMcf()).isDefineMethodInConnection())
       {
-         if (def.getMethods().size() > 0)
+         if (def.getMcfDefs().get(getNumOfMcf()).getMethods().size() > 0)
          {
-            for (MethodForConnection method : def.getMethods())
+            for (MethodForConnection method : def.getMcfDefs().get(getNumOfMcf()).getMethods())
             {
                writeIndent(out, indent);
                out.write("/**");

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnInterfaceCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnInterfaceCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnInterfaceCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -51,11 +51,11 @@
       out.write("public interface " + getClassName(def));
       writeLeftCurlyBracket(out, 0);
       
-      if (def.isDefineMethodInConnection())
+      if (def.getMcfDefs().get(getNumOfMcf()).isDefineMethodInConnection())
       {
-         if (def.getMethods().size() > 0)
+         if (def.getMcfDefs().get(getNumOfMcf()).getMethods().size() > 0)
          {
-            for (MethodForConnection method : def.getMethods())
+            for (MethodForConnection method : def.getMcfDefs().get(getNumOfMcf()).getMethods())
             {
                writeIndent(out, indent);
                out.write("/**");
@@ -157,7 +157,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
    }
@@ -170,6 +173,6 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getConnInterfaceClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getConnInterfaceClass();
    }
 }

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnMetaCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnMetaCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnMetaCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -65,7 +65,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import javax.resource.ResourceException;");
@@ -84,7 +87,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getConnMetaClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getConnMetaClass();
    }
    
    /**

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnSpecCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnSpecCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/ConnSpecCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -62,7 +62,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import javax.resource.cci.ConnectionSpec ;");
@@ -78,7 +81,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getConnSpecClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getConnSpecClass();
    }
 
 }

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanImplCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanImplCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanImplCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -120,11 +120,12 @@
       writeEol(out);
       writeEol(out);
 
-      out.write("import " + def.getRaPackage() + "." + def.getConnInterfaceClass() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("import " + def.getRaPackage() + ".*;");
+      else
+         out.write("import " + def.getRaPackage() + ".mcf0.*;");
       writeEol(out);
-      out.write("import " + def.getRaPackage() + "." + def.getCfInterfaceClass() + ";");
       writeEol(out);
-      writeEol(out);
    }
    
    /**
@@ -197,11 +198,11 @@
     */
    private void writeMethods(Definition def, Writer out, int indent) throws IOException
    {
-      if (def.isDefineMethodInConnection())
+      if (def.getMcfDefs().get(0).isDefineMethodInConnection())
       {
-         if (def.getMethods().size() > 0)
+         if (def.getMcfDefs().get(0).getMethods().size() > 0)
          {
-            for (MethodForConnection method : def.getMethods())
+            for (MethodForConnection method : def.getMcfDefs().get(0).getMethods())
             {
                writeIndent(out, indent);
                out.write("/**");
@@ -301,8 +302,8 @@
     */
    private void writeGetConnection(Definition def, Writer out, int indent) throws IOException
    {
-      String connInterface = def.getConnInterfaceClass();
-      String cfInterface = def.getCfInterfaceClass();
+      String connInterface = def.getMcfDefs().get(0).getConnInterfaceClass();
+      String cfInterface = def.getMcfDefs().get(0).getCfInterfaceClass();
       
       writeIndent(out, indent);
       out.write("/**");

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanInterfaceCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanInterfaceCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanInterfaceCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -50,11 +50,11 @@
       out.write("public interface " + getClassName(def));
       writeLeftCurlyBracket(out, 0);
            
-      if (def.isDefineMethodInConnection())
+      if (def.getMcfDefs().get(0).isDefineMethodInConnection())
       {
-         if (def.getMethods().size() > 0)
+         if (def.getMcfDefs().get(0).getMethods().size() > 0)
          {
-            for (MethodForConnection method : def.getMethods())
+            for (MethodForConnection method : def.getMcfDefs().get(0).getMethods())
             {
                writeIndent(out, indent);
                out.write("/**");

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -69,7 +69,7 @@
       out.write("/** ManagedConnectionFactory */");
       writeEol(out);
       writeIndent(out, indent);
-      out.write("private " + def.getMcfClass() + " mcf;");
+      out.write("private " + def.getMcfDefs().get(getNumOfMcf()).getMcfClass() + " mcf;");
       writeEol(out);
       writeEol(out);
       
@@ -104,7 +104,7 @@
       writeEol(out);
       
       writeIndent(out, indent);
-      out.write("public " + getClassName(def) + "(" + def.getMcfClass() + " mcf)");
+      out.write("public " + getClassName(def) + "(" + def.getMcfDefs().get(getNumOfMcf()).getMcfClass() + " mcf)");
       writeLeftCurlyBracket(out, indent);
       writeIndent(out, indent + 1);
       out.write("this.mcf = mcf;");
@@ -139,7 +139,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import java.io.PrintWriter;");
@@ -182,7 +185,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getMcClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getMcClass();
    }
    
    /**
@@ -232,7 +235,10 @@
       out.write("log.finest(\"getConnection()\");");
       writeEol(out);
       writeIndent(out, indent + 1);
-      out.write("connection = new " + def.getConnImplClass() + "(this, mcf);");
+      if (def.getMcfDefs().get(getNumOfMcf()).isUseCciConnection())
+         out.write("connection = new " + def.getMcfDefs().get(getNumOfMcf()).getCciConnClass() + "();");
+      else
+         out.write("connection = new " + def.getMcfDefs().get(getNumOfMcf()).getConnImplClass() + "(this, mcf);");
       writeEol(out);
       writeIndent(out, indent + 1);
       out.write("return connection;");
@@ -420,7 +426,11 @@
       out.write(" */");
       writeEol(out);
       writeIndent(out, indent);
-      out.write("public void closeHandle(" + def.getConnInterfaceClass() + " handle)");
+      out.write("public void closeHandle(");
+      if (def.getMcfDefs().get(getNumOfMcf()).isUseCciConnection())
+         out.write(def.getMcfDefs().get(getNumOfMcf()).getCciConnClass() + " handle)");
+      else
+         out.write(def.getMcfDefs().get(getNumOfMcf()).getConnInterfaceClass() + " handle)");
       writeLeftCurlyBracket(out, indent);
       writeIndent(out, indent + 1);
       out.write("ConnectionEvent event = new ConnectionEvent(this, ConnectionEvent.CONNECTION_CLOSED);");
@@ -614,7 +624,7 @@
       writeEol(out);
       
       writeIndent(out, indent + 1);
-      out.write("return new " + def.getMcMetaClass() + "();");
+      out.write("return new " + def.getMcfDefs().get(getNumOfMcf()).getMcMetaClass() + "();");
 
       writeRightCurlyBracket(out, indent);
       writeEol(out);

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McMetaCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McMetaCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McMetaCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -74,7 +74,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import java.util.logging.Logger;");
@@ -96,7 +99,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getMcMetaClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getMcMetaClass();
    }
    
    /**

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McfCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McfCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/McfCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -49,18 +49,19 @@
       int indent = 1;
       if (def.isUseAnnotation())
       {
-         if (!def.isUseCciConnection())
+         if (!def.getMcfDefs().get(getNumOfMcf()).isUseCciConnection())
          {
-            out.write("@ConnectionDefinition(connectionFactory = " + def.getCfInterfaceClass() + ".class,");
+            out.write("@ConnectionDefinition(connectionFactory = " + 
+               def.getMcfDefs().get(getNumOfMcf()).getCfInterfaceClass() + ".class,");
             writeEol(out);
             writeIndent(out, indent);
-            out.write("connectionFactoryImpl = " + def.getCfClass() + ".class,");
+            out.write("connectionFactoryImpl = " + def.getMcfDefs().get(getNumOfMcf()).getCfClass() + ".class,");
             writeEol(out);
             writeIndent(out, indent);
-            out.write("connection = " + def.getConnInterfaceClass() + ".class,");
+            out.write("connection = " + def.getMcfDefs().get(getNumOfMcf()).getConnInterfaceClass() + ".class,");
             writeEol(out);
             writeIndent(out, indent);
-            out.write("connectionImpl = " + def.getConnImplClass() + ".class)");
+            out.write("connectionImpl = " + def.getMcfDefs().get(getNumOfMcf()).getConnImplClass() + ".class)");
             writeEol(out);
          }
          else
@@ -68,20 +69,21 @@
             out.write("@ConnectionDefinition(connectionFactory = ConnectionFactory.class,");
             writeEol(out);
             writeIndent(out, indent);
-            out.write("connectionFactoryImpl = " + def.getCciConnFactoryClass() + ".class,");
+            out.write("connectionFactoryImpl = " + 
+               def.getMcfDefs().get(getNumOfMcf()).getCciConnFactoryClass() + ".class,");
             writeEol(out);
             
             writeIndent(out, indent);
             out.write("connection = Connection.class,");
             writeEol(out);
             writeIndent(out, indent);
-            out.write("connectionImpl = " + def.getCciConnClass() + ".class)");
+            out.write("connectionImpl = " + def.getMcfDefs().get(getNumOfMcf()).getCciConnClass() + ".class)");
             writeEol(out);
          }
       }
 
       out.write("public class " + getClassName(def) + " implements ManagedConnectionFactory");
-      if (def.isImplRaAssociation())
+      if (def.getMcfDefs().get(getNumOfMcf()).isImplRaAssociation())
       {
          out.write(", ResourceAdapterAssociation");
       }
@@ -103,7 +105,7 @@
       out.write("private static Logger log = Logger.getLogger(\"" + getClassName(def) + "\");");
       writeEol(out);
       writeEol(out);
-      if (def.isImplRaAssociation())
+      if (def.getMcfDefs().get(getNumOfMcf()).isImplRaAssociation())
       {
          writeIndent(out, indent);
          out.write("/** The resource adapter */");
@@ -130,7 +132,7 @@
       writeConnectionFactory(def, out, indent);
       writeManagedConnection(def, out, indent);
       writeLogWriter(def, out, indent);
-      if (def.isImplRaAssociation())
+      if (def.getMcfDefs().get(getNumOfMcf()).isImplRaAssociation())
       {
          writeResourceAdapter(def, out, indent);
       }
@@ -150,7 +152,10 @@
    @Override
    public void writeImport(Definition def, Writer out) throws IOException
    {
-      out.write("package " + def.getRaPackage() + ";");
+      if (def.getMcfDefs().size() == 1)
+         out.write("package " + def.getRaPackage() + ";");
+      else
+         out.write("package " + def.getRaPackage() + ".mcf" + getNumOfMcf() + ";");
       writeEol(out);
       writeEol(out);
       out.write("import java.io.PrintWriter;");
@@ -167,7 +172,7 @@
       out.write("import javax.resource.ResourceException;");
       writeEol(out);
       
-      if (def.isUseCciConnection())
+      if (def.getMcfDefs().get(getNumOfMcf()).isUseCciConnection())
       {
          out.write("import javax.resource.cci.Connection;");
          writeEol(out);
@@ -208,7 +213,7 @@
    @Override
    public String getClassName(Definition def)
    {
-      return def.getMcfClass();
+      return def.getMcfDefs().get(getNumOfMcf()).getMcfClass();
    }
    
    /**
@@ -219,7 +224,7 @@
    @Override
    public List<ConfigPropType> getConfigProps(Definition def)
    {
-      return def.getMcfConfigProps();
+      return def.getMcfDefs().get(getNumOfMcf()).getMcfConfigProps();
    }
    
    /**
@@ -262,10 +267,10 @@
       out.write("log.finest(\"createConnectionFactory()\");");
       writeEol(out);
       writeIndent(out, indent + 1);
-      if (def.isUseCciConnection())
-         out.write("return new " + def.getCciConnFactoryClass() + "(cxManager);");
+      if (def.getMcfDefs().get(getNumOfMcf()).isUseCciConnection())
+         out.write("return new " + def.getMcfDefs().get(getNumOfMcf()).getCciConnFactoryClass() + "(cxManager);");
       else
-         out.write("return new " + def.getCfClass() + "(this, cxManager);");
+         out.write("return new " + def.getMcfDefs().get(getNumOfMcf()).getCfClass() + "(this, cxManager);");
       
       writeRightCurlyBracket(out, indent);
       writeEol(out);
@@ -345,7 +350,7 @@
       out.write("log.finest(\"createManagedConnection()\");");
       writeEol(out);
       writeIndent(out, indent + 1);
-      out.write("return new " + def.getMcClass() + "(this);");
+      out.write("return new " + def.getMcfDefs().get(getNumOfMcf()).getMcClass() + "(this);");
       writeRightCurlyBracket(out, indent);
       writeEol(out);
       
@@ -400,7 +405,7 @@
       out.write("ManagedConnection mc = (ManagedConnection)it.next();");
       writeEol(out);
       writeIndent(out, indent + 2);
-      out.write("if (mc instanceof " + def.getMcClass() + ")");
+      out.write("if (mc instanceof " + def.getMcfDefs().get(getNumOfMcf()).getMcClass() + ")");
       writeLeftCurlyBracket(out, indent + 2);
       writeIndent(out, indent + 3);
       out.write("result = mc;");

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/TestCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/TestCodeGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/TestCodeGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -64,7 +64,7 @@
       writeDeployment(def, out, indent);
       writeResource(def, out, indent);
       
-      if (def.isDefineMethodInConnection())
+      if (def.getMcfDefs().get(0).isDefineMethodInConnection())
       {
          writeTestMethod(def, out, indent);
       }
@@ -94,7 +94,7 @@
       out.write("import javax.annotation.Resource;");
       writeEol(out);
       writeEol(out);
-      out.write("import org.jboss.arquillian.api.Deployment;");
+      out.write("import org.jboss.arquillian.container.test.api.Deployment;");
       writeEol(out);
       out.write("import org.jboss.arquillian.junit.Arquillian;");
       writeEol(out);
@@ -113,7 +113,12 @@
       out.write("import static org.junit.Assert.*;");
       writeEol(out);
       writeEol(out);
+      if (def.getMcfDefs().size() == 1)
+         out.write("import " + def.getRaPackage() + ".*;");
+      else
+         out.write("import " + def.getRaPackage() + ".mcf0.*;");
       writeEol(out);
+      writeEol(out);
    }
    
    /**
@@ -175,17 +180,21 @@
       {
          out.write(def.getRaClass() + ".class, ");
       }
-      out.write(def.getMcfClass() + ".class, " + def.getMcClass() + ".class, ");
-      if (def.isUseCciConnection())
+      out.write(def.getMcfDefs().get(0).getMcfClass() + ".class, " + 
+         def.getMcfDefs().get(0).getMcClass() + ".class, ");
+      if (def.getMcfDefs().get(0).isUseCciConnection())
       {
-         out.write(def.getCciConnFactoryClass() + ".class, " + def.getCciConnFactoryClass() + ".class, " + 
-            def.getConnMetaClass() + ".class, " + def.getRaMetaClass() + ".class, " + 
-            def.getConnSpecClass() + ".class");
+         out.write(def.getMcfDefs().get(0).getCciConnFactoryClass() + ".class, " + 
+            def.getMcfDefs().get(0).getCciConnFactoryClass() + ".class, " + 
+            def.getMcfDefs().get(0).getConnMetaClass() + ".class, " + def.getRaMetaClass() + ".class, " + 
+            def.getMcfDefs().get(0).getConnSpecClass() + ".class");
       }
       else
       {
-         out.write(def.getCfInterfaceClass() + ".class, " + def.getCfClass() + ".class, " + 
-            def.getConnInterfaceClass() + ".class, " + def.getConnImplClass() + ".class");
+         out.write(def.getMcfDefs().get(0).getCfInterfaceClass() + ".class, " + 
+            def.getMcfDefs().get(0).getCfClass() + ".class, " + 
+            def.getMcfDefs().get(0).getConnInterfaceClass() + ".class, " + 
+            def.getMcfDefs().get(0).getConnImplClass() + ".class");
       }
       
       out.write(");");
@@ -224,7 +233,10 @@
       out.write("@Resource(mappedName = \"java:/eis/" + getClassName(def) + "\")");
       writeEol(out);
       writeIndent(out, indent);
-      out.write("private " + def.getCfInterfaceClass() + " connectionFactory;");
+      if (def.getMcfDefs().get(0).isUseCciConnection())
+         out.write("private javax.resource.cci.ConnectionFactory connectionFactory;");
+      else
+         out.write("private " + def.getMcfDefs().get(0).getCfInterfaceClass() + " connectionFactory;");
       writeEol(out);
       writeEol(out);
    }
@@ -264,7 +276,11 @@
       out.write("assertNotNull(connectionFactory);");
       writeEol(out);
       writeIndent(out, indent + 1);
-      out.write(def.getConnInterfaceClass() + " connection = connectionFactory.getConnection();");
+      if (def.getMcfDefs().get(0).isUseCciConnection())
+         out.write("javax.resource.cci.Connection");
+      else
+         out.write(def.getMcfDefs().get(0).getConnInterfaceClass());
+      out.write(" connection = connectionFactory.getConnection();");
       writeEol(out);
       writeIndent(out, indent + 1);
       out.write("assertNotNull(connection);");
@@ -283,7 +299,7 @@
     */
    private void writeTestMethod(Definition def, Writer out, int indent) throws IOException
    {
-      for (MethodForConnection method : def.getMethods())
+      for (MethodForConnection method : def.getMcfDefs().get(0).getMethods())
       {
          writeIndent(out, indent);
          out.write("/**");
@@ -327,7 +343,11 @@
          out.write("assertNotNull(connectionFactory);");
          writeEol(out);
          writeIndent(out, indent + 1);
-         out.write(def.getConnInterfaceClass() + " connection = connectionFactory.getConnection();");
+         if (def.getMcfDefs().get(0).isUseCciConnection())
+            out.write("javax.resource.cci.Connection");
+         else
+            out.write(def.getMcfDefs().get(0).getConnInterfaceClass());
+         out.write(" connection = connectionFactory.getConnection();");
          writeEol(out);
          writeIndent(out, indent + 1);
          out.write("assertNotNull(connection);");

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/IronjacamarXmlGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/IronjacamarXmlGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/IronjacamarXmlGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -60,7 +60,7 @@
       getPropsString(strRaProps, raPropsList, 2);
       
       StringBuilder strMcfProps = new StringBuilder();
-      List<ConfigPropType> mcfPropsList = def.getMcfConfigProps();
+      List<ConfigPropType> mcfPropsList = def.getMcfDefs().get(0).getMcfConfigProps();
       getPropsString(strMcfProps, mcfPropsList, 6);
       
       StringBuilder strAo = new StringBuilder();
@@ -85,7 +85,10 @@
       Map<String, String> map = new HashMap<String, String>();
       map.put("ra.props", strRaProps.toString());
       map.put("transaction", def.getSupportTransaction());
-      map.put("mcf.class", def.getRaPackage() + "." + def.getMcfClass());
+      if (def.getMcfDefs().size() == 1)
+         map.put("mcf.class", def.getRaPackage() + "." + def.getMcfDefs().get(0).getMcfClass());
+      else
+         map.put("mcf.class", def.getRaPackage() + ".mcf0." + def.getMcfDefs().get(0).getMcfClass());
       map.put("jndi.name", "java:/eis/" + def.getDefaultValue());
       map.put("pool.name", def.getDefaultValue());
       map.put("mcf.props", strMcfProps.toString());

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/Ra10XmlGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/Ra10XmlGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/Ra10XmlGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -115,27 +115,27 @@
    {
       writeIndent(out, indent);
       out.write("<managedconnectionfactory-class>" + def.getRaPackage() + "." + 
-         def.getMcfClass() + "</managedconnectionfactory-class>");
+         def.getMcfDefs().get(0).getMcfClass() + "</managedconnectionfactory-class>");
       writeEol(out);
       writeEol(out);
 
-      if (!def.isUseCciConnection())
+      if (!def.getMcfDefs().get(0).isUseCciConnection())
       {
          writeIndent(out, indent);
          out.write("<connectionfactory-interface>" + def.getRaPackage() + "." + 
-            def.getCfInterfaceClass() + "</connectionfactory-interface>");
+            def.getMcfDefs().get(0).getCfInterfaceClass() + "</connectionfactory-interface>");
          writeEol(out);
          writeIndent(out, indent);
          out.write("<connectionfactory-impl-class>" + def.getRaPackage() + "." + 
-            def.getCfClass() + "</connectionfactory-impl-class>");
+            def.getMcfDefs().get(0).getCfClass() + "</connectionfactory-impl-class>");
          writeEol(out);
          writeIndent(out, indent);
          out.write("<connection-interface>" + def.getRaPackage() + "." + 
-            def.getConnInterfaceClass() + "</connection-interface>");
+            def.getMcfDefs().get(0).getConnInterfaceClass() + "</connection-interface>");
          writeEol(out);
          writeIndent(out, indent);
          out.write("<connection-impl-class>" + def.getRaPackage() + "." + 
-            def.getConnImplClass() + "</connection-impl-class>");
+            def.getMcfDefs().get(0).getConnImplClass() + "</connection-impl-class>");
          writeEol(out);
       }
       else
@@ -145,14 +145,14 @@
          writeEol(out);
          writeIndent(out, indent);
          out.write("<connectionfactory-impl-class>" + def.getRaPackage() + "." + 
-            def.getCciConnFactoryClass() + "</connectionfactory-impl-class>");
+            def.getMcfDefs().get(0).getCciConnFactoryClass() + "</connectionfactory-impl-class>");
          writeEol(out);
          writeIndent(out, indent);
          out.write("<connection-interface>javax.resource.cci.Connection</connection-interface>");
          writeEol(out);
          writeIndent(out, indent);
          out.write("<connection-impl-class>" + def.getRaPackage() + "." + 
-            def.getCciConnClass() + "</connection-impl-class>");
+            def.getMcfDefs().get(0).getCciConnClass() + "</connection-impl-class>");
          writeEol(out);
       }
 
@@ -161,7 +161,7 @@
       out.write("<transaction-support>" + def.getSupportTransaction() + "</transaction-support>");
       writeEol(out);
       
-      writeConfigPropsXml(def.getMcfConfigProps(), out, indent, false);
+      writeConfigPropsXml(def.getMcfDefs().get(0).getMcfConfigProps(), out, indent, false);
       
       writeIndent(out, indent);
       out.write("<reauthentication-support>" + def.isSupportReauthen() + "</reauthentication-support>");

Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/RaXmlGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/RaXmlGen.java	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/xml/RaXmlGen.java	2011-05-25 11:31:26 UTC (rev 111445)
@@ -251,55 +251,61 @@
       writeIndent(out, indent);
       out.write("<outbound-resourceadapter>");
       writeEol(out);
-      writeIndent(out, indent + 1);
-      out.write("<connection-definition>");
-      writeEol(out);
-      writeIndent(out, indent + 2);
-      out.write("<managedconnectionfactory-class>" + def.getRaPackage() + "." + 
-         def.getMcfClass() + "</managedconnectionfactory-class>");
-      writeEol(out);
-      writeConfigPropsXml(def.getMcfConfigProps(), out, indent + 2, false);
-      
-      if (!def.isUseCciConnection())
+      String mcfPackage;
+      for (int num = 0; num < def.getMcfDefs().size(); num++)
       {
-         writeIndent(out, indent + 2);
-         out.write("<connectionfactory-interface>" + def.getRaPackage() + "." + 
-            def.getCfInterfaceClass() + "</connectionfactory-interface>");
+         mcfPackage = def.getMcfDefs().size() == 1 ? "" : "mcf" + num + ".";
+         writeIndent(out, indent + 1);
+         out.write("<connection-definition>");
          writeEol(out);
          writeIndent(out, indent + 2);
-         out.write("<connectionfactory-impl-class>" + def.getRaPackage() + "." + 
-            def.getCfClass() + "</connectionfactory-impl-class>");
+         out.write("<managedconnectionfactory-class>" + def.getRaPackage() + "." + mcfPackage +
+            def.getMcfDefs().get(num).getMcfClass() + "</managedconnectionfactory-class>");
          writeEol(out);
-         writeIndent(out, indent + 2);
-         out.write("<connection-interface>" + def.getRaPackage() + "." + 
-            def.getConnInterfaceClass() + "</connection-interface>");
+         writeConfigPropsXml(def.getMcfDefs().get(num).getMcfConfigProps(), out, indent + 2, false);
+         
+         if (!def.getMcfDefs().get(num).isUseCciConnection())
+         {
+            writeIndent(out, indent + 2);
+            out.write("<connectionfactory-interface>" + def.getRaPackage() + "." +  mcfPackage +
+               def.getMcfDefs().get(num).getCfInterfaceClass() + "</connectionfactory-interface>");
+            writeEol(out);
+            writeIndent(out, indent + 2);
+            out.write("<connectionfactory-impl-class>" + def.getRaPackage() + "." +  mcfPackage +
+               def.getMcfDefs().get(num).getCfClass() + "</connectionfactory-impl-class>");
+            writeEol(out);
+            writeIndent(out, indent + 2);
+            out.write("<connection-interface>" + def.getRaPackage() + "." +  mcfPackage +
+               def.getMcfDefs().get(num).getConnInterfaceClass() + "</connection-interface>");
+            writeEol(out);
+            writeIndent(out, indent + 2);
+            out.write("<connection-impl-class>" + def.getRaPackage() + "." +  mcfPackage +
+               def.getMcfDefs().get(num).getConnImplClass() + "</connection-impl-class>");
+            writeEol(out);
+         }
+         else
+         {
+            writeIndent(out, indent + 2);
+            out.write("<connectionfactory-interface>javax.resource.cci.ConnectionFactory" +
+               "</connectionfactory-interface>");
+            writeEol(out);
+            writeIndent(out, indent + 2);
+            out.write("<connectionfactory-impl-class>" + def.getRaPackage() + "." +  mcfPackage +
+               def.getMcfDefs().get(num).getCciConnFactoryClass() + "</connectionfactory-impl-class>");
+            writeEol(out);
+            writeIndent(out, indent + 2);
+            out.write("<connection-interface>javax.resource.cci.Connection</connection-interface>");
+            writeEol(out);
+            writeIndent(out, indent + 2);
+            out.write("<connection-impl-class>" + def.getRaPackage() + "." +  mcfPackage +
+               def.getMcfDefs().get(num).getCciConnClass() + "</connection-impl-class>");
+            writeEol(out);
+         }
+         writeIndent(out, indent + 1);
+         out.write("</connection-definition>");
          writeEol(out);
-         writeIndent(out, indent + 2);
-         out.write("<connection-impl-class>" + def.getRaPackage() + "." + 
-            def.getConnImplClass() + "</connection-impl-class>");
-         writeEol(out);
       }
-      else
-      {
-         writeIndent(out, indent + 2);
-         out.write("<connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>");
-         writeEol(out);
-         writeIndent(out, indent + 2);
-         out.write("<connectionfactory-impl-class>" + def.getRaPackage() + "." + 
-            def.getCciConnFactoryClass() + "</connectionfactory-impl-class>");
-         writeEol(out);
-         writeIndent(out, indent + 2);
-         out.write("<connection-interface>javax.resource.cci.Connection</connection-interface>");
-         writeEol(out);
-         writeIndent(out, indent + 2);
-         out.write("<connection-impl-class>" + def.getRaPackage() + "." + 
-            def.getCciConnClass() + "</connection-impl-class>");
-         writeEol(out);
-      }
       writeIndent(out, indent + 1);
-      out.write("</connection-definition>");
-      writeEol(out);
-      writeIndent(out, indent + 1);
       out.write("<transaction-support>" + def.getSupportTransaction() + "</transaction-support>");
       writeEol(out);
       

Modified: projects/jboss-jca/trunk/codegenerator/src/main/resources/codegenerator.properties
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/resources/codegenerator.properties	2011-05-24 23:27:14 UTC (rev 111444)
+++ projects/jboss-jca/trunk/codegenerator/src/main/resources/codegenerator.properties	2011-05-25 11:31:26 UTC (rev 111445)
@@ -19,6 +19,7 @@
 config.properties.required=Required (Y/Yes/N/No) 
 mcf.impl.raa=Use ResourceAdapterAssociation (Y/Yes/N/No) 
 mcf.use.cci=Use CCI (Y/Yes/N/No) 
+more.mcf=More Managed connection factory (Y/Yes/N/No) 
 ml.interface.name=MessageListener interface name 
 as.class.name=ActivationSpec class name 
 as.config.properties=ActivationSpec config properties [enter to quit]:



More information about the jboss-cvs-commits mailing list