[jboss-cvs] JBossAS SVN: r111049 - in projects/jboss-jca/trunk: deployers/src/main/java/org/jboss/jca/deployers/fungal and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Mar 28 11:25:02 EDT 2011


Author: jesper.pedersen
Date: 2011-03-28 11:25:01 -0400 (Mon, 28 Mar 2011)
New Revision: 111049

Modified:
   projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/inflow/PureInflowTestCase.java
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
Log:
[JBJCA-537] AdminObject must be considered when activating

Modified: projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/inflow/PureInflowTestCase.java
===================================================================
--- projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/inflow/PureInflowTestCase.java	2011-03-28 14:56:19 UTC (rev 111048)
+++ projects/jboss-jca/trunk/core/src/test/java/org/jboss/jca/core/inflow/PureInflowTestCase.java	2011-03-28 15:25:01 UTC (rev 111049)
@@ -25,6 +25,7 @@
 import org.jboss.jca.core.spi.rar.Endpoint;
 import org.jboss.jca.core.spi.rar.MessageListener;
 import org.jboss.jca.core.spi.rar.ResourceAdapterRepository;
+import org.jboss.jca.deployers.fungal.RAActivator;
 import org.jboss.jca.embedded.Embedded;
 import org.jboss.jca.embedded.EmbeddedFactory;
 
@@ -74,15 +75,22 @@
       try
       {
          embedded.startup();
-         embedded.deploy(pureInflowRar);
 
-         ic = new InitialContext();
-
          ResourceAdapterRepository raRepository = 
             embedded.lookup("ResourceAdapterRepository", ResourceAdapterRepository.class);
 
          assertNotNull(raRepository);
 
+         RAActivator raActivator = 
+            embedded.lookup("RAActivator", RAActivator.class);
+
+         assertNotNull(raActivator);
+         raActivator.setEnabled(false);
+
+         embedded.deploy(pureInflowRar);
+
+         ic = new InitialContext();
+
          Set<String> ids = raRepository.getResourceAdapters(javax.jms.MessageListener.class);
 
          assertNotNull(ids);

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java	2011-03-28 14:56:19 UTC (rev 111048)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java	2011-03-28 15:25:01 UTC (rev 111049)
@@ -24,6 +24,7 @@
 
 import org.jboss.jca.common.annotations.Annotations;
 import org.jboss.jca.common.api.metadata.ironjacamar.IronJacamar;
+import org.jboss.jca.common.api.metadata.ra.AdminObject;
 import org.jboss.jca.common.api.metadata.ra.ConnectionDefinition;
 import org.jboss.jca.common.api.metadata.ra.Connector;
 import org.jboss.jca.common.api.metadata.ra.Connector.Version;
@@ -43,6 +44,7 @@
 import java.io.IOException;
 import java.net.URL;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -211,15 +213,15 @@
    @Override
    protected boolean checkActivation(Connector cmd, IronJacamar ijmd)
    {
-      if (cmd != null && ijmd != null)
+      if (cmd != null)
       {
-         Set<String> raClasses = new HashSet<String>();
-         Set<String> ijClasses = new HashSet<String>();
+         Set<String> raMcfClasses = new HashSet<String>();
+         Set<String> raAoClasses = new HashSet<String>();
 
          if (cmd.getVersion() == Version.V_10)
          {
             ResourceAdapter10 ra10 = (ResourceAdapter10) cmd.getResourceadapter();
-            raClasses.add(ra10.getManagedConnectionFactoryClass().getValue());
+            raMcfClasses.add(ra10.getManagedConnectionFactoryClass().getValue());
          }
          else
          {
@@ -232,36 +234,103 @@
                {
                   for (ConnectionDefinition cdMeta : cdMetas)
                   {
-                     raClasses.add(cdMeta.getManagedConnectionFactoryClass().getValue());
+                     raMcfClasses.add(cdMeta.getManagedConnectionFactoryClass().getValue());
                   }
                }
             }
+
+            if (ra != null && ra.getAdminObjects() != null)
+            {
+               List<AdminObject> aoMetas = ra.getAdminObjects();
+               if (aoMetas.size() > 0)
+               {
+                  for (AdminObject aoMeta : aoMetas)
+                  {
+                     raAoClasses.add(aoMeta.getAdminobjectClass().getValue());
+                  }
+               }
+            }
+
+            // Pure inflow
+            if (raMcfClasses.size() == 0 && raAoClasses.size() == 0)
+               return true;
          }
 
-         if (raClasses.size() == 0)
-            return false;
+         if (ijmd != null)
+         {
+            Set<String> ijMcfClasses = new HashSet<String>();
+            Set<String> ijAoClasses = new HashSet<String>();
 
-         if (ijmd.getConnectionDefinitions() != null)
-         {
-            for (org.jboss.jca.common.api.metadata.common.CommonConnDef def : ijmd.getConnectionDefinitions())
+            boolean mcfSingle = false;
+            boolean aoSingle = false;
+
+            boolean mcfOk = true;
+            boolean aoOk = true;
+
+            if (ijmd.getConnectionDefinitions() != null)
             {
-               String clz = def.getClassName();
+               for (org.jboss.jca.common.api.metadata.common.CommonConnDef def : ijmd.getConnectionDefinitions())
+               {
+                  String clz = def.getClassName();
 
-               if (clz == null && raClasses.size() == 1)
-                  return true;
+                  if (clz == null)
+                  {
+                     if (raMcfClasses.size() == 1)
+                     {
+                        mcfSingle = true;
+                     }
+                  }
+                  else
+                  {
+                     ijMcfClasses.add(clz);
+                  }
+               }
+            }
 
-               if (clz != null)
-                  ijClasses.add(clz);
+            if (!mcfSingle)
+            {
+               Iterator<String> it = raMcfClasses.iterator();
+               while (mcfOk && it.hasNext())
+               {
+                  String clz = it.next();
+                  if (!ijMcfClasses.contains(clz))
+                     mcfOk = false;
+               }
             }
-         }
 
-         for (String clz : raClasses)
-         {
-            if (!ijClasses.contains(clz))
-               return false;
+            if (ijmd.getAdminObjects() != null)
+            {
+               for (org.jboss.jca.common.api.metadata.common.CommonAdminObject def : ijmd.getAdminObjects())
+               {
+                  String clz = def.getClassName();
+
+                  if (clz == null)
+                  {
+                     if (raAoClasses.size() == 1)
+                     {
+                        aoSingle = true;
+                     }
+                  }
+                  else
+                  {
+                     ijAoClasses.add(clz);
+                  }
+               }
+            }
+
+            if (!aoSingle)
+            {
+               Iterator<String> it = raAoClasses.iterator();
+               while (aoOk && it.hasNext())
+               {
+                  String clz = it.next();
+                  if (!ijAoClasses.contains(clz))
+                     aoOk = false;
+               }
+            }
+
+            return mcfOk && aoOk;
          }
-
-         return true;
       }
 
       return false;



More information about the jboss-cvs-commits mailing list