Repository: jena
Updated Branches:
  refs/heads/master 0366da2c3 -> 0ca10b775


JENA-1458: Promotion API integration for TDB


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/64f6357c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/64f6357c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/64f6357c

Branch: refs/heads/master
Commit: 64f6357c25494a961f77db670cbe5b2d4cc35eab
Parents: ee7507d
Author: Andy Seaborne <[email protected]>
Authored: Sat Dec 30 22:57:46 2017 +0000
Committer: Andy Seaborne <[email protected]>
Committed: Sun Dec 31 10:53:24 2017 +0000

----------------------------------------------------------------------
 .../jena/sparql/core/DatasetGraphZero.java      |   1 -
 .../transaction/AbstractTestTransPromote.java   |  16 ++-
 .../org/apache/jena/tdb/StoreConnection.java    |  27 ++++-
 .../java/org/apache/jena/tdb/TDBBackup.java     |   4 +-
 .../apache/jena/tdb/store/DatasetGraphTDB.java  |   2 +
 .../transaction/DatasetGraphTransaction.java    |  37 +++++--
 .../jena/tdb/transaction/Transaction.java       |   6 +-
 .../tdb/transaction/TransactionManager.java     |  76 ++++++++-----
 .../AbstractTestObjectFileTrans.java            |   3 +-
 .../AbstractTestObjectFileTransComplex.java     |   3 +-
 .../tdb/transaction/AbstractTestTransSeq.java   | 110 +++++++++----------
 .../tdb/transaction/TestTransPromoteTDB.java    |  11 +-
 .../jena/tdb/transaction/TestTransRestart.java  |   8 +-
 13 files changed, 182 insertions(+), 122 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java
index 6524cc9..a5a813b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java
@@ -24,7 +24,6 @@ import org.apache.jena.atlas.iterator.Iter;
 import org.apache.jena.graph.Graph;
 import org.apache.jena.graph.Node;
 import org.apache.jena.query.ReadWrite;
-import org.apache.jena.query.TxnType;
 import org.apache.jena.sparql.graph.GraphZero;
 
 /** An always empty {@link DatasetGraph}. 

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java
 
b/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java
index e2d2237..fd87dce 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java
@@ -84,18 +84,28 @@ public abstract class AbstractTestTransPromote {
     
     /** Enable transaction promotion (it does not need to be the defaukl 
bahvaiour of the system under test.
      * A call of setPromotion(true) is made before each test.
-     * The original setting is retored at the end of the test.   
+     * The original setting is retored at the end of the test.
+     * @deprecated Redundant - remove.   
      */
+    @Deprecated
     protected abstract void setPromotion(boolean b) ;
-    /** Whether promotion is active */ 
+    /** 
+     *  @deprecated Redundant - remove.   
+     */
+    @Deprecated
     protected abstract boolean getPromotion() ;
     
     /**
      * If {@link #supportsReadCommitted} is true (whether by default or not),
      * then set/reset the state aroudn tests that test its behaviour.
+     * @deprecated Redundant - remove.   
      */
+    @Deprecated
     protected abstract void setReadCommitted(boolean b) ;
-    /** Whether read committed promotion is active */
+    /**
+     * @deprecated Redundant - remove.   
+     */
+    @Deprecated
     protected abstract boolean getReadCommitted() ;
     
     // The exact class used by exceptions of the system under test.

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/main/java/org/apache/jena/tdb/StoreConnection.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/StoreConnection.java 
b/jena-tdb/src/main/java/org/apache/jena/tdb/StoreConnection.java
index d1a603e..f24065c 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/StoreConnection.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/StoreConnection.java
@@ -24,6 +24,7 @@ import java.util.Map ;
 import java.util.Set ;
 
 import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.sparql.mgt.ARQMgt ;
 import org.apache.jena.tdb.base.file.ChannelManager ;
 import org.apache.jena.tdb.base.file.Location ;
@@ -87,16 +88,32 @@ public class StoreConnection
         return transactionManager.state();
     }
 
+    /*
+     * @deprecated Use {@link #begin(TxnType)}
+     */
+    //@Deprecated
+    public DatasetGraphTxn begin(ReadWrite mode) {
+        return begin(TxnType.convert(mode));
+    }
+
     /**
      * Begin a transaction. Terminate a write transaction with
-     * {@link Transaction#commit()} or {@link Transaction#abort()}. Terminate a
-     * write transaction with {@link Transaction#close()}.
+     * {@link Transaction#commit()} or {@link Transaction#abort()}. 
+     * Terminate a write transaction with {@link Transaction#close()}.
      */
-    public DatasetGraphTxn begin(ReadWrite mode) {
+    public DatasetGraphTxn begin(TxnType mode) {
         checkValid();
         checkTransactional();
         haveUsedInTransaction = true;
-        return transactionManager.begin(mode);
+        return transactionManager.begin(mode, null);
+    }
+
+    /**
+     * @deprecated Use {@link #begin(TxnType, String)}
+     */
+    @Deprecated
+    public DatasetGraphTxn begin(ReadWrite mode, String label) {
+        return begin(TxnType.convert(mode), label);
     }
 
     /**
@@ -104,7 +121,7 @@ public class StoreConnection
      * with {@link Transaction#commit()} or {@link Transaction#abort()}.
      * Terminate a write transaction with {@link Transaction#close()}.
      */
-    public DatasetGraphTxn begin(ReadWrite mode, String label) {
+    public DatasetGraphTxn begin(TxnType mode, String label) {
         checkValid();
         checkTransactional();
         return transactionManager.begin(mode, label);

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/main/java/org/apache/jena/tdb/TDBBackup.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/TDBBackup.java 
b/jena-tdb/src/main/java/org/apache/jena/tdb/TDBBackup.java
index c8bb30e..7df144d 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/TDBBackup.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/TDBBackup.java
@@ -23,7 +23,7 @@ import java.io.* ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.query.Dataset ;
-import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.tdb.base.file.Location ;
@@ -54,7 +54,7 @@ public class TDBBackup
     {
         Dataset ds = TDBFactory.createDataset(location) ;
         StoreConnection sConn = StoreConnection.make(location) ;
-        DatasetGraphTxn dsg = sConn.begin(ReadWrite.READ, "backup") ;
+        DatasetGraphTxn dsg = sConn.begin(TxnType.READ, "backup") ;
         RDFDataMgr.write(backupfile, dsg, Lang.NQUADS) ;
         dsg.end();
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java
----------------------------------------------------------------------
diff --git 
a/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java 
b/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java
index a1af430..647f46e 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java
@@ -30,6 +30,7 @@ import org.apache.jena.atlas.lib.tuple.Tuple ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.sparql.core.DatasetGraphTriplesQuads ;
 import org.apache.jena.sparql.core.Quad ;
 import org.apache.jena.sparql.core.Transactional ;
@@ -256,6 +257,7 @@ public class DatasetGraphTDB extends 
DatasetGraphTriplesQuads
     }
 
     private final Transactional txn                     = new 
TransactionalNotSupported() ;
+    @Override public void begin(TxnType type)           { txn.begin(type) ; }
     @Override public void begin(ReadWrite mode)         { txn.begin(mode) ; }
     @Override public void commit()                      { txn.commit() ; }
     @Override public void abort()                       { txn.abort() ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/DatasetGraphTransaction.java
----------------------------------------------------------------------
diff --git 
a/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/DatasetGraphTransaction.java
 
b/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/DatasetGraphTransaction.java
index 7aabc23..e37b323 100644
--- 
a/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/DatasetGraphTransaction.java
+++ 
b/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/DatasetGraphTransaction.java
@@ -23,13 +23,14 @@ import static java.lang.ThreadLocal.withInitial ;
 import org.apache.jena.atlas.lib.Sync ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Node ;
-import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.sparql.JenaTransactionException ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.DatasetGraphTrackActive ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.tdb.StoreConnection ;
 import org.apache.jena.tdb.TDB ;
+import org.apache.jena.tdb.TDBException;
 import org.apache.jena.tdb.base.file.Location ;
 import org.apache.jena.tdb.store.DatasetGraphTDB ;
 import org.apache.jena.tdb.store.GraphNonTxnTDB ;
@@ -86,18 +87,24 @@ import org.apache.jena.tdb.store.GraphTxnTDB ;
         return sConn.getBaseDataset() ;
     }
 
-    /*private*/public/*for development*/ static boolean promotion              
 = false ; 
-    /*private*/public/*for development*/ static boolean readCommittedPromotion 
  = true ;
-    
     @Override public DatasetGraph getW() {
         if ( isInTransaction() ) {
-            if ( promotion ) {
-                DatasetGraphTxn dsgTxn = txn.get() ;
-                if ( dsgTxn.getTransaction().isRead() ) {
-                    TransactionManager txnMgr = 
dsgTxn.getTransaction().getTxnMgr() ;
-                    DatasetGraphTxn dsgTxn2 = txnMgr.promote(dsgTxn, 
readCommittedPromotion) ;
-                    txn.set(dsgTxn2); 
+            DatasetGraphTxn dsgTxn = txn.get() ;
+            if ( dsgTxn.getTransaction().isRead() ) {
+                TxnType txnType = dsgTxn.getTransaction().getTxnType();
+                switch(txnType) {
+                    case READ : 
+                        throw new JenaTransactionException("Attempt to update 
in a read transaction"); 
+                    case WRITE :
+                        // Impossible. We're in read-mode.
+                        throw new TDBException("Internal inconsistency: 
read-mode write transaction");
+                    case READ_COMMITTED_PROMOTE :
+                    case READ_PROMOTE : 
                 }
+                // Promotion.
+                TransactionManager txnMgr = 
dsgTxn.getTransaction().getTxnMgr() ;
+                DatasetGraphTxn dsgTxn2 = txnMgr.promote(dsgTxn, txnType) ;
+                txn.set(dsgTxn2);
             }
         }
         return super.getW() ;
@@ -172,14 +179,20 @@ import org.apache.jena.tdb.store.GraphTxnTDB ;
     }
 
     @Override
-    protected void _begin(ReadWrite readWrite) {
+    protected void _begin(TxnType txnType) {
         checkNotClosed() ;
-        DatasetGraphTxn dsgTxn = sConn.begin(readWrite) ;
+        DatasetGraphTxn dsgTxn = sConn.begin(txnType) ;
         txn.set(dsgTxn) ;
         inTransaction.set(true) ;
     }
 
     @Override
+    protected boolean _promote() {
+        checkNotClosed() ;
+        return txn.get().promote();
+    }
+
+    @Override
     protected void _commit() {
         checkNotClosed() ;
         txn.get().commit() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/Transaction.java
----------------------------------------------------------------------
diff --git 
a/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/Transaction.java 
b/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/Transaction.java
index 68891c1..9323435 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/Transaction.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/Transaction.java
@@ -24,6 +24,7 @@ import java.util.List ;
 
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.sparql.JenaTransactionException;
 import org.apache.jena.tdb.store.DatasetGraphTDB ;
 import org.apache.jena.tdb.sys.FileRef ;
@@ -36,6 +37,7 @@ public class Transaction
     private final String label ;
     private final TransactionManager txnMgr ;
     private final Journal journal ;
+    private final TxnType txnType ;
     private final ReadWrite mode ;
     
     private final List<ObjectFileTrans> objectFileTrans = new ArrayList<>() ;
@@ -54,7 +56,7 @@ public class Transaction
     
     private boolean changesPending ;
     
-    public Transaction(DatasetGraphTDB dsg, long version, ReadWrite mode, long 
id, String label, TransactionManager txnMgr) {
+    public Transaction(DatasetGraphTDB dsg, long version, TxnType txnType, 
ReadWrite mode, long id, String label, TransactionManager txnMgr) {
         this.id = id ;
         if (label == null )
             label = "Txn" ;
@@ -68,6 +70,7 @@ public class Transaction
         this.txnMgr = txnMgr ;
         this.basedsg = dsg ;
         this.version = version ;
+        this.txnType = txnType ;
         this.mode = mode ;
         this.journal = ( txnMgr == null ) ? null : txnMgr.getJournal() ;
         activedsg = null ;      // Don't know yet.
@@ -270,6 +273,7 @@ public class Transaction
         }
     }
 
+    public TxnType   getTxnType()                   { return txnType ; }
     public ReadWrite getMode()                      { return mode ; }
     public boolean   isRead()                       { return mode == 
ReadWrite.READ ; }
     public boolean   isWrite()                      { return mode == 
ReadWrite.WRITE ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java
----------------------------------------------------------------------
diff --git 
a/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java
 
b/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java
index bd3008a..fd09d3f 100644
--- 
a/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java
+++ 
b/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java
@@ -24,10 +24,7 @@ import static 
org.apache.jena.tdb.transaction.TransactionManager.TxnPoint.BEGIN
 import static 
org.apache.jena.tdb.transaction.TransactionManager.TxnPoint.CLOSE ;
 
 import java.io.File ;
-import java.util.ArrayList ;
-import java.util.HashSet ;
-import java.util.List ;
-import java.util.Set ;
+import java.util.*;
 import java.util.concurrent.BlockingQueue ;
 import java.util.concurrent.LinkedBlockingDeque ;
 import java.util.concurrent.Semaphore ;
@@ -39,6 +36,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.shared.Lock ;
 import org.apache.jena.tdb.store.DatasetGraphTDB ;
 import org.apache.jena.tdb.sys.SystemTDB ;
@@ -300,13 +298,27 @@ public class TransactionManager
         journal.close() ;
     }
 
-    public DatasetGraphTxn begin(ReadWrite mode) {
-        return begin(mode, null) ;
-    }
-    
-    public /*for testing only*/ static final boolean DEBUG = false ; 
-    
-    public DatasetGraphTxn begin(ReadWrite mode, String label) {
+    public /*for testing only*/ static final boolean DEBUG = false ;
+    
+    // TIM
+//    @Override
+//    public void begin(TxnMode txnMode) {
+//        if (isInTransaction()) 
+//            throw new JenaTransactionException("Transactions cannot be 
nested!");
+//        transactionMode.set(txnMode);
+//        ReadWrite initial = txnMode.equals(TxnMode.WRITE) ? WRITE : READ;
+//        _begin(initial);
+//    }
+//    
+//    @Override
+//    public void begin(final ReadWrite readWrite) {
+//        if (isInTransaction()) 
+//            throw new JenaTransactionException("Transactions cannot be 
nested!");
+//        transactionMode.set(TxnMode.convert(readWrite));
+//        _begin(readWrite) ;
+//    }
+    
+    public DatasetGraphTxn begin(TxnType mode, String label) {
         // The exclusivitylock surrounds the entire transaction cycle.
         // Paired with notifyCommit, notifyAbort.
         startNonExclusive();
@@ -314,7 +326,7 @@ public class TransactionManager
         // Not synchronized (else blocking on semaphore will never wake up
         // because Semaphore.release is inside synchronized).
         // Allow only one active writer. 
-        if ( mode == ReadWrite.WRITE ) {
+        if ( mode == TxnType.WRITE ) {
             // Writers take a WRITE permit from the semaphore to ensure there
             // is at most one active writer, else the attempt to start the
             // transaction blocks.
@@ -339,7 +351,7 @@ public class TransactionManager
      * "read committed" will always succeed but the app needs to be aware that 
data access before the promotion
      * is no longer valid. It may need to check it.   
      */
-    /*package*/ DatasetGraphTxn promote(DatasetGraphTxn dsgtxn, boolean 
readCommited) throws TDBTransactionException {
+    /*package*/ DatasetGraphTxn promote(DatasetGraphTxn dsgtxn, TxnType 
txnType) throws TDBTransactionException {
         Transaction txn = dsgtxn.getTransaction() ;
         if ( txn.getState() != TxnState.ACTIVE )
             throw new TDBTransactionException("promote: transaction is not 
active") ;
@@ -349,8 +361,8 @@ public class TransactionManager
         // Read commit - pick up whatever is current at the point setup.
         // Can also promote - may need to wait for active writers. 
         // Go through begin for the writers lock. 
-        if ( readCommited ) {
-            DatasetGraphTxn dsgtxn2 = begin(ReadWrite.WRITE, txn.getLabel()) ;
+        if ( txnType == TxnType.READ_COMMITTED_PROMOTE ) {
+            DatasetGraphTxn dsgtxn2 = begin(TxnType.WRITE, txn.getLabel()) ;
             // Junk the old one.
             return dsgtxn2 ;
         }
@@ -376,11 +388,11 @@ public class TransactionManager
         acquireWriterLock(true) ;
 
         // Do the synchronized stuff.
-        return promote2$(dsgtxn, readCommited) ; 
+        return promote2$(dsgtxn) ; 
     }
     
     synchronized
-    private DatasetGraphTxn promote2$(DatasetGraphTxn dsgtxn, boolean 
readCommited) {
+    private DatasetGraphTxn promote2$(DatasetGraphTxn dsgtxn) {
         Transaction txn = dsgtxn.getTransaction() ;
         // Writers may have happened between the first check of the active 
writers may have committed.  
         if ( txn.getVersion() != version.get() ) {
@@ -388,36 +400,39 @@ public class TransactionManager
             throw new TDBTransactionException("Active writer changed the 
dataset - can't promote") ;
         }
         // Use begin$ - we have the writers lock.
-        DatasetGraphTxn dsgtxn2 = begin$(ReadWrite.WRITE, txn.getLabel()) ;
+        DatasetGraphTxn dsgtxn2 = begin$(TxnType.WRITE, txn.getLabel()) ;
         return dsgtxn2 ;
     }
 
     // If DatasetGraphTransaction has a sync lock on sConn, this
     // does not need to be sync'ed. But it's possible to use some
-    // of the low level object directly so we'll play safe.  
+    // of the low level objects directly so we'll play safe.  
     
     synchronized
-    private DatasetGraphTxn begin$(ReadWrite mode, String label) {
-        if ( mode == ReadWrite.WRITE && activeWriters.get() > 0 )    // Guard
+    private DatasetGraphTxn begin$(TxnType txnType, String label) {
+        Objects.requireNonNull(txnType);
+        if ( txnType == TxnType.WRITE && activeWriters.get() > 0 )    // Guard
             throw new TDBTransactionException("Existing active write 
transaction") ;
 
         if ( DEBUG ) 
-            switch ( mode )
+            switch ( txnType )
             {
                 case READ : System.out.print("r") ; break ;
                 case WRITE : System.out.print("w") ; break ;
+                case READ_COMMITTED_PROMOTE : System.out.print("r(cp)") ; 
break ;
+                case READ_PROMOTE : System.out.print("rp") ; break ;
             }
         
         DatasetGraphTDB dsg = determineBaseDataset() ;
-        Transaction txn = createTransaction(dsg, mode, label) ;
+        Transaction txn = createTransaction(dsg, txnType, label) ;
         
         log("begin$", txn) ;
         
-        DatasetGraphTxn dsgTxn = createDSGTxn(dsg, txn, mode) ;
-
+        ReadWrite mode = initialMode(txnType);
+        DatasetGraphTxn dsgTxn = createDSGTxn(dsg, txn, mode);
         txn.setActiveDataset(dsgTxn) ;
 
-        // Empty for READ ; only WRITE transactions have components that need 
notifiying.
+        // Empty for READ ; only WRITE transactions have components that need 
notifying.
         List<TransactionLifecycle> components = 
dsgTxn.getTransaction().lifecycleComponents() ;
         
         if ( mode == ReadWrite.READ ) {
@@ -446,11 +461,16 @@ public class TransactionManager
               dsg = commitedAwaitingFlush.get(commitedAwaitingFlush.size() - 
1).getActiveDataset().getView() ;
           return dsg ;
       }
-    private Transaction createTransaction(DatasetGraphTDB dsg, ReadWrite mode, 
String label) {
-        Transaction txn = new Transaction(dsg, version.get(), mode, 
transactionId.getAndIncrement(), label, this) ;
+    private Transaction createTransaction(DatasetGraphTDB dsg, TxnType 
txnType, String label) {
+        Transaction txn = new Transaction(dsg, version.get(), txnType, 
initialMode(txnType), transactionId.getAndIncrement(), label, this) ;
         return txn ;
     }
 
+    // State.
+    private static ReadWrite initialMode(TxnType txnType) {
+        return (txnType == TxnType.WRITE) ? ReadWrite.WRITE : ReadWrite.READ;
+    }
+    
     private DatasetGraphTxn createDSGTxn(DatasetGraphTDB dsg, Transaction txn, 
ReadWrite mode) {
         // A read transaction (if it has no lifecycle components) can be 
shared over all
         // read transactions at the same commit level. 

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java
----------------------------------------------------------------------
diff --git 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java
 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java
index dbbcf7d..0b36d13 100644
--- 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java
+++ 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTrans.java
@@ -25,6 +25,7 @@ import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.tdb.base.objectfile.ObjectFile ;
 import org.apache.jena.tdb.transaction.ObjectFileTrans ;
 import org.apache.jena.tdb.transaction.Transaction ;
@@ -48,7 +49,7 @@ public abstract class AbstractTestObjectFileTrans extends 
BaseTest
     @Before
     public void setup()
     {
-        txn = new Transaction(null, 5, ReadWrite.WRITE, ++count, null, tm) ;
+        txn = new Transaction(null, 5, TxnType.WRITE, ReadWrite.WRITE, 
++count, null, tm) ;
         file1 = createFile("base") ;
         //file2 = createFile("log") ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java
----------------------------------------------------------------------
diff --git 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java
 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java
index 0e73ca2..3e46643 100644
--- 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java
+++ 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestObjectFileTransComplex.java
@@ -25,6 +25,7 @@ import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.lib.Pair ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.tdb.base.objectfile.ObjectFile ;
 import org.junit.After ;
 import org.junit.Before ;
@@ -47,7 +48,7 @@ public abstract class AbstractTestObjectFileTransComplex 
extends BaseTest
     @Before
     public void setup()
     {
-        txn = new Transaction(null, 5, ReadWrite.WRITE, ++count, null, tm) ;
+        txn = new Transaction(null, 5, TxnType.WRITE, ReadWrite.WRITE, 
++count, null, tm) ;
         file1 = createFile("base") ;
         file2 = createFile("log") ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java
----------------------------------------------------------------------
diff --git 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java
 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java
index 97f0f62..f341996 100644
--- 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java
+++ 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/AbstractTestTransSeq.java
@@ -21,7 +21,7 @@ package org.apache.jena.tdb.transaction;
 
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.logging.LogCtl ;
-import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.sparql.JenaTransactionException;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.Quad ;
@@ -56,12 +56,10 @@ public abstract class AbstractTestTransSeq extends BaseTest
 
     // Basics.
     
-    
-    
     @Test public void trans_01()
     {
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsg = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsg = sConn.begin(TxnType.READ) ;
         dsg.end() ;
     }
     
@@ -69,7 +67,7 @@ public abstract class AbstractTestTransSeq extends BaseTest
     @Test public void trans_02()
     {
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsg = sConn.begin(TxnType.WRITE) ;
         try {
             dsg.add(q) ;
             assertTrue(dsg.contains(q)) ;
@@ -81,14 +79,14 @@ public abstract class AbstractTestTransSeq extends BaseTest
     {
         // WRITE-commit-READ-check
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ;
         
         dsgW.add(q) ;
         assertTrue(dsgW.contains(q)) ;
         dsgW.commit() ;
         dsgW.end() ;
         
-        DatasetGraphTxn dsg2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsg2 = sConn.begin(TxnType.READ) ;
         assertTrue(dsg2.contains(q)) ;
         dsg2.end() ;
         
@@ -102,14 +100,14 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
     {
         // WRITE-abort-READ-check
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ;
         
         dsgW.add(q) ;
         assertTrue(dsgW.contains(q)) ;
         dsgW.abort() ;
         dsgW.end() ;
         
-        DatasetGraphTxn dsg2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsg2 = sConn.begin(TxnType.READ) ;
         assertFalse(dsg2.contains(q)) ;
         dsg2.end() ;
         
@@ -122,17 +120,17 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
     {
         // WRITE(commit)-WRITE(commit)-READ-check
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
         dsgW1.add(q1) ;
         dsgW1.commit() ;
         dsgW1.end() ;
 
-        DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW2 = sConn.begin(TxnType.WRITE) ;
         dsgW2.add(q2) ;
         dsgW2.commit() ;
         dsgW2.end() ;
 
-        DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
         assertTrue(dsgR2.contains(q1)) ;
         assertTrue(dsgR2.contains(q2)) ;
         dsgR2.end() ;
@@ -148,12 +146,12 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
         // READ(start)-READ(finish)-WRITE(start)-WRITE(commit)-check
         StoreConnection sConn = getStoreConnection() ;
         
-        DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
         assertFalse(dsgR2.contains(q1)) ;
         assertFalse(dsgR2.contains(q2)) ;
         dsgR2.end() ;
         
-        DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
         dsgW1.add(q1) ;
         dsgW1.add(q2) ;
         dsgW1.commit() ;
@@ -171,9 +169,9 @@ public abstract class AbstractTestTransSeq extends BaseTest
     {
         // READ(start)-WRITE(commit)-READ(finish)-check
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
         
-        DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ;
         
         dsgW.add(q) ;
         dsgW.commit() ;
@@ -186,7 +184,7 @@ public abstract class AbstractTestTransSeq extends BaseTest
         // Order of tweaking counters?
         // also writer and counters?
         
-        DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
         assertTrue(dsgR2.contains(q)) ;
         dsgR2.end() ;
         
@@ -200,9 +198,9 @@ public abstract class AbstractTestTransSeq extends BaseTest
     {
         // READ(start)-WRITE(abort)-READ(finish)-check
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
         
-        DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ;
         
         dsgW.add(q) ;
         dsgW.abort() ;
@@ -211,7 +209,7 @@ public abstract class AbstractTestTransSeq extends BaseTest
         assertFalse(dsgR1.contains(q)) ;
         dsgR1.end() ;
 
-        DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
         assertFalse(dsgR2.contains(q)) ;
         dsgR2.end() ;
         
@@ -223,16 +221,16 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
     {
         // READ(start)-WRITE(commit)-WRITE(commit)-READ(finish)-check
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
         
-        DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
         dsgW1.add(q1) ;
         dsgW1.commit() ;
         dsgW1.end() ;
 
         assertFalse(dsgR1.contains(q1)) ;
         
-        DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW2 = sConn.begin(TxnType.WRITE) ;
         dsgW2.add(q2) ;
         dsgW2.commit() ;
         dsgW2.end() ;
@@ -242,7 +240,7 @@ public abstract class AbstractTestTransSeq extends BaseTest
 
         dsgR1.end() ;
 
-        DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
         assertTrue(dsgR2.contains(q1)) ;
         assertTrue(dsgR2.contains(q2)) ;
         dsgR2.end() ;
@@ -258,15 +256,15 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
     {
         // READ(block)-WRITE(abort)-WRITE(commit)-READ(close)-check
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
         
-        DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW2 = sConn.begin(TxnType.WRITE) ;
         dsgW2.add(q2) ;
         dsgW2.abort() ; // ABORT
         dsgW2.end() ;
         assertFalse(dsgR1.contains(q2)) ;
 
-        DatasetGraphTxn dsgW3 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW3 = sConn.begin(TxnType.WRITE) ;
         dsgW3.add(q3) ;
         // Can see W1
         assertFalse(dsgW3.contains(q2)) ;
@@ -288,21 +286,21 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
     {
         // 
READ(block)-WRITE(commit)-WRITE(abort)-WRITE(commit)-READ(close)-check
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
         
-        DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
         dsgW1.add(q1) ;
         dsgW1.commit() ;
         dsgW1.end() ;
         assertFalse(dsgR1.contains(q1)) ;
         
-        DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW2 = sConn.begin(TxnType.WRITE) ;
         dsgW2.add(q2) ;
         dsgW2.abort() ; // ABORT
         dsgW2.end() ;
         assertFalse(dsgR1.contains(q2)) ;
 
-        DatasetGraphTxn dsgW3 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW3 = sConn.begin(TxnType.WRITE) ;
         dsgW3.add(q3) ;
         // Can see W1
         assertTrue(dsgW3.contains(q1)) ;
@@ -326,8 +324,8 @@ public abstract class AbstractTestTransSeq extends BaseTest
         // READ before WRITE remains seeing old view - READ after WRITE starts 
 
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
-        DatasetGraphTxn dsgR = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ;
+        DatasetGraphTxn dsgR = sConn.begin(TxnType.READ) ;
         
         dsgW.add(q) ;
         dsgW.commit() ;
@@ -336,7 +334,7 @@ public abstract class AbstractTestTransSeq extends BaseTest
         assertFalse(dsgR.contains(q)) ;
         dsgR.end() ;
 
-        DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
         assertTrue(dsgR2.contains(q)) ;
         dsgR2.end() ;
         
@@ -351,17 +349,17 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
         // READ before WRITE remains seeing old view - READ after WRITE starts 
 
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ;
         dsgW.add(q) ;
 
-        DatasetGraphTxn dsgR = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR = sConn.begin(TxnType.READ) ;
         dsgW.commit() ;
         dsgW.end() ;
         
         assertFalse(dsgR.contains(q)) ;
         dsgR.end() ;
         
-        DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
         assertTrue(dsgR2.contains(q)) ;
         dsgR2.end() ;
         
@@ -374,16 +372,16 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
     {
         // WRITE(start)-add-READ(start)-WRITE(commit)-READ sees old DSG.
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgW = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW = sConn.begin(TxnType.WRITE) ;
         dsgW.add(q) ;
         
-        DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
         assertFalse(dsgR1.contains(q)) ;  
         
         dsgW.commit() ;
         dsgW.end() ;
         
-        DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
         
         assertFalse(dsgR1.contains(q)) ;    // Before view
         assertTrue(dsgR2.contains(q)) ;     // After view
@@ -399,18 +397,18 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
     {
         // WRITE(commit)-READ(start)-WRITE(commit)-READ(finish)-check
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
         dsgW1.add(q1) ;
         dsgW1.commit() ;
         dsgW1.end() ;
 
-        DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
-        DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
+        DatasetGraphTxn dsgW2 = sConn.begin(TxnType.WRITE) ;
         dsgW2.add(q2) ;
         dsgW2.commit() ;
         dsgW2.end() ;
 
-        DatasetGraphTxn dsgR2 = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsgR2 = sConn.begin(TxnType.READ) ;
         assertTrue(dsgR1.contains(q1)) ;
         assertFalse(dsgR1.contains(q2)) ;
         
@@ -431,13 +429,13 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
         // 
READ(start)-WRITE(start)-WRITE(finish)-WRITE(start)-READ(finish)-WRITE(finish)-check
         StoreConnection sConn = getStoreConnection() ;
 
-        DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
-        DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
+        DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
         dsgW1.add(q1) ;
         dsgW1.commit() ;
         dsgW1.end() ;
         
-        DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW2 = sConn.begin(TxnType.WRITE) ;
         dsgW2.add(q2) ;
         dsgR1.end() ;
 
@@ -456,18 +454,18 @@ public abstract class AbstractTestTransSeq extends 
BaseTest
         // READ(start)-WRITE-WRITE-WRITE-READ(finish)-check
         StoreConnection sConn = getStoreConnection() ;
 
-        DatasetGraphTxn dsgR1 = sConn.begin(ReadWrite.READ) ;
-        DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgR1 = sConn.begin(TxnType.READ) ;
+        DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
         dsgW1.add(q1) ;
         dsgW1.commit() ;
         dsgW1.end() ;
         
-        DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW2 = sConn.begin(TxnType.WRITE) ;
         dsgW2.add(q2) ;
         dsgW2.commit() ;
         dsgW2.end() ;
 
-        DatasetGraphTxn dsgW3 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW3 = sConn.begin(TxnType.WRITE) ;
         dsgW3.add(q3) ;
         dsgW3.commit() ;
         dsgW3.end() ;
@@ -488,8 +486,8 @@ public abstract class AbstractTestTransSeq extends BaseTest
     {
         // Two WRITE : This would block.
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsgW1 = sConn.begin(ReadWrite.WRITE) ;
-        DatasetGraphTxn dsgW2 = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsgW1 = sConn.begin(TxnType.WRITE) ;
+        DatasetGraphTxn dsgW2 = sConn.begin(TxnType.WRITE) ;
     }
     
     @Test (expected=TDBException.class) 
@@ -497,7 +495,7 @@ public abstract class AbstractTestTransSeq extends BaseTest
     {
         // READ-add
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsg = sConn.begin(ReadWrite.READ) ;
+        DatasetGraphTxn dsg = sConn.begin(TxnType.READ) ;
         dsg.add(q) ;
     }
     
@@ -506,7 +504,7 @@ public abstract class AbstractTestTransSeq extends BaseTest
     {
         // WRITE-close causes implicit abort
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsg = sConn.begin(TxnType.WRITE) ;
         dsg.add(q) ;
         dsg.end() ;
     }
@@ -516,7 +514,7 @@ public abstract class AbstractTestTransSeq extends BaseTest
     {
         // WRITE lots
         StoreConnection sConn = getStoreConnection() ;
-        DatasetGraphTxn dsg = sConn.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsg = sConn.begin(TxnType.WRITE) ;
         for ( int i = 0 ; i < 600 ; i++ )
         {
             Quad q = SSE.parseQuad("(_ <s> <p> "+i+")") ;

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java
----------------------------------------------------------------------
diff --git 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java
 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java
index 550d3ae..c844c4b 100644
--- 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java
+++ 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransPromoteTDB.java
@@ -23,8 +23,6 @@ import 
org.apache.jena.sparql.transaction.AbstractTestTransPromote ;
 import org.apache.jena.tdb.TDB ;
 import org.apache.jena.tdb.TDBFactory ;
 import org.apache.jena.tdb.sys.SystemTDB ;
-import org.apache.jena.tdb.transaction.DatasetGraphTransaction ;
-import org.apache.jena.tdb.transaction.TDBTransactionException ;
 import org.apache.log4j.Logger ;
 
 /** Tests for transactions that start read and then promote to write -- TDB */
@@ -50,29 +48,28 @@ public class TestTransPromoteTDB extends 
AbstractTestTransPromote {
         return true ;
     }
 
+    // Redundant
+    
     @Override
     protected void setPromotion(boolean b) {
-        DatasetGraphTransaction.promotion = b ;
     }
 
     @Override
     protected boolean getPromotion() {
-        return DatasetGraphTransaction.promotion ;
+        return true;
     }
 
     @Override
     protected void setReadCommitted(boolean b) {
-        DatasetGraphTransaction.readCommittedPromotion = b ;
     }
 
     @Override
     protected boolean getReadCommitted() {
-        return DatasetGraphTransaction.readCommittedPromotion ;
+        return false;
     }
 
     @Override
     protected Class<TDBTransactionException> getTransactionExceptionClass() {
         return TDBTransactionException.class ;
     }
-
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/64f6357c/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransRestart.java
----------------------------------------------------------------------
diff --git 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransRestart.java 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransRestart.java
index 50d64d3..e05cbd3 100644
--- 
a/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransRestart.java
+++ 
b/jena-tdb/src/test/java/org/apache/jena/tdb/transaction/TestTransRestart.java
@@ -24,7 +24,7 @@ import java.util.Iterator ;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.lib.FileOps ;
 import org.apache.jena.atlas.lib.Pair ;
-import org.apache.jena.query.ReadWrite ;
+import org.apache.jena.query.TxnType;
 import org.apache.jena.sparql.core.Quad ;
 import org.apache.jena.sparql.sse.SSE ;
 import org.apache.jena.tdb.ConfigTest ;
@@ -37,7 +37,6 @@ import org.apache.jena.tdb.store.DatasetGraphTDB ;
 import org.apache.jena.tdb.sys.Names ;
 import org.apache.jena.tdb.sys.SystemTDB ;
 import org.apache.jena.tdb.sys.TDBMaker ;
-import org.apache.jena.tdb.transaction.DatasetGraphTxn ;
 import org.junit.After ;
 import org.junit.Before ;
 import org.junit.Test ;
@@ -86,7 +85,7 @@ public class TestTransRestart extends BaseTest {
         StoreConnection.release(location) ;
         FileOps.clearDirectory(path);
         StoreConnection sc = StoreConnection.make(location) ;
-        DatasetGraphTxn dsg = sc.begin(ReadWrite.WRITE);
+        DatasetGraphTxn dsg = sc.begin(TxnType.WRITE);
         dsg.add(quad1) ; 
         dsg.commit() ;
         dsg.end() ;
@@ -105,7 +104,7 @@ public class TestTransRestart extends BaseTest {
     public void testTxn() {
         assertEquals (3, countRDFNodes()) ;
         StoreConnection sc = StoreConnection.make(location) ; 
-        DatasetGraphTxn dsg = sc.begin(ReadWrite.WRITE) ;
+        DatasetGraphTxn dsg = sc.begin(TxnType.WRITE) ;
         assertTrue(dsg.contains(quad1)) ;
         dsg.add(quad2) ; 
         dsg.commit() ; 
@@ -138,5 +137,4 @@ public class TestTransRestart extends BaseTest {
         objects.close() ;
         return count ;
     }
-    
 }

Reply via email to