[jboss-svn-commits] JBL Code SVN: r28192 - labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jul 18 14:53:57 EDT 2009


Author: whitingjr
Date: 2009-07-18 14:53:57 -0400 (Sat, 18 Jul 2009)
New Revision: 28192

Modified:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXAConnectionImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXADatasourceImpl.java
Log:
UPdated implementation.

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXAConnectionImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXAConnectionImpl.java	2009-07-18 18:50:41 UTC (rev 28191)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXAConnectionImpl.java	2009-07-18 18:53:57 UTC (rev 28192)
@@ -14,8 +14,11 @@
 import javax.sql.XAConnection;
 import javax.transaction.xa.XAResource;
 
+import uk.ac.ncl.sdia.a8905943.stm.STM;
+
 public class STMXAConnectionImpl implements XAConnection
 {
+   private final STM stm ;
 
    @Override
    public XAResource getXAResource() throws SQLException
@@ -65,5 +68,11 @@
       // FIXME removeStatementEventListener
 
    }
+   
+   public STMXAConnectionImpl(STM stransactionalm)
+   {
+      this.stm = stransactionalm;
 
+   }
+
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXADatasourceImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXADatasourceImpl.java	2009-07-18 18:50:41 UTC (rev 28191)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXADatasourceImpl.java	2009-07-18 18:53:57 UTC (rev 28192)
@@ -7,26 +7,63 @@
 package uk.ac.ncl.sdia.a8905943.persistence.xa;
 
 import java.io.PrintWriter;
+import java.io.Serializable;
 import java.sql.SQLException;
+import java.util.concurrent.ConcurrentHashMap;
 
+import javax.naming.NamingException;
+import javax.naming.Reference;
+import javax.naming.Referenceable;
+import javax.naming.StringRefAddr;
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
 
-public class STMXADatasourceImpl implements XADataSource
+import org.apache.commons.lang.StringUtils;
+
+import uk.ac.ncl.sdia.a8905943.stm.STM;
+
+public class STMXADatasourceImpl implements XADataSource, Serializable
 {
+   private String serverName = StringUtils.EMPTY;
+   private String databaseName = StringUtils.EMPTY;
+   private static final String SERVER_NAME = "serverName";
+   private static final String DATABASE_NAME = "databaseName";
+   private static final ConcurrentHashMap<String, STM> stmDatabases = new ConcurrentHashMap<String, STM>();
 
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 2341586268344164513L;
+
    @Override
    public XAConnection getXAConnection() throws SQLException
    {
-      // FIXME getXAConnection
-      return new STMXAConnectionImpl();
+      STMXAConnectionImpl returnValue = null;
+      if (stmDatabases.contains(getDatabaseName()))
+      {
+         returnValue = new STMXAConnectionImpl(stmDatabases.get(getDatabaseName()));
+      }
+      else
+      {// the stm does not exist create an instance and attempt to put it into the map
+         STM newSTM = new STM();
+         STM concurrentSTM = stmDatabases.putIfAbsent(getDatabaseName(), newSTM);
+         if (null == concurrentSTM)
+         {// the database has been created by this thread
+            returnValue = new STMXAConnectionImpl( newSTM);
+         }
+         else
+         {// another thread has beaten us, use it's instance instead
+            returnValue = new STMXAConnectionImpl (concurrentSTM);
+         }
+      }
+      return returnValue;
    }
 
    @Override
+   /**
+    * Method provided to support connections that use authentication
+    */
    public XAConnection getXAConnection(String user, String password) throws SQLException
-   {
-      // FIXME getXAConnection
-      return new STMXAConnectionImpl();
+   {// in this implementation ignore the credentials
+      return getXAConnection();
    }
 
    @Override
@@ -57,4 +94,33 @@
       
    }
 
+   @Override
+   public Reference getReference() throws NamingException
+   {
+      Reference returnValue = new Reference(this.getClass().getName(), "", null);
+      returnValue.add(new StringRefAddr(SERVER_NAME, getServerName()));
+      returnValue.add(new StringRefAddr(DATABASE_NAME, getDatabaseName()));
+      return returnValue;
+   }
+
+   public String getServerName()
+   {
+      return serverName;
+   }
+
+   public String getDatabaseName()
+   {
+      return databaseName;
+   }
+
+   public void setServerName(String serverName)
+   {
+      this.serverName = serverName;
+   }
+
+   public void setDatabaseName(String databaseName)
+   {
+      this.databaseName = databaseName;
+   }
+
 }



More information about the jboss-svn-commits mailing list