[jboss-cvs] JBossAS SVN: r101227 - in projects/jboss-jca/trunk: core/src/main/java/org/jboss/jca/core/bootstrapcontext and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Feb 22 00:45:35 EST 2010
Author: jesper.pedersen
Date: 2010-02-22 00:45:35 -0500 (Mon, 22 Feb 2010)
New Revision: 101227
Modified:
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/api/CloneableBootstrapContext.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/api/WorkManager.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/bootstrapcontext/BaseCloneableBootstrapContext.java
projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/workmanager/WorkManagerImpl.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java
Log:
[JBJCA-236] Provide BootstrapContext implementation
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/api/CloneableBootstrapContext.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/api/CloneableBootstrapContext.java 2010-02-22 05:44:24 UTC (rev 101226)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/api/CloneableBootstrapContext.java 2010-02-22 05:45:35 UTC (rev 101227)
@@ -24,7 +24,6 @@
import javax.resource.spi.BootstrapContext;
import javax.resource.spi.XATerminator;
-import javax.resource.spi.work.WorkManager;
import javax.transaction.TransactionSynchronizationRegistry;
/**
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/api/WorkManager.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/api/WorkManager.java 2010-02-22 05:44:24 UTC (rev 101226)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/api/WorkManager.java 2010-02-22 05:45:35 UTC (rev 101227)
@@ -77,4 +77,12 @@
* @param v The value
*/
public void setSpecCompliant(boolean v);
+
+ /**
+ * Clone the WorkManager implementation
+ * @return A copy of the implementation
+ * @exception CloneNotSupportedException Thrown if the copy operation isn't supported
+ *
+ */
+ public WorkManager clone() throws CloneNotSupportedException;
}
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/bootstrapcontext/BaseCloneableBootstrapContext.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/bootstrapcontext/BaseCloneableBootstrapContext.java 2010-02-22 05:44:24 UTC (rev 101226)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/bootstrapcontext/BaseCloneableBootstrapContext.java 2010-02-22 05:45:35 UTC (rev 101227)
@@ -23,6 +23,7 @@
package org.jboss.jca.core.bootstrapcontext;
import org.jboss.jca.core.api.CloneableBootstrapContext;
+import org.jboss.jca.core.api.WorkManager;
import java.util.HashSet;
import java.util.Set;
@@ -33,7 +34,6 @@
import javax.resource.spi.work.SecurityContext;
import javax.resource.spi.work.TransactionContext;
import javax.resource.spi.work.WorkContext;
-import javax.resource.spi.work.WorkManager;
import javax.transaction.TransactionSynchronizationRegistry;
/**
@@ -152,7 +152,7 @@
{
BaseCloneableBootstrapContext bcbc = new BaseCloneableBootstrapContext();
bcbc.setTransactionSynchronizationRegistry(getTransactionSynchronizationRegistry());
- bcbc.setWorkManager(getWorkManager());
+ bcbc.setWorkManager(getWorkManager().clone());
bcbc.setXATerminator(getXATerminator());
return bcbc;
Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/workmanager/WorkManagerImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/workmanager/WorkManagerImpl.java 2010-02-22 05:44:24 UTC (rev 101226)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/workmanager/WorkManagerImpl.java 2010-02-22 05:45:35 UTC (rev 101227)
@@ -182,6 +182,23 @@
}
/**
+ * Clone the WorkManager implementation
+ * @return A copy of the implementation
+ * @exception CloneNotSupportedException Thrown if the copy operation isn't supported
+ *
+ */
+ public WorkManager clone() throws CloneNotSupportedException
+ {
+ WorkManager wm = new WorkManagerImpl();
+ wm.setShortRunningThreadPool(getShortRunningThreadPool());
+ wm.setLongRunningThreadPool(getLongRunningThreadPool());
+ wm.setXATerminator(getXATerminator());
+ wm.setSpecCompliant(isSpecCompliant());
+
+ return wm;
+ }
+
+ /**
* {@inheritDoc}
*/
public void doWork(Work work) throws WorkException
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 2010-02-22 05:44:24 UTC (rev 101226)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/RADeployer.java 2010-02-22 05:45:35 UTC (rev 101227)
@@ -59,6 +59,7 @@
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.naming.Context;
@@ -112,6 +113,9 @@
/** Default bootstrap context */
private static CloneableBootstrapContext defaultBootstrapContext = null;
+ /** Bootstrap contexts */
+ private static Map<String, CloneableBootstrapContext> bootstrapContexts = null;
+
/**
* Constructor
*/
@@ -228,6 +232,24 @@
}
/**
+ * Set the bootstrap context map
+ * @param value The value
+ */
+ public synchronized void setBootstrapContexts(Map<String, CloneableBootstrapContext> value)
+ {
+ bootstrapContexts = value;
+ }
+
+ /**
+ * Get the bootstrap context map
+ * @return The handle
+ */
+ public synchronized Map<String, CloneableBootstrapContext> getBootstrapContexts()
+ {
+ return bootstrapContexts;
+ }
+
+ /**
* Deploy
* @param url The url
* @param parent The parent classloader
@@ -556,8 +578,18 @@
// Activate deployment
if (resourceAdapter != null)
- startContext(resourceAdapter);
+ {
+ String bootstrapIdentifier = null;
+ if (jrmd != null && jrmd instanceof JBossRA20Base)
+ {
+ JBossRA20Base jrmd20 = (JBossRA20Base)jrmd;
+ bootstrapIdentifier = jrmd20.getBootstrapContext();
+ }
+
+ startContext(resourceAdapter, bootstrapIdentifier);
+ }
+
log.info("Deployed: " + url.toExternalForm());
return new RADeployment(url, jndiNames, cl);
@@ -585,18 +617,30 @@
/**
* Start the resource adapter
* @param resourceAdapter The resource adapter
+ * @param bootstrapIdentifier The bootstrap context identifier; may be <code>null</code>
* @throws DeployException Thrown if the resource adapter cant be started
*/
@SuppressWarnings("unchecked")
- private void startContext(ResourceAdapter resourceAdapter) throws DeployException
+ private void startContext(ResourceAdapter resourceAdapter, String bootstrapIdentifier) throws DeployException
{
try
{
Class clz = resourceAdapter.getClass();
Method start = clz.getMethod("start", new Class[] {BootstrapContext.class});
- CloneableBootstrapContext cbc = defaultBootstrapContext.clone();
+ CloneableBootstrapContext cbc = null;
+ if (bootstrapIdentifier != null && bootstrapContexts != null)
+ {
+ CloneableBootstrapContext bc = bootstrapContexts.get(bootstrapIdentifier);
+
+ if (bc != null)
+ cbc = bc.clone();
+ }
+
+ if (cbc == null)
+ cbc = defaultBootstrapContext.clone();
+
start.invoke(resourceAdapter, new Object[] {cbc});
}
catch (InvocationTargetException ite)
@@ -729,11 +773,22 @@
}
finally
{
- context.close(); // release connection
+ context.close();
}
}
+ /**
+ * Start
+ */
+ public void start()
+ {
+ if (defaultBootstrapContext == null)
+ throw new IllegalStateException("DefaultBootstrapContext not defined");
+ if (printStream == null)
+ throw new IllegalStateException("PrintStream not defined");
+ }
+
/**
* Clone
* @return The copy of the object
More information about the jboss-cvs-commits
mailing list