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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Aug 16 14:19:28 EDT 2009


Author: whitingjr
Date: 2009-08-16 14:19:28 -0400 (Sun, 16 Aug 2009)
New Revision: 28950

Added:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractFieldParameter.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/exception/
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/exception/IsolationLevelNotConfiguredException.java
Removed:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/ejb3/persistence/STMPersistenceContext.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/cluster-cfg.xml
Modified:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerFactoryImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.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/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/ReadCommittedIsolationImpl.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/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/SerializableIsolationImpl.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/entitymanager/STMEntityManagerFactory.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/stm/persistence/STMPersistenceProviderImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/impl/JUTestMVCCStore.java
Log:
Updated persistence framework. Updated test cases.

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/ejb3/persistence/STMPersistenceContext.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/ejb3/persistence/STMPersistenceContext.java	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/ejb3/persistence/STMPersistenceContext.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -1,32 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- * 
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.ejb3.persistence;
-
-import uk.ac.ncl.sdia.a8905943.spec.PersistenceContextHandle;
-import uk.ac.ncl.sdia.a8905943.stm.STM;
-
-/**
- * This object needs to hang around in the VM and not be a candidate for garbage collection.
- * To achieve this the persistence context (memory only) is attatched to the JNDI tree.   
- * 
- * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
- * @version $Revision: 1.1 $
- * @deprecated
- */
-public class STMPersistenceContext implements PersistenceContextHandle
-{
-   public static final String BYPASS_JNDI_BINDING = "BYPASS_JNDI_BINDING";
-   private static final STM stm = new STM(null); 
-
-   /**
-    * @deprecated
-    */
-   public STM getSTM() 
-   {
-      return stm;
-   }
-}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerFactoryImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerFactoryImpl.java	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerFactoryImpl.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -18,12 +18,8 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
-import org.jboss.resource.adapter.jdbc.WrappedConnection;
 
-import uk.ac.ncl.sdia.a8905943.ejb3.persistence.STMPersistenceContext;
 import uk.ac.ncl.sdia.a8905943.isolation.IsolationLevel;
-import uk.ac.ncl.sdia.a8905943.persistence.jdbc.STMConnection;
-import uk.ac.ncl.sdia.a8905943.persistence.xa.STMXAConnectionImpl;
 import uk.ac.ncl.sdia.a8905943.spec.entitymanager.STMEntityManagerFactory;
 import uk.ac.ncl.sdia.a8905943.stm.persistence.STMPersistenceProviderImpl;
 
@@ -268,11 +264,7 @@
       throw new CloneNotSupportedException("Cloning of this object is not supported.");
    }
 
-   @Override
-   public STMPersistenceContext getPersistenceContext()
-   {
-      return null;
-   }
+   
 
    public DataSource getDataSource()
    {

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -6,7 +6,6 @@
  */
 package uk.ac.ncl.sdia.a8905943.entitymanager;
 
-import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
@@ -18,19 +17,13 @@
 import javax.persistence.LockModeType;
 import javax.persistence.Query;
 import javax.persistence.spi.PersistenceUnitTransactionType;
-import javax.transaction.RollbackException;
 import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
 
 import org.apache.log4j.Logger;
 import org.jboss.resource.adapter.jdbc.WrappedConnection;
 
 import uk.ac.ncl.sdia.a8905943.factory.STMFactory;
-import uk.ac.ncl.sdia.a8905943.locator.transaction.ServiceLocator;
 import uk.ac.ncl.sdia.a8905943.persistence.jdbc.STMConnection;
-import uk.ac.ncl.sdia.a8905943.stm.annotation.STMEntity;
 
 final class STMEntityManagerImpl implements EntityManager
 {

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-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/handle/TransactedObjectReference.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -6,12 +6,20 @@
  */
 package uk.ac.ncl.sdia.a8905943.handle;
 
-public class TransactedObjectReference
+import java.io.Serializable;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+
+public final class TransactedObjectReference implements Serializable
 {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 2497531722707627406L;
    final Long lookupIdentity;
    private Object value;
    private Long nextIdentity;
    private long version;
+   transient final ReentrantReadWriteLock prepared = new ReentrantReadWriteLock();
    
    public TransactedObjectReference(Long identity, Object value, long version)
    {
@@ -39,19 +47,42 @@
    {
       this.nextIdentity = nextIdentity;
    }
-
    public long getVersion()
    {
       return version;
    }
-
    public void setVersion(long version)
    {
       this.version = version;
    }
-
    public void setValue(Object value)
    {
       this.value = value;
    }
+   @Override
+   public boolean equals(Object other)
+   {
+      boolean returnValue = false;
+      if (null != other)
+      {
+         if (other == this)
+         {
+            returnValue = true;
+         }
+         else
+         {
+            if (other.getClass() == getClass())
+            {
+               TransactedObjectReference otherReference = (TransactedObjectReference)other;
+               returnValue = new EqualsBuilder().append(this.getLookupIdentity(), otherReference.getLookupIdentity()).append(this.getVersion(), otherReference.getVersion()).isEquals();
+            }
+         }
+      }
+      return returnValue;
+   }
+
+   public ReentrantReadWriteLock getPrepared()
+   {
+      return prepared;
+   }
 }

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-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -77,6 +77,7 @@
    public Object read(FieldReadParameter fieldRead)
    {
       fieldRead.setReads(this.deferredReads);
+      fieldRead.setWrites(this.deferredWrites);
       return this.isolation.read(fieldRead);
    }
 

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractFieldParameter.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractFieldParameter.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractFieldParameter.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -0,0 +1,75 @@
+/*
+ * 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 AbstractFieldParameter
+{
+   protected Map<Long, TransactedObjectReference> objectStore;
+   protected long handle;
+   protected Map<Long, TransactedObjectReference> writes;
+   private long version;
+   private boolean isTransactional = true;// this should be turned off for queries ?
+
+   public AbstractFieldParameter()
+   {
+      super();
+   }
+
+   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 AbstractFieldParameter(long handle)
+   {
+      this.handle = handle;
+   }
+   public Map<Long, TransactedObjectReference> getWrites()
+   {
+      return writes;
+   }
+   public void setWrites(Map<Long, TransactedObjectReference> writes)
+   {
+      this.writes = writes;
+   }
+   public long getVersion()
+   {
+      return version;
+   }
+   public void setVersion(long version)
+   {
+      this.version = version;
+   }
+
+   public boolean isTransactional()
+   {
+      return isTransactional;
+   }
+
+   public void setTransactional(boolean isTransactional)
+   {
+      this.isTransactional = isTransactional;
+   }
+}
\ No newline at end of file

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-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractIsolation.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -18,5 +18,16 @@
 	{// default behaviour
 	   return false;
 	}
-	
+	@Override
+	public Object read(FieldReadParameter fieldRead)
+	{
+	   // FIXME read
+	   return null;
+	}
+	@Override
+	public Boolean write(FieldWriteParameter fieldWrite)
+	{
+	   // FIXME write
+	   return null;
+	}
 }

Modified: 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	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldReadParameter.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -10,16 +10,10 @@
 
 import uk.ac.ncl.sdia.a8905943.handle.TransactedObjectReference;
 
-public class FieldReadParameter
+public class FieldReadParameter extends AbstractFieldParameter
 {
    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)
    {
@@ -39,36 +33,6 @@
       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;

Modified: 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	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/FieldWriteParameter.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -6,87 +6,22 @@
  */
 package uk.ac.ncl.sdia.a8905943.isolation;
 
-import java.util.Map;
 
-import uk.ac.ncl.sdia.a8905943.handle.TransactedObjectReference;
-
-public class FieldWriteParameter
+public class FieldWriteParameter extends AbstractFieldParameter
 {
-   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/ReadCommittedIsolationImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadCommittedIsolationImpl.java	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadCommittedIsolationImpl.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -1,25 +1,11 @@
 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 ReadCommittedIsolationImpl 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

Modified: 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	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadUncommittedIsolationImpl.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -6,27 +6,13 @@
  */
 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

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-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -15,7 +15,6 @@
  */
 public final class RepeatableReadIsolationImpl extends AbstractIsolation{
    private static final Logger logger = Logger.getLogger(RepeatableReadIsolationImpl.class);
-   // fast lookups
    
    /**
     * Read the value requested. First check for version previously read and
@@ -35,7 +34,7 @@
          returnValue = fieldRead.getWrites().get(fieldRead.getHandle()).getValue();
       }
       else if (fieldRead.getReads().containsKey(fieldRead.getHandle()))
-      {// has been read beforehand, return the previous value
+      {// has been read previously in transaction, return the previous value
          returnValue = fieldRead.getReads().get(fieldRead.getHandle()).getValue();
       }
       else
@@ -47,8 +46,10 @@
          }
          else
          {
-            logger.warn("Field not found.");
+            logger.info("Field not found.");
          }
+         // log the read in the read history, even if the return value is null
+         fieldRead.getReads().put(fieldRead.getHandle(), new TransactedObjectReference(fieldRead.getHandle() , returnValue , fieldRead.getVersion()));
       }
       return returnValue;
    }
@@ -63,6 +64,7 @@
          if (fieldWrite.getWrites().containsKey(fieldWrite.getHandle()))
          {// this field has been written before, overwrite it
             fieldReference = fieldWrite.getWrites().get(fieldWrite.getHandle());
+            fieldReference.setValue(fieldWrite.getNewObject());
          }
          else
          {// new write of field

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/SerializableIsolationImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/SerializableIsolationImpl.java	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/SerializableIsolationImpl.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -1,7 +1,7 @@
 package uk.ac.ncl.sdia.a8905943.isolation;
 
 
-public class SerializableIsolationImpl implements Isolation {
+public class SerializableIsolationImpl extends AbstractIsolation {
 
    @Override
    public boolean supportsRepeatableRead()

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-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/xa/STMXADatasourceImpl.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -223,7 +223,7 @@
       
       try
       {// this is not great performing work inside a constructor that can barf 
-         this.cacheManager = new DefaultCacheManager("cluster-cfg.xml");
+         this.cacheManager = new DefaultCacheManager("../server/default/conf/cluster-cfg.xml");
       } 
       catch (IOException ioe)
       {

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/entitymanager/STMEntityManagerFactory.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/entitymanager/STMEntityManagerFactory.java	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/entitymanager/STMEntityManagerFactory.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -10,9 +10,6 @@
 
 import javax.persistence.EntityManagerFactory;
 
-import uk.ac.ncl.sdia.a8905943.ejb3.persistence.STMPersistenceContext;
-
 public interface STMEntityManagerFactory extends EntityManagerFactory, Serializable
 {
-   public STMPersistenceContext getPersistenceContext();
 }

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-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -3,12 +3,15 @@
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.log4j.Logger;
 import org.infinispan.Cache;
+import org.jboss.security.xacml.sunxacml.UnknownIdentifierException;
 
 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;
+import uk.ac.ncl.sdia.a8905943.spec.STMTransaction;
+import uk.ac.ncl.sdia.a8905943.stm.exception.IsolationLevelNotConfiguredException;
 
 /**
  * This object is a proxy to the transactional memory system. It provides a
@@ -39,7 +42,10 @@
    public Object read( FieldReadParameter fieldRead)
    {
       fieldRead.setObjectStore(this.replicatedMemory);
-      return TransactionFactory.getFactory().getCurrentTransaction(false).read(fieldRead);
+      STMTransaction transaction = TransactionFactory.getFactory().getCurrentTransaction(false);
+      
+      return transaction.read(fieldRead); 
+      
    }
 
    public STM(String name, Cache replicatedMemory)
@@ -97,9 +103,11 @@
     * Inform the transactional system that transactional activity will start
     * to happen for this thread. Make changes in transactional memory. 
     */
-   public void begin()
+   public void begin(int isolationLevel)
    {
       logger.debug("begin invoked on stm system.");
+      STMTransaction transaction = TransactionFactory.getFactory().getCurrentTransaction(true);
+      setCurrentTransactionIsolation(isolationLevel);
    }
    /**
     * A problem occured in the system and transactional changes should be discarded. 
@@ -116,6 +124,14 @@
    
    public void setCurrentTransactionIsolation(int isolationLevel)
    {
-      TransactionFactory.getFactory().getCurrentTransaction(false).setIsolationLevel(IsolationFactory.createIsolationLevel(isolationLevel));
+      STMTransaction transaction = TransactionFactory.getFactory().getCurrentTransaction(false);
+      if (null != transaction)
+      {
+         transaction.setIsolationLevel(IsolationFactory.createIsolationLevel(isolationLevel));
+      }
+      else
+      {
+         logger.warn("Attempt to set the transaction isolation level when a transaction has not been created.");
+      }
    }
 }

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/exception/IsolationLevelNotConfiguredException.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/exception/IsolationLevelNotConfiguredException.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/exception/IsolationLevelNotConfiguredException.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -0,0 +1,23 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.stm.exception;
+
+public class IsolationLevelNotConfiguredException extends Exception
+{
+
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1L;
+
+   public IsolationLevelNotConfiguredException()
+   {
+   }
+   
+   public IsolationLevelNotConfiguredException(String message)
+   {
+      super(message);
+   } 
+}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/persistence/STMPersistenceProviderImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/persistence/STMPersistenceProviderImpl.java	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/persistence/STMPersistenceProviderImpl.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -9,9 +9,6 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.naming.InitialContext;
-import javax.naming.NameAlreadyBoundException;
-import javax.naming.NamingException;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.spi.PersistenceProvider;
 import javax.persistence.spi.PersistenceUnitInfo;
@@ -20,7 +17,6 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 
-import uk.ac.ncl.sdia.a8905943.ejb3.persistence.STMPersistenceContext;
 import uk.ac.ncl.sdia.a8905943.entitymanager.STMEntityManagerFactoryImpl;
 
 /**

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/cluster-cfg.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/cluster-cfg.xml	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/cluster-cfg.xml	2009-08-16 18:19:28 UTC (rev 28950)
@@ -1,81 +0,0 @@
-<?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

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/impl/JUTestMVCCStore.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/impl/JUTestMVCCStore.java	2009-08-16 18:18:34 UTC (rev 28949)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/impl/JUTestMVCCStore.java	2009-08-16 18:19:28 UTC (rev 28950)
@@ -15,8 +15,6 @@
 	@Ignore
 	public void testCheckObjectStored()
 	{
-		STM store = new STM(null);
-		
-		
+		STM store = new STM(null, null);
 	}
 }



More information about the jboss-svn-commits mailing list