[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