[jboss-cvs] JBossAS SVN: r112565 - in projects/jboss-jca/trunk: core/src/main/java/org/jboss/jca/core/spi/transaction/usertx and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jan 9 11:19:33 EST 2012


Author: jesper.pedersen
Date: 2012-01-09 11:19:31 -0500 (Mon, 09 Jan 2012)
New Revision: 112565

Added:
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/spi/transaction/usertx/UserTransactionProvider.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/jbossts/UserTransactionProviderImpl.java
Modified:
   projects/jboss-jca/trunk/build.xml
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/spi/transaction/usertx/UserTransactionRegistry.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/jbossts/UserTransactionRegistryImpl.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/noopts/UserTransactionImpl.java
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/noopts/UserTransactionRegistryImpl.java
   projects/jboss-jca/trunk/core/src/test/resources/transaction.xml
   projects/jboss-jca/trunk/embedded/src/main/resources/noop-transaction.xml
   projects/jboss-jca/trunk/embedded/src/main/resources/transaction.xml
   projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/transaction.xml
Log:
User transaction provider fixes

Modified: projects/jboss-jca/trunk/build.xml
===================================================================
--- projects/jboss-jca/trunk/build.xml	2012-01-09 06:37:50 UTC (rev 112564)
+++ projects/jboss-jca/trunk/build.xml	2012-01-09 16:19:31 UTC (rev 112565)
@@ -139,7 +139,7 @@
   <property name="version.jboss.stdio" value="1.0.1.GA"/>
   <property name="version.jboss.threads" value="2.0.0.GA"/>
   <property name="version.jboss.ts" value="4.16.0.Beta1"/>
-  <property name="version.jboss.ts.spi" value="7.0.0.CR1"/>
+  <property name="version.jboss.ts.spi" value="7.0.0.CR2"/>
   <property name="version.jdepend" value="2.9.1"/>
   <property name="version.jetty" value="7.4.3.v20110701"/>
   <property name="version.jetty.servlet" value="6.1.14"/>

Added: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/spi/transaction/usertx/UserTransactionProvider.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/spi/transaction/usertx/UserTransactionProvider.java	                        (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/spi/transaction/usertx/UserTransactionProvider.java	2012-01-09 16:19:31 UTC (rev 112565)
@@ -0,0 +1,36 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, 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.core.spi.transaction.usertx;
+
+/**
+ * UserTransactionProvider.
+ * 
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public interface UserTransactionProvider
+{
+   /**
+    * Set the user transaction registry
+    * @param v The value
+    */
+   public void setUserTransactionRegistry(UserTransactionRegistry v);
+}

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/spi/transaction/usertx/UserTransactionRegistry.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/spi/transaction/usertx/UserTransactionRegistry.java	2012-01-09 06:37:50 UTC (rev 112564)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/spi/transaction/usertx/UserTransactionRegistry.java	2012-01-09 16:19:31 UTC (rev 112565)
@@ -39,4 +39,21 @@
     * @param listener The listener
     */
    public void removeListener(UserTransactionListener listener);
+
+   /**
+    * Add a provider
+    * @param provider The provider
+    */
+   public void addProvider(UserTransactionProvider provider);
+   
+   /**
+    * Remove a provider
+    * @param provider The provider
+    */
+   public void removeProvider(UserTransactionProvider provider);
+
+   /**
+    * Fire a user transaction started event
+    */
+   public void userTransactionStarted();
 }

Added: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/jbossts/UserTransactionProviderImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/jbossts/UserTransactionProviderImpl.java	                        (rev 0)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/jbossts/UserTransactionProviderImpl.java	2012-01-09 16:19:31 UTC (rev 112565)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, 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.core.tx.jbossts;
+
+/**
+ * UserTransactionProvider implementation
+ * 
+ * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
+ */
+public class UserTransactionProviderImpl implements org.jboss.jca.core.spi.transaction.usertx.UserTransactionProvider,
+                                                    org.jboss.tm.usertx.UserTransactionProvider
+{
+   /** The user transaction provider */
+   private org.jboss.jca.core.spi.transaction.usertx.UserTransactionProvider utp;
+
+   /**
+    * Constructor
+    * @param utp The user transaction provider
+    */
+   public UserTransactionProviderImpl(org.jboss.jca.core.spi.transaction.usertx.UserTransactionProvider utp)
+   {
+      this.utp = utp;
+   }
+
+   /**
+    * Set the user transaction registry
+    * @param v The value
+    */
+   public void setUserTransactionRegistry(org.jboss.jca.core.spi.transaction.usertx.UserTransactionRegistry v)
+   {
+      utp.setUserTransactionRegistry(v);
+   }
+
+   /**
+    * Set the user transaction registry
+    * @param v The value
+    */
+   public void setTransactionRegistry(org.jboss.tm.usertx.UserTransactionRegistry v)
+   {
+      ((org.jboss.tm.usertx.UserTransactionProvider)utp).setTransactionRegistry(v);
+   }
+}

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/jbossts/UserTransactionRegistryImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/jbossts/UserTransactionRegistryImpl.java	2012-01-09 06:37:50 UTC (rev 112564)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/jbossts/UserTransactionRegistryImpl.java	2012-01-09 16:19:31 UTC (rev 112565)
@@ -22,6 +22,7 @@
 package org.jboss.jca.core.tx.jbossts;
 
 import org.jboss.jca.core.spi.transaction.usertx.UserTransactionListener;
+import org.jboss.jca.core.spi.transaction.usertx.UserTransactionProvider;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -40,6 +41,9 @@
    /** Listener map */
    private Map<UserTransactionListener, UserTransactionListenerImpl> listeners;
 
+   /** Provider map */
+   private Map<UserTransactionProvider, UserTransactionProviderImpl> providers;
+
    /**
     * Constructor
     * @param delegator The delegator instance
@@ -49,6 +53,8 @@
       this.delegator = delegator;
       this.listeners =
          Collections.synchronizedMap(new HashMap<UserTransactionListener, UserTransactionListenerImpl>());
+      this.providers =
+         Collections.synchronizedMap(new HashMap<UserTransactionProvider, UserTransactionProviderImpl>());
    }
 
    /**
@@ -77,4 +83,39 @@
          listeners.remove(listener);
       }
    }
+
+   /**
+    * Add a provider
+    * @param provider The provider
+    */
+   public void addProvider(UserTransactionProvider provider)
+   {
+      UserTransactionProviderImpl impl = new UserTransactionProviderImpl(provider);
+
+      delegator.addProvider(impl);
+      providers.put(provider, impl);
+   }
+   
+   /**
+    * Remove a provider
+    * @param provider The provider
+    */
+   public void removeProvider(UserTransactionProvider provider)
+   {
+      UserTransactionProviderImpl impl = providers.get(provider);
+
+      if (impl != null)
+      {
+         delegator.removeProvider(impl);
+         providers.remove(provider);
+      }
+   }
+
+   /**
+    * Fire a user transaction started event
+    */
+   public void userTransactionStarted()
+   {
+      delegator.userTransactionStarted();
+   }
 }

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/noopts/UserTransactionImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/noopts/UserTransactionImpl.java	2012-01-09 06:37:50 UTC (rev 112564)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/noopts/UserTransactionImpl.java	2012-01-09 16:19:31 UTC (rev 112565)
@@ -21,6 +21,9 @@
  */
 package org.jboss.jca.core.tx.noopts;
 
+import org.jboss.jca.core.spi.transaction.usertx.UserTransactionProvider;
+import org.jboss.jca.core.spi.transaction.usertx.UserTransactionRegistry;
+
 import java.io.Serializable;
 
 import javax.naming.Context;
@@ -38,11 +41,12 @@
  * A transaction manager implementation
  * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
  */
-public class UserTransactionImpl implements UserTransaction, Serializable
+public class UserTransactionImpl implements UserTransactionProvider, UserTransaction, Serializable
 {
    private static final long serialVersionUID = 1L;
    private static final String JNDI_NAME = "java:/UserTransaction";
    private TxRegistry registry;
+   private UserTransactionRegistry userTransactionRegistry;
 
    /**
     * Constructor
@@ -50,6 +54,7 @@
    public UserTransactionImpl()
    {
       this.registry = null;
+      this.userTransactionRegistry = null;
    }
 
    /**
@@ -62,6 +67,15 @@
    }
 
    /**
+    * Set the user transaction registry
+    * @param v The value
+    */
+   public void setUserTransactionRegistry(UserTransactionRegistry v)
+   {
+      userTransactionRegistry = v;
+   }
+
+   /**
     * {@inheritDoc}
     */
    public void begin() throws NotSupportedException,
@@ -73,6 +87,9 @@
          throw new NotSupportedException();
 
       registry.startTransaction();
+
+      if (userTransactionRegistry != null)
+         userTransactionRegistry.userTransactionStarted();
    }
 
    /**

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/noopts/UserTransactionRegistryImpl.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/noopts/UserTransactionRegistryImpl.java	2012-01-09 06:37:50 UTC (rev 112564)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/tx/noopts/UserTransactionRegistryImpl.java	2012-01-09 16:19:31 UTC (rev 112565)
@@ -22,12 +22,15 @@
 package org.jboss.jca.core.tx.noopts;
 
 import org.jboss.jca.core.spi.transaction.usertx.UserTransactionListener;
+import org.jboss.jca.core.spi.transaction.usertx.UserTransactionProvider;
 import org.jboss.jca.core.spi.transaction.usertx.UserTransactionRegistry;
 
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.transaction.SystemException;
+
 /**
  * UserTransactionRegistry implementation.
  * 
@@ -38,12 +41,16 @@
    /** Listeners */
    private Set<UserTransactionListener> listeners;
 
+   /** Providers */
+   private Set<UserTransactionProvider> providers;
+
    /**
     * Constructor
     */
    public UserTransactionRegistryImpl()
    {
       this.listeners = Collections.synchronizedSet(new HashSet<UserTransactionListener>());
+      this.providers = Collections.synchronizedSet(new HashSet<UserTransactionProvider>());
    }
 
    /**
@@ -63,4 +70,46 @@
       if (listener != null)
          listeners.remove(listener);
    }
+
+   /**
+    * {@inheritDoc}
+    */
+   public void addProvider(UserTransactionProvider provider)
+   {
+      if (provider != null)
+      {
+         provider.setUserTransactionRegistry(this);
+         providers.add(provider);
+      }
+   }
+   
+   /**
+    * {@inheritDoc}
+    */
+   public void removeProvider(UserTransactionProvider provider)
+   {
+      if (provider != null)
+      {
+         provider.setUserTransactionRegistry(null);
+         providers.remove(provider);
+      }
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   public void userTransactionStarted()
+   {
+      for (UserTransactionListener utl : listeners)
+      {
+         try
+         {
+            utl.userTransactionStarted();
+         }
+         catch (SystemException se)
+         {
+            // Ignore
+         }
+      }
+   }
 }

Modified: projects/jboss-jca/trunk/core/src/test/resources/transaction.xml
===================================================================
--- projects/jboss-jca/trunk/core/src/test/resources/transaction.xml	2012-01-09 06:37:50 UTC (rev 112564)
+++ projects/jboss-jca/trunk/core/src/test/resources/transaction.xml	2012-01-09 16:19:31 UTC (rev 112565)
@@ -211,7 +211,7 @@
   <!-- The provider for default in process UserTransactions -->
   <bean name="DefaultUserTransactionprovider" class="org.jboss.tm.usertx.client.ServerVMClientUserTransaction">
     <constructor factoryClass="org.jboss.tm.usertx.client.ServerVMClientUserTransaction" factoryMethod="getSingleton"/>
-    <depends>TransactionManager</depends>
+    <property name="TransactionManager"><inject bean="RealTransactionManager"/></property>
   </bean>
   
   <!-- Bind java:/UserTransaction -->

Modified: projects/jboss-jca/trunk/embedded/src/main/resources/noop-transaction.xml
===================================================================
--- projects/jboss-jca/trunk/embedded/src/main/resources/noop-transaction.xml	2012-01-09 06:37:50 UTC (rev 112564)
+++ projects/jboss-jca/trunk/embedded/src/main/resources/noop-transaction.xml	2012-01-09 16:19:31 UTC (rev 112565)
@@ -52,6 +52,13 @@
   <bean name="UserTransactionRegistry"
         interface="org.jboss.jca.core.spi.transaction.usertx.UserTransactionRegistry" 
         class="org.jboss.jca.core.tx.noopts.UserTransactionRegistryImpl">
+    <!-- Register providers -->
+    <incallback method="addProvider"/>
+    <uncallback method="removeProvider"/>
+
+    <!-- Register listeners -->
+    <incallback method="addListener"/>
+    <uncallback method="removeListener"/>
   </bean>
 
   <!-- Transaction integration -->

Modified: projects/jboss-jca/trunk/embedded/src/main/resources/transaction.xml
===================================================================
--- projects/jboss-jca/trunk/embedded/src/main/resources/transaction.xml	2012-01-09 06:37:50 UTC (rev 112564)
+++ projects/jboss-jca/trunk/embedded/src/main/resources/transaction.xml	2012-01-09 16:19:31 UTC (rev 112565)
@@ -211,7 +211,7 @@
   <!-- The provider for default in process UserTransactions -->
   <bean name="DefaultUserTransactionprovider" class="org.jboss.tm.usertx.client.ServerVMClientUserTransaction">
     <constructor factoryClass="org.jboss.tm.usertx.client.ServerVMClientUserTransaction" factoryMethod="getSingleton"/>
-    <depends>TransactionManager</depends>
+    <property name="TransactionManager"><inject bean="RealTransactionManager"/></property>
   </bean>
   
   <!-- Bind java:/UserTransaction -->

Modified: projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/transaction.xml
===================================================================
--- projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/transaction.xml	2012-01-09 06:37:50 UTC (rev 112564)
+++ projects/jboss-jca/trunk/sjc/src/main/resources/bootstrap/transaction.xml	2012-01-09 16:19:31 UTC (rev 112565)
@@ -164,7 +164,7 @@
   <!-- The provider for default in process UserTransactions -->
   <bean name="DefaultUserTransactionProvider" class="org.jboss.tm.usertx.client.ServerVMClientUserTransaction">
     <constructor factoryClass="org.jboss.tm.usertx.client.ServerVMClientUserTransaction" factoryMethod="getSingleton"/>
-    <depends>TransactionManager</depends>
+    <property name="TransactionManager"><inject bean="RealTransactionManager"/></property>
   </bean>
   
   <!-- Bind java:/UserTransaction -->



More information about the jboss-cvs-commits mailing list