[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