[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