[jboss-cvs] JBossAS SVN: r111960 - 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 Aug 8 12:33:05 EDT 2011
Author: jesper.pedersen
Date: 2011-08-08 12:33:05 -0400 (Mon, 08 Aug 2011)
New Revision: 111960
Modified:
projects/jboss-jca/trunk/common/src/test/resources/ra.xml
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployment.java
Log:
Improvements to the RAActivator
Modified: projects/jboss-jca/trunk/common/src/test/resources/ra.xml
===================================================================
--- projects/jboss-jca/trunk/common/src/test/resources/ra.xml 2011-08-08 16:14:51 UTC (rev 111959)
+++ projects/jboss-jca/trunk/common/src/test/resources/ra.xml 2011-08-08 16:33:05 UTC (rev 111960)
@@ -10,19 +10,24 @@
<eis-type>TS EIS</eis-type>
<resourceadapter-version>1.0</resourceadapter-version>
<resourceadapter>
- <resourceadapter-class>
- com.sun.ts.tests.common.connector.whitebox.multianno.MAResourceAdapterImpl
- </resourceadapter-class>
- <config-property>
- <config-property-name>overRide</config-property-name>
- <config-property-type>java.lang.String</config-property-type>
- <config-property-value>VAL_FROM_DD</config-property-value>
- </config-property>
+ <resourceadapter-class>
+ com.sun.ts.tests.common.connector.whitebox.multianno.MAResourceAdapterImpl
+ </resourceadapter-class>
+ <config-property>
+ <config-property-name>overRide</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value>VAL_FROM_DD</config-property-value>
+ </config-property>
<outbound-resourceadapter>
<connection-definition>
<managedconnectionfactory-class>
com.sun.ts.tests.common.connector.whitebox.multianno.MAManagedConnectionFactory
</managedconnectionfactory-class>
+ <config-property>
+ <config-property-name>cp</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value>1</config-property-value>
+ </config-property>
<connectionfactory-interface>
com.sun.ts.tests.common.connector.whitebox.TSConnectionFactory
</connectionfactory-interface>
@@ -36,6 +41,28 @@
com.sun.ts.tests.common.connector.whitebox.TSEISConnection
</connection-impl-class>
</connection-definition>
+ <connection-definition>
+ <managedconnectionfactory-class>
+ com.sun.ts.tests.common.connector.whitebox.multianno.MAManagedConnectionFactory2
+ </managedconnectionfactory-class>
+ <config-property>
+ <config-property-name>cp</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value>2</config-property-value>
+ </config-property>
+ <connectionfactory-interface>
+ com.sun.ts.tests.common.connector.whitebox.TSConnectionFactory
+ </connectionfactory-interface>
+ <connectionfactory-impl-class>
+ com.sun.ts.tests.common.connector.whitebox.TSEISDataSource
+ </connectionfactory-impl-class>
+ <connection-interface>
+ com.sun.ts.tests.common.connector.whitebox.TSConnection
+ </connection-interface>
+ <connection-impl-class>
+ com.sun.ts.tests.common.connector.whitebox.TSEISConnection
+ </connection-impl-class>
+ </connection-definition>
<transaction-support>LocalTransaction</transaction-support>
<authentication-mechanism>
<authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
@@ -43,5 +70,25 @@
</authentication-mechanism>
<reauthentication-support>false</reauthentication-support>
</outbound-resourceadapter>
+ <adminobject>
+ <adminobject-interface>com.sun.ts.tests.common.connector.whitebox.AdminObject1</adminobject-interface>
+ <adminobject-class>com.sun.ts.tests.common.connector.whitebox.AdminObject1Impl</adminobject-class>
+ <config-property>
+ <config-property-name>acp</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value></config-property-value>
+ </config-property>
+
+ </adminobject>
+ <adminobject>
+ <adminobject-interface>com.sun.ts.tests.common.connector.whitebox.AdminObject2</adminobject-interface>
+ <adminobject-class>com.sun.ts.tests.common.connector.whitebox.AdminObject2Impl</adminobject-class>
+ <config-property>
+ <config-property-name>acp</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value></config-property-value>
+ </config-property>
+
+ </adminobject>
</resourceadapter>
</connector>
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java 2011-08-08 16:14:51 UTC (rev 111959)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RAActivator.java 2011-08-08 16:33:05 UTC (rev 111960)
@@ -23,7 +23,10 @@
package org.jboss.jca.deployers.fungal;
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.MessageListener;
import org.jboss.jca.common.api.metadata.ra.ResourceAdapter;
import org.jboss.jca.common.api.metadata.ra.ResourceAdapter1516;
import org.jboss.jca.common.api.metadata.ra.ra10.ResourceAdapter10;
@@ -257,7 +260,7 @@
{
Connector entryXml = mdr.getResourceAdapter(entry);
- if (raXml.equals(entryXml))
+ if (sameStructure(raXml, entryXml))
configured.add(entry);
}
}
@@ -273,6 +276,152 @@
}
/**
+ * Check if two connector defines the same structures
+ * @param c1 The first connector
+ * @param c2 The second connector
+ * @return True if same structure; otherwise false
+ */
+ private boolean sameStructure(Connector c1, Connector c2)
+ {
+ if (c1 == null || c1.getResourceadapter() == null)
+ return false;
+
+ if (c2 == null || c2.getResourceadapter() == null)
+ return false;
+
+ ResourceAdapter ra1 = c1.getResourceadapter();
+ ResourceAdapter ra2 = c2.getResourceadapter();
+
+ if (ra1 instanceof ResourceAdapter10 && ra2 instanceof ResourceAdapter10)
+ {
+ ResourceAdapter10 ra110 = (ResourceAdapter10)ra1;
+ ResourceAdapter10 ra210 = (ResourceAdapter10)ra2;
+
+ return ra110.getManagedConnectionFactoryClass().getValue().
+ equals(ra210.getManagedConnectionFactoryClass().getValue());
+ }
+ else if (ra1 instanceof ResourceAdapter1516 && ra2 instanceof ResourceAdapter1516)
+ {
+ ResourceAdapter1516 ra11516 = (ResourceAdapter1516)ra1;
+ ResourceAdapter1516 ra21516 = (ResourceAdapter1516)ra2;
+
+ Set<String> clzRa1 = new HashSet<String>();
+ Set<String> clzMcf1 = new HashSet<String>();
+ Set<String> clzAo1 = new HashSet<String>();
+ Set<String> clzAS1 = new HashSet<String>();
+
+ if (ra11516.getResourceadapterClass() != null)
+ clzRa1.add(ra11516.getResourceadapterClass());
+
+ if (ra11516.getOutboundResourceadapter() != null)
+ {
+ if (ra11516.getOutboundResourceadapter().getConnectionDefinitions() != null)
+ {
+ for (ConnectionDefinition cd : ra11516.getOutboundResourceadapter().getConnectionDefinitions())
+ {
+ clzMcf1.add(cd.getManagedConnectionFactoryClass().getValue());
+ }
+ }
+ }
+
+ if (ra11516.getAdminObjects() != null)
+ {
+ for (AdminObject ao : ra11516.getAdminObjects())
+ {
+ clzAo1.add(ao.getAdminobjectClass().getValue());
+ }
+ }
+
+ if (ra11516.getInboundResourceadapter() != null &&
+ ra11516.getInboundResourceadapter().getMessageadapter() != null &&
+ ra11516.getInboundResourceadapter().getMessageadapter().getMessagelisteners() != null)
+ {
+ for (MessageListener ml : ra11516.getInboundResourceadapter().getMessageadapter().getMessagelisteners())
+ {
+ clzAS1.add(ml.getActivationspec().getActivationspecClass().getValue());
+ }
+ }
+
+ Set<String> clzRa2 = new HashSet<String>();
+ Set<String> clzMcf2 = new HashSet<String>();
+ Set<String> clzAo2 = new HashSet<String>();
+ Set<String> clzAS2 = new HashSet<String>();
+
+ if (ra21516.getResourceadapterClass() != null)
+ clzRa2.add(ra21516.getResourceadapterClass());
+
+ if (ra21516.getOutboundResourceadapter() != null)
+ {
+ if (ra21516.getOutboundResourceadapter().getConnectionDefinitions() != null)
+ {
+ for (ConnectionDefinition cd : ra21516.getOutboundResourceadapter().getConnectionDefinitions())
+ {
+ clzMcf2.add(cd.getManagedConnectionFactoryClass().getValue());
+ }
+ }
+ }
+
+ if (ra21516.getAdminObjects() != null)
+ {
+ for (AdminObject ao : ra21516.getAdminObjects())
+ {
+ clzAo2.add(ao.getAdminobjectClass().getValue());
+ }
+ }
+
+ if (ra21516.getInboundResourceadapter() != null &&
+ ra21516.getInboundResourceadapter().getMessageadapter() != null &&
+ ra21516.getInboundResourceadapter().getMessageadapter().getMessagelisteners() != null)
+ {
+ for (MessageListener ml : ra21516.getInboundResourceadapter().getMessageadapter().getMessagelisteners())
+ {
+ clzAS2.add(ml.getActivationspec().getActivationspecClass().getValue());
+ }
+ }
+
+ if (clzRa1.size() != clzRa2.size())
+ return false;
+
+ if (clzMcf1.size() != clzMcf2.size())
+ return false;
+
+ if (clzAo1.size() != clzAo2.size())
+ return false;
+
+ if (clzAS1.size() != clzAS2.size())
+ return false;
+
+ for (String s : clzRa1)
+ {
+ if (!clzRa2.contains(s))
+ return false;
+ }
+
+ for (String s : clzMcf1)
+ {
+ if (!clzMcf2.contains(s))
+ return false;
+ }
+
+ for (String s : clzAo1)
+ {
+ if (!clzAo2.contains(s))
+ return false;
+ }
+
+ for (String s : clzAS1)
+ {
+ if (!clzAS2.contains(s))
+ return false;
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
* Deploy
* @param url The url
* @param parent The parent classloader
@@ -326,6 +475,9 @@
Connector cmd = metadataRepository.getResourceAdapter(url.toExternalForm());
IronJacamar ijmd = metadataRepository.getIronJacamar(url.toExternalForm());
+ if (cmd != null)
+ cmd = (Connector)cmd.copy();
+
cmd = (new Merger()).mergeConnectorWithCommonIronJacamar(ijmd, cmd);
CommonDeployment c = createObjectsAndInjectValue(url, deploymentName, root, cl, cmd, ijmd);
@@ -377,14 +529,51 @@
if (cmd == null)
return false;
- if (ijmd != null)
- return true;
-
ResourceAdapter ra = cmd.getResourceadapter();
if (ra == null)
return false;
+ if (ijmd != null)
+ {
+ if (ra instanceof ResourceAdapter10)
+ {
+ return true;
+ }
+ else
+ {
+ ResourceAdapter1516 ra1516 = (ResourceAdapter1516)ra;
+
+ int mcfs = ijmd.getConnectionDefinitions() != null ? ijmd.getConnectionDefinitions().size() : 0;
+ int aos = ijmd.getAdminObjects() != null ? ijmd.getAdminObjects().size() : 0;
+ boolean inflow = false;
+
+ if (mcfs == 0)
+ {
+ if (ra1516.getOutboundResourceadapter() != null)
+ {
+ mcfs = ra1516.getOutboundResourceadapter().getConnectionDefinitions() != null ?
+ ra1516.getOutboundResourceadapter().getConnectionDefinitions().size() : 0;
+ }
+ }
+
+ if (aos == 0)
+ {
+ aos = ra1516.getAdminObjects() != null ? ra1516.getAdminObjects().size() : 0;
+ }
+
+ if (ra1516.getInboundResourceadapter() != null &&
+ ra1516.getInboundResourceadapter().getMessageadapter() != null &&
+ ra1516.getInboundResourceadapter().getMessageadapter().getMessagelisteners() != null &&
+ ra1516.getInboundResourceadapter().getMessageadapter().getMessagelisteners().size() > 0)
+ {
+ inflow = true;
+ }
+
+ return mcfs >= 1 || aos >= 1 || inflow;
+ }
+ }
+
if (ra instanceof ResourceAdapter10)
{
return true;
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java 2011-08-08 16:14:51 UTC (rev 111959)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployer.java 2011-08-08 16:33:05 UTC (rev 111960)
@@ -264,6 +264,9 @@
IronJacamar ijmd = mdr.getIronJacamar(deployment.toExternalForm());
File root = mdr.getRoot(deployment.toExternalForm());
+ if (cmd != null)
+ cmd = (Connector)cmd.copy();
+
cmd = (new Merger()).mergeConnectorWithCommonIronJacamar(raxml, cmd);
// Create classloader
URL[] urls = getUrls(root);
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployment.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployment.java 2011-08-08 16:14:51 UTC (rev 111959)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RaXmlDeployment.java 2011-08-08 16:33:05 UTC (rev 111960)
@@ -25,7 +25,6 @@
import org.jboss.jca.core.api.management.Connector;
import org.jboss.jca.core.api.management.ManagementRepository;
import org.jboss.jca.core.spi.mdr.MetadataRepository;
-import org.jboss.jca.core.spi.mdr.NotFoundException;
import org.jboss.jca.core.spi.naming.JndiStrategy;
import org.jboss.jca.core.spi.rar.ResourceAdapterRepository;
import org.jboss.jca.core.spi.transaction.recovery.XAResourceRecovery;
@@ -45,9 +44,6 @@
*/
public class RaXmlDeployment extends AbstractFungalDeployment
{
- /** The resource adapter deployment */
- private URL raDeployment;
-
/**
* Constructor
* @param deployment The deployment
@@ -85,54 +81,5 @@
super(deployment, deploymentName, true, ra, raKey, jndiStrategy, mdr, resourceAdapterRepository,
cfs, cfJndis, aos, aoJndis, recoveryModules, recoveryRegistry, managementRepository,
connector, server, objectNames, cl, log);
-
- this.raDeployment = raDeployment;
}
-
- /**
- * Stop
- */
- @Override
- public void stop()
- {
- super.stop();
-
- log.debug("Undeploying: " + deployment.toExternalForm());
-
- if (mdr != null && cfs != null && cfJndis != null)
- {
- for (int i = 0; i < cfs.length; i++)
- {
- try
- {
- String cf = cfs[i].getClass().getName();
- String jndi = cfJndis[i];
-
- mdr.unregisterJndiMapping(raDeployment.toExternalForm(), cf, jndi);
- }
- catch (NotFoundException nfe)
- {
- log.warn("Exception during unregistering deployment", nfe);
- }
- }
- }
-
- if (mdr != null && aos != null && aoJndis != null)
- {
- for (int i = 0; i < aos.length; i++)
- {
- try
- {
- String ao = aos[i].getClass().getName();
- String jndi = aoJndis[i];
-
- mdr.unregisterJndiMapping(raDeployment.toExternalForm(), ao, jndi);
- }
- catch (NotFoundException nfe)
- {
- log.warn("Exception during unregistering deployment", nfe);
- }
- }
- }
- }
}
More information about the jboss-cvs-commits
mailing list