[jboss-svn-commits] JBL Code SVN: r28944 - in labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main: java/uk/ac/ncl/sdia/a8905943/handle and 11 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Aug 15 15:00:31 EDT 2009


Author: whitingjr
Date: 2009-08-15 15:00:30 -0400 (Sat, 15 Aug 2009)
New Revision: 28944

Added:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldReadParameter.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldWriteParameter.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadUncommittedIsolationImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/cluster-cfg.xml
Removed:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/History.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/ObjectStoreManager.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/ResourceManager.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/annotation/STMEntity.java
Modified:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/TransactionFactory.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/TransactedObjectReference.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractIsolation.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/Isolation.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/factory/IsolationFactory.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java
   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/spec/STMTransaction.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/TransactionWriteSet.java
Log:
Added implementation to isolation.

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/TransactionFactory.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/TransactionFactory.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/TransactionFactory.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,5 +1,7 @@
 package uk.ac.ncl.sdia.a8905943.factory;
 
+import java.util.concurrent.atomic.AtomicLong;
+
 import uk.ac.ncl.sdia.a8905943.impl.TransactionImpl;
 import uk.ac.ncl.sdia.a8905943.spec.STMTransaction;
 
@@ -12,11 +14,15 @@
 {
    private static final TransactionFactory factory = new TransactionFactory();
    private final static ThreadLocal<STMTransaction> currentTransaction = new ThreadLocal<STMTransaction>();
+   /**
+    * Used for version numbering transactions
+    */
+   public static final AtomicLong version = new AtomicLong(); 
    public static STMTransaction getCurrentTransaction(boolean create)
    {
       if (null == currentTransaction.get() && create)
       {
-         currentTransaction.set(new TransactionImpl());
+         currentTransaction.set(new TransactionImpl(version.incrementAndGet()));
       }
       return currentTransaction.get();
    }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/TransactedObjectReference.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/TransactedObjectReference.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/TransactedObjectReference.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -6,18 +6,21 @@
  */
 package uk.ac.ncl.sdia.a8905943.handle;
 
-public class TransactedObjectReference<T>
+public class TransactedObjectReference
 {
    final Long lookupIdentity;
-   final T value;
+   private Object value;
+   private Long nextIdentity;
+   private long version;
    
-   public TransactedObjectReference(Long identity, T value)
+   public TransactedObjectReference(Long identity, Object value, long version)
    {
       lookupIdentity = identity;
       this.value = value; 
+      this.version = version;
    }
 
-   public T getValue()
+   public Object getValue()
    {
       return value;
    }
@@ -26,4 +29,29 @@
    {
       return lookupIdentity;
    }
+
+   public Long getNextIdentity()
+   {
+      return nextIdentity;
+   }
+
+   public void setNextIdentity(Long nextIdentity)
+   {
+      this.nextIdentity = nextIdentity;
+   }
+
+   public long getVersion()
+   {
+      return version;
+   }
+
+   public void setVersion(long version)
+   {
+      this.version = version;
+   }
+
+   public void setValue(Object value)
+   {
+      this.value = value;
+   }
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -6,74 +6,52 @@
  */
 package uk.ac.ncl.sdia.a8905943.impl;
 
-import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
+import java.util.HashMap;
+import java.util.Map;
 
-import javax.transaction.RollbackException;
 import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
 
 import org.apache.log4j.Logger;
 
-import uk.ac.ncl.sdia.a8905943.model.TransactionStatus;
+import uk.ac.ncl.sdia.a8905943.handle.TransactedObjectReference;
+import uk.ac.ncl.sdia.a8905943.isolation.FieldReadParameter;
+import uk.ac.ncl.sdia.a8905943.isolation.FieldWriteParameter;
+import uk.ac.ncl.sdia.a8905943.isolation.Isolation;
 import uk.ac.ncl.sdia.a8905943.spec.STMTransaction;
-import uk.ac.ncl.sdia.a8905943.tracker.TransactionReadSet;
-import uk.ac.ncl.sdia.a8905943.tracker.TransactionWriteSet;
+
 /**
  * The purpose of this object is to perform the transaction functionality.
  * 
  * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
  * @version $Revision: 1.1 $
  */
-public class TransactionImpl implements STMTransaction{
+public class TransactionImpl implements STMTransaction
+{
 
    // status available for inspection
-   private volatile int status = Status.STATUS_NO_TRANSACTION; 
+   private volatile int status = Status.STATUS_NO_TRANSACTION;
+
+   protected final Map<Long, TransactedObjectReference> deferredReads = new HashMap<Long, TransactedObjectReference>();
+
+   protected final Map<Long, TransactedObjectReference> deferredWrites = new HashMap<Long, TransactedObjectReference>();
+
    /**
-    * the statusModifer should be used for updating the status field. Any part of the system that is responsible
-    * for transitioning a transaction through it's states should use this field.
+    * The version number of this transaction
     */
-	private final AtomicReferenceFieldUpdater<Transaction, TransactionStatus> statusModifier = AtomicReferenceFieldUpdater.newUpdater(Transaction.class, TransactionStatus.class, "status");
-	/**
-	 * Nested writes are a record of writes performed by nested classes. Access to them is necessary so this transaction is not isolated completely. 
-	 */
-	private final TransactionWriteSet nestedWrites = new TransactionWriteSet();
-	/**
-	 * This TM system deferred update to synchronize updates. This field stores all the updates performed by this transaction. 
-	 */
-    private final TransactionWriteSet writeSet = new TransactionWriteSet();
-    /**
-     * This TM needs to keep it's readset for validation to check for conflicts.
-     */
-    private final TransactionReadSet readSet = new TransactionReadSet();
-    private static final Logger logger = Logger.getLogger(TransactionImpl.class);
-    
-	@Override
-	public void commit() {
-		 
-		// make object versioned fields visible to all other transactions (depending on isolation)
-		// make versioned collection objects fields visible to all other transactions (depending on isolation)
-		// change status
-		// notify all transactions committed, cleanup reader and writer traces.
-	}
 
-	
+   private final long version;
 
-   @Override
-   public STMTransaction readField()
+   private static final Logger logger = Logger.getLogger(TransactionImpl.class);
+
+   private Isolation isolation;
+
+   public void commit()
    {
-      // FIXME readField
-      return null;
-   }
 
-   @Override
-   public STMTransaction writeField()
-   {
-      // FIXME writeField
-      return null;
+      // make object versioned fields visible to all other transactions (depending on isolation)
+      // make versioned collection objects fields visible to all other transactions (depending on isolation)
+      // change status
+      // notify all transactions committed, cleanup reader and writer traces.
    }
 
    @Override
@@ -83,12 +61,37 @@
       {
          logger.info("Starting transaction.");
       }
+      if (null == this.isolation)
+      {
+         throw new RuntimeException("The STM transaction is not ready to be started.");
+      }
+      this.status = Status.STATUS_ACTIVE;
    }
-   
-   public TransactionImpl()
+
+   public TransactionImpl(long version)
    {
-      //TODO: incomplete
+      this.version = version;
    }
 
+   @Override
+   public Object read(FieldReadParameter fieldRead)
+   {
+      fieldRead.setReads(this.deferredReads);
+      return this.isolation.read(fieldRead);
+   }
+
+   @Override
+   public Boolean write(FieldWriteParameter fieldWrite)
+   {
+      fieldWrite.setWrites(this.deferredWrites);
+      fieldWrite.setVersion(this.version);
+      return this.isolation.write(fieldWrite);
+   }
+
+   @Override
+   public void setIsolationLevel(Isolation isolation)
+   {
+      this.isolation = isolation;
+   }
+
 }
-

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractIsolation.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractIsolation.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractIsolation.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,20 +1,22 @@
 package uk.ac.ncl.sdia.a8905943.isolation;
 
-import uk.ac.ncl.sdia.a8905943.spec.History;
-import uk.ac.ncl.sdia.a8905943.tracker.TransactionReadSet;
 import uk.ac.ncl.sdia.a8905943.tracker.TransactionWriteSet;
 
 public abstract class AbstractIsolation implements Isolation {
 
-	protected History readhistory;
-	protected History writeHistory;
-	
 	public TransactionWriteSet getNestedTransactionWriteSet()
 	{
 	   return null;
 	}
+	@Override
+	public boolean supportsRepeatableRead()
+	{// default behaviour
+	   return false;
+	}
+	@Override
+	public boolean supportsWriteSkew()
+	{// default behaviour
+	   return false;
+	}
 	
-	public abstract Object read( TransactionReadSet currentReadSet, TransactionReadSet nested, Long lookupIdentity);
-	
-	public abstract Object write(TransactionWriteSet currentWriteSet, Object newObject);
 }

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldReadParameter.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldReadParameter.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldReadParameter.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -0,0 +1,76 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.isolation;
+
+import java.util.Map;
+
+import uk.ac.ncl.sdia.a8905943.handle.TransactedObjectReference;
+
+public class FieldReadParameter
+{
+   private Map<Long, TransactedObjectReference> reads;
+
+   private Map<Long, TransactedObjectReference> writes;
+
+   private Map<Long, TransactedObjectReference> objectStore;
+
+   private long handle;
+
+   public FieldReadParameter(Map<Long, TransactedObjectReference> reads, Map<Long, TransactedObjectReference> writes,
+         Map<Long, TransactedObjectReference> objectStore, long handle)
+   {
+      this.reads = reads;
+      this.writes = writes;
+      this.objectStore = objectStore;
+      this.handle = handle;
+   }
+
+   public Map<Long, TransactedObjectReference> getReads()
+   {
+      return reads;
+   }
+
+   public void setReads(Map<Long, TransactedObjectReference> reads)
+   {
+      this.reads = reads;
+   }
+
+   public Map<Long, TransactedObjectReference> getWrites()
+   {
+      return writes;
+   }
+
+   public void setWrites(Map<Long, TransactedObjectReference> writes)
+   {
+      this.writes = writes;
+   }
+
+   public Map<Long, TransactedObjectReference> getObjectStore()
+   {
+      return objectStore;
+   }
+
+   public void setObjectStore(Map<Long, TransactedObjectReference> objectStore)
+   {
+      this.objectStore = objectStore;
+   }
+
+   public long getHandle()
+   {
+      return handle;
+   }
+
+   public void setHandle(long handle)
+   {
+      this.handle = handle;
+   }
+   
+   public FieldReadParameter(long handle)
+   {
+      this.handle = handle;
+   }
+}
\ No newline at end of file

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldWriteParameter.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldWriteParameter.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldWriteParameter.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -0,0 +1,92 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.isolation;
+
+import java.util.Map;
+
+import uk.ac.ncl.sdia.a8905943.handle.TransactedObjectReference;
+
+public class FieldWriteParameter
+{
+   private Map<Long, TransactedObjectReference> writes;
+
+   private Map<Long, TransactedObjectReference> objectStore;
+
+   private long handle;
+
+   private Object newObject;
+   
+   private long version;
+
+   public FieldWriteParameter(Map<Long, TransactedObjectReference> writes,
+         Map<Long, TransactedObjectReference> objectStore, long handle, Object newObject)
+   {
+      this.writes = writes;
+      this.objectStore = objectStore;
+      this.handle = handle;
+      this.newObject = newObject;
+   }
+
+   public Map<Long, TransactedObjectReference> getWrites()
+   {
+      return writes;
+   }
+
+   public void setWrites(Map<Long, TransactedObjectReference> writes)
+   {
+      this.writes = writes;
+   }
+
+   public Map<Long, TransactedObjectReference> getObjectStore()
+   {
+      return objectStore;
+   }
+
+   public void setObjectStore(Map<Long, TransactedObjectReference> objectStore)
+   {
+      this.objectStore = objectStore;
+   }
+
+   public long getHandle()
+   {
+      return handle;
+   }
+
+   public void setHandle(long handle)
+   {
+      this.handle = handle;
+   }
+
+   public Object getNewObject()
+   {
+      return newObject;
+   }
+
+   public void setNewObject(Object newObject)
+   {
+      this.newObject = newObject;
+   }
+   public FieldWriteParameter()
+   {
+   }
+   
+   public FieldWriteParameter(long handle, Object newObject)
+   {
+      this.handle = handle;
+      this.newObject = newObject;
+   }
+
+   public long getVersion()
+   {
+      return version;
+   }
+
+   public void setVersion(long version)
+   {
+      this.version = version;
+   }
+}
\ No newline at end of file

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/Isolation.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/Isolation.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/Isolation.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,11 +1,23 @@
 package uk.ac.ncl.sdia.a8905943.isolation;
 
 
+
+
 public interface Isolation {
-
 	
 	public boolean supportsRepeatableRead();
 	public boolean supportsWriteSkew();
 	
-	
+	public Object read(FieldReadParameter fieldRead);
+    
+	/**
+	 * Use this method to write a field object to the transaction. 
+	 * This system is a deferred update system so a reference to 
+	 * the 
+	 * @param fieldWrite TODO
+	 * @param currentWriteSet
+	 * 
+	 * @return
+	 */
+    public Boolean write(FieldWriteParameter fieldWrite);
 }

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadUncommittedIsolationImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadUncommittedIsolationImpl.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadUncommittedIsolationImpl.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -0,0 +1,43 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.isolation;
+
+import uk.ac.ncl.sdia.a8905943.tracker.TransactionReadSet;
+import uk.ac.ncl.sdia.a8905943.tracker.TransactionWriteSet;
+
+public class ReadUncommittedIsolationImpl extends AbstractIsolation
+{
+
+   @Override
+   public Object read(TransactionReadSet currentReadSet, TransactionReadSet nested, Long lookupIdentity)
+   {
+      // FIXME read
+      return null;
+   }
+
+   @Override
+   public Object write(TransactionWriteSet currentWriteSet, Object newObject)
+   {
+      // FIXME write
+      return null;
+   }
+
+   @Override
+   public boolean supportsRepeatableRead()
+   {
+      // FIXME supportsRepeatableRead
+      return false;
+   }
+
+   @Override
+   public boolean supportsWriteSkew()
+   {
+      // FIXME supportsWriteSkew
+      return false;
+   }
+
+}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,11 +1,8 @@
 package uk.ac.ncl.sdia.a8905943.isolation;
 
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.log4j.Logger;
 
-import uk.ac.ncl.sdia.a8905943.spec.History;
-import uk.ac.ncl.sdia.a8905943.tracker.TransactionReadSet;
-import uk.ac.ncl.sdia.a8905943.tracker.TransactionWriteSet;
+import uk.ac.ncl.sdia.a8905943.handle.TransactedObjectReference;
 
 /**
  * This object defines the behaviour for reads and writes for a
@@ -17,86 +14,68 @@
  * @version $Revision: 1.1 $
  */
 public final class RepeatableReadIsolationImpl extends AbstractIsolation{
-
+   private static final Logger logger = Logger.getLogger(RepeatableReadIsolationImpl.class);
    // fast lookups
-   protected final Map<Long, Object> reads = new HashMap<Long, Object>();
-   protected final Map<Long, Object> writes = new HashMap<Long, Object>();
-
-	@Override
-	public boolean supportsRepeatableRead() {
-		return true;
-	}
-
-   @Override
-   public boolean supportsWriteSkew()
-   {
-      return false;
-   }
-
+   
    /**
     * Read the value requested. First check for version previously read and
     * return it. If not found then read the shared value, add to have read list.
+    * @param transaction
+    * 
+    * @return
     */
-   public Object read(Long lookupIdentity)
+   public Object read(FieldReadParameter fieldRead)
    {
       Object returnValue = null;
-      /* check for the value initially in the writes, then reads otherwise
-       * retrieve the shared version*/
-      if (writes.containsKey(lookupIdentity))
+      //
+      /* first check the transaction, is the object in the write then read list. if not get from object store
+       * and add to read list  */
+      if (fieldRead.getWrites().containsKey(fieldRead.getHandle()))
       {// found
-         returnValue = writes.get(lookupIdentity);
+         returnValue = fieldRead.getWrites().get(fieldRead.getHandle()).getValue();
       }
-      else if (reads.containsKey(lookupIdentity))
-      {
-         returnValue = writes.get(lookupIdentity);
+      else if (fieldRead.getReads().containsKey(fieldRead.getHandle()))
+      {// has been read beforehand, return the previous value
+         returnValue = fieldRead.getReads().get(fieldRead.getHandle()).getValue();
       }
       else
       {// not found in this transaction, read shared value
-         //TODO: read from shared store, first check to see if it has been locked, pass responsibility to 
          // retrieve from shared memory back to caller
+         if (fieldRead.getObjectStore().containsKey(fieldRead.getHandle()))
+         {
+            returnValue = fieldRead.getObjectStore().get(fieldRead.getHandle() );
+         }
+         else
+         {
+            logger.warn("Field not found.");
+         }
       }
       return returnValue;
    }
 
-
-   /**
-    * Read the value requested. First check for version previously read and
-    * return it. If not found then read the shared value, add to have read list.
-    */
    @Override
-   public Object read(TransactionReadSet currentTransaction, TransactionReadSet nested, Long lookupIdentity)
+   public Boolean write(FieldWriteParameter fieldWrite)
    {
-      Object returnValue = null;
-      /* check for the value initially in the writes, then reads otherwise
-       * retrieve the shared version*/
-      if (writes.containsKey(lookupIdentity))
-      {// found
-         returnValue = writes.get(lookupIdentity);
-      }
-      else if (reads.containsKey(lookupIdentity))
+      Boolean returnValue = null;
+      if (null != fieldWrite.getNewObject())
       {
-         returnValue = writes.get(lookupIdentity);
-      }
-      else
-      {// not found in this transaction, read shared value
-         //TODO: read from shared store, first check to see if it has been locked, pass responsibility to 
-         // retrieve from shared memory back to caller
-      }
-      return returnValue;
-   }
-
-   @Override
-   public Object write(TransactionWriteSet currentWriteSet, Object newObject)
-   {
-      Object returnValue = null;
-      if (null != newObject)
-      {
+         TransactedObjectReference fieldReference = null;
+         if (fieldWrite.getWrites().containsKey(fieldWrite.getHandle()))
+         {// this field has been written before, overwrite it
+            fieldReference = fieldWrite.getWrites().get(fieldWrite.getHandle());
+         }
+         else
+         {// new write of field
+            fieldReference = new TransactedObjectReference(fieldWrite.getHandle(), fieldWrite.getNewObject(), fieldWrite.getVersion());
+            fieldWrite.getWrites().put(fieldWrite.getHandle(), fieldReference);
+         }
          
+         returnValue = Boolean.TRUE;
       }
       else
-      {
+      {// place in the store a transacted object representing a null 
          
       }
-      return null;
+      return returnValue;
    }
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/factory/IsolationFactory.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/factory/IsolationFactory.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/factory/IsolationFactory.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,35 +1,40 @@
 package uk.ac.ncl.sdia.a8905943.isolation.factory;
 
+import java.sql.Connection;
 
-
 import uk.ac.ncl.sdia.a8905943.isolation.Isolation;
-import uk.ac.ncl.sdia.a8905943.isolation.IsolationLevel;
 import uk.ac.ncl.sdia.a8905943.isolation.ReadCommittedIsolationImpl;
+import uk.ac.ncl.sdia.a8905943.isolation.ReadUncommittedIsolationImpl;
 import uk.ac.ncl.sdia.a8905943.isolation.RepeatableReadIsolationImpl;
 import uk.ac.ncl.sdia.a8905943.isolation.SerializableIsolationImpl;
 
 public class IsolationFactory {
 
-	public static Isolation createIsolationLevel(IsolationLevel level)
+	public static Isolation createIsolationLevel( int level)
 	{
 		Isolation returnValue = null;
 		
-		if (level.equals(IsolationLevel.READ_COMMITTED))
-		{
-			returnValue = new ReadCommittedIsolationImpl(); 
-		}
-		else if (level.equals(IsolationLevel.REPEATABLE_READ))
-		{
-			returnValue = new RepeatableReadIsolationImpl();
-		}
-		else if (level.equals(IsolationLevel.SERIALIZABLE))
-		{
-			returnValue = new SerializableIsolationImpl();
-		}
-		else
-		{
-			throw new UnsupportedOperationException("The system does not support the isolation level ["+level.toString()+"] requested.");
-		}
+   	    switch (level)
+         {
+            case Connection.TRANSACTION_NONE :
+               
+               break;
+            case Connection.TRANSACTION_READ_COMMITTED :
+               returnValue = new ReadCommittedIsolationImpl(); 
+               break;
+            case Connection.TRANSACTION_READ_UNCOMMITTED :
+               returnValue = new ReadUncommittedIsolationImpl();
+               break;
+            case Connection.TRANSACTION_REPEATABLE_READ :
+               returnValue = new RepeatableReadIsolationImpl();
+               break;
+            case Connection.TRANSACTION_SERIALIZABLE :
+               returnValue = new SerializableIsolationImpl();
+               break;
+            default :
+               throw new UnsupportedOperationException("The system does not support the isolation level ["+level+"] requested.");
+         }
+		
 		return returnValue;
 	}
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,15 +1,18 @@
 package uk.ac.ncl.sdia.a8905943.model;
 
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 
-import uk.ac.ncl.sdia.a8905943.stm.annotation.STMEntity;
- at STMEntity
+ at Entity
 public class Car {
 
-   // fields should be private
    @Id
+   @GeneratedValue
    private Long id;
-	private String make;
+   
+   
+   private String make;
    public Long getId()
    {
       return id;

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -371,6 +371,7 @@
       {
          logger.debug("STMConnection.setTransactionIsolation called.");
       }
+      this.xaConnection.getSTM().setCurrentTransactionIsolation(level);
    }
 
    @Override

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-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXADatasourceImpl.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -6,6 +6,7 @@
  */
 package uk.ac.ncl.sdia.a8905943.persistence.xa;
 
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.SQLException;
@@ -22,11 +23,13 @@
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.apache.log4j.Logger;
+import org.infinispan.manager.CacheManager;
+import org.infinispan.manager.DefaultCacheManager;
 
 import uk.ac.ncl.sdia.a8905943.persistence.jdbc.STMDataSource;
 import uk.ac.ncl.sdia.a8905943.stm.STM;
 
-public class STMXADatasourceImpl extends STMDataSource implements XADataSource, Serializable, Referenceable
+public final class STMXADatasourceImpl extends STMDataSource implements XADataSource, Serializable, Referenceable
 {
    private String serverName = StringUtils.EMPTY;
    private String databaseName = StringUtils.EMPTY;
@@ -36,6 +39,7 @@
    private static final String DATABASE_NAME = "databaseName";
    private static final ConcurrentHashMap<String, STM> stmDatabases = new ConcurrentHashMap<String, STM>();
    private static final Logger logger = Logger.getLogger(STMXADatasourceImpl.class );
+   private CacheManager cacheManager ; // heavy weight object
 
    /** The serialVersionUID */
    private static final long serialVersionUID = 2341586268344164513L;
@@ -62,7 +66,17 @@
       }
       else
       {// the stm does not exist create an instance and attempt to put it into the map
-         STM newSTM = new STM(getDatabaseName());
+         STM newSTM = null;
+         if (null != this.cacheManager)
+         {
+            newSTM = new STM(getDatabaseName(), this.cacheManager.getCache(getDatabaseName()));
+         }
+         else
+         {
+            newSTM = new STM(getDatabaseName(), null);
+            logger.warn("Starting the STM witout replication enabled.");
+         }
+         
          STM concurrentSTM = stmDatabases.putIfAbsent(getDatabaseName(), newSTM);
          if (null == concurrentSTM)
          {// the database has been created by this thread
@@ -196,13 +210,24 @@
    }
    
    
-   
+   /**
+    * Constructor for creating a DataSource. There is an expectation of 
+    * only one DataSource in a JVM.
+    */
    public STMXADatasourceImpl()
    {
       if (logger.isInfoEnabled())
       {
          logger.info("Instance of XADataSource created.");
       }
+      
+      try
+      {// this is not great performing work inside a constructor that can barf 
+         this.cacheManager = new DefaultCacheManager("cluster-cfg.xml");
+      } 
+      catch (IOException ioe)
+      {
+         logger.error("The configuration file for the replicated memory system could not be found.");
+      }
    }
-
 }

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/History.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/History.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/History.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,7 +0,0 @@
-package uk.ac.ncl.sdia.a8905943.spec;
-
-public interface History {
-
-	public void recordRead();
-	public void recordWrite();
-}

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/ObjectStoreManager.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/ObjectStoreManager.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/ObjectStoreManager.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,7 +0,0 @@
-package uk.ac.ncl.sdia.a8905943.spec;
-
-public interface ObjectStoreManager {
-
-	public Object find(Class type, Object identity);
-	public void put(Object object);
-}

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/ResourceManager.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/ResourceManager.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/ResourceManager.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,5 +0,0 @@
-package uk.ac.ncl.sdia.a8905943.spec;
-
-public interface ResourceManager {
-
-}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -6,7 +6,11 @@
  */
 package uk.ac.ncl.sdia.a8905943.spec;
 
+import uk.ac.ncl.sdia.a8905943.isolation.FieldReadParameter;
+import uk.ac.ncl.sdia.a8905943.isolation.FieldWriteParameter;
+import uk.ac.ncl.sdia.a8905943.isolation.Isolation;
 
+
 /**
  * Purpose of this object is for behaviour of a transaction that 
  * uses memory to control changes.a
@@ -16,8 +20,9 @@
  */
 public interface STMTransaction 
 {
-   public Boolean write(long hash, Object writtenObject);
-   public Object read( long hashIdentity);
+   public Boolean write(FieldWriteParameter fieldWrite);
+   public Object read(FieldReadParameter fieldRead);
+   public void setIsolationLevel(Isolation isolation);
    public void startTransaction();
    
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -2,7 +2,14 @@
 
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.log4j.Logger;
+import org.infinispan.Cache;
 
+import uk.ac.ncl.sdia.a8905943.factory.TransactionFactory;
+import uk.ac.ncl.sdia.a8905943.handle.TransactedObjectReference;
+import uk.ac.ncl.sdia.a8905943.isolation.FieldReadParameter;
+import uk.ac.ncl.sdia.a8905943.isolation.FieldWriteParameter;
+import uk.ac.ncl.sdia.a8905943.isolation.factory.IsolationFactory;
+
 /**
  * This object is a proxy to the transactional memory system. It provides a
  * convenient interface to the world for any systems that interact with it.
@@ -14,8 +21,8 @@
 {
    private final String databaseName;
    private static final Logger logger = Logger.getLogger(STM.class);
+   private final Cache<Long, TransactedObjectReference> replicatedMemory ; 
    
-
    /**
     * This method is where transactional updates are made..
     * 
@@ -23,20 +30,22 @@
     * @param writtenObject
     * @return
     */
-   public Boolean write(long hash, Object writtenObject)
+   public Boolean write(FieldWriteParameter fieldWrite)
    {
-      //TODO:jrw complete implementation.
+      fieldWrite.setObjectStore(this.replicatedMemory);
+      TransactionFactory.getFactory().getCurrentTransaction(false).write(fieldWrite);
       return Boolean.FALSE;
    }
-   public Object read( long hashIdentity)
+   public Object read( FieldReadParameter fieldRead)
    {
-      // TODO:jrw complete implementation
-      return null;
+      fieldRead.setObjectStore(this.replicatedMemory);
+      return TransactionFactory.getFactory().getCurrentTransaction(false).read(fieldRead);
    }
 
-   public STM(String name)
+   public STM(String name, Cache replicatedMemory)
    {
       this.databaseName = name;
+      this.replicatedMemory = replicatedMemory;
    }
    
    @Override
@@ -78,7 +87,7 @@
    }
    /**
     * Notify the transactional system the changes should be locked for future
-    * storing in share transactional memory.
+    * updating in share transactional memory.
     */
    public void prepare()
    {
@@ -104,4 +113,9 @@
    {
       return databaseName;
    }
+   
+   public void setCurrentTransactionIsolation(int isolationLevel)
+   {
+      TransactionFactory.getFactory().getCurrentTransaction(false).setIsolationLevel(IsolationFactory.createIsolationLevel(isolationLevel));
+   }
 }

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/annotation/STMEntity.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/annotation/STMEntity.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/annotation/STMEntity.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -1,21 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- * 
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.stm.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
- at Target(ElementType.TYPE)
- at Retention(RetentionPolicy.RUNTIME)
-public @interface STMEntity 
-{
-
-}
-
-

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/TransactionWriteSet.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/TransactionWriteSet.java	2009-08-15 07:47:53 UTC (rev 28943)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/TransactionWriteSet.java	2009-08-15 19:00:30 UTC (rev 28944)
@@ -9,7 +9,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-public class TransactionWriteSet
+public final  class TransactionWriteSet
 {
    private final Map<Long, Object> writes = new  HashMap<Long, Object>();
    
@@ -17,4 +17,9 @@
    {
       return writes;
    }
+   
+   public void addWrite(long handle, Object writeable)
+   {
+      
+   }
 }

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/cluster-cfg.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/cluster-cfg.xml	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/cluster-cfg.xml	2009-08-15 19:00:30 UTC (rev 28944)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="urn:infinispan:config:4.0">
+
+   
+	<transport transportClass="org.infinispan.remoting.transport.jgroups.JGroupsTransport"
+		clusterName="infinispan-cluster" distributedSyncTimeout="50000">
+		<!--
+			Note that the JGroups transport uses sensible defaults if no
+			configuration property is defined.
+		-->
+		<property name="configurationFile" value="udp.xml" />
+		<!-- See the JGroupsTransport javadocs for more flags -->
+	</transport>
+
+
+	<!-- *************************** -->
+	<!-- Default "template" settings -->
+	<!-- *************************** -->
+	<!--
+		this is used as a "template" configuration for all caches in the
+		system.
+	-->
+	<default>
+		<!--
+			isolation levels supported: READ_COMMITTED and REPEATABLE_READ
+		-->
+		<locking isolationLevel="REPEATABLE_READ"
+			lockAcquisitionTimeout="20000" writeSkewCheck="false"
+			concurrencyLevel="500" />
+
+		<!--
+			Used to register a transaction manager and participate in ongoing
+			transactions.
+		-->
+		<transaction
+			transactionManagerLookupClass="org.infinispan.transaction.lookup.JBossTransactionManagerLookup"
+			syncRollbackPhase="false" syncCommitPhase="false" useEagerLocking="false" />
+
+		<!--
+			Used to register JMX statistics in any available MBean server
+		-->
+		<jmxStatistics enabled="false" />
+
+		<lazyDeserialization enabled="false" />
+
+		<!--
+			Used to enable invocation batching and allow the use of
+			Cache.startBatch()/endBatch() methods.
+		-->
+		<invocationBatching enabled="false" />
+
+		<!--
+			This element specifies that the cache is clustered. modes supported:
+			distribution (d), replication (r) or invalidation (i).
+		-->
+		<clustering mode="replication">
+
+			<!--
+				Defines whether to retrieve state on startup
+			-->
+			<stateRetrieval timeout="20000" fetchInMemoryState="false" />
+
+			<!--
+            Network calls are synchronous.
+         -->
+			<sync replTimeout="20000" />
+			<!--
+            Uncomment this for async replication.
+         -->
+			<!--
+				<async useReplQueue="true" replQueueInterval="10000"
+				replQueueMaxElements="500"/>
+			-->
+		</clustering>
+	</default>
+	
+	<!-- No named caches, the DataSource creates the caches on the fly. -->
+
+</infinispan>
\ No newline at end of file



More information about the jboss-svn-commits mailing list