You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/01/19 20:44:49 UTC

svn commit: r1233550 - in /incubator/jena/Jena2/TDB/trunk: src-dev/dev/ src/main/java/com/hp/hpl/jena/tdb/ src/main/java/com/hp/hpl/jena/tdb/solver/ src/main/java/com/hp/hpl/jena/tdb/store/ src/main/java/com/hp/hpl/jena/tdb/transaction/

Author: andy
Date: Thu Jan 19 19:44:48 2012
New Revision: 1233550

URL: http://svn.apache.org/viewvc?rev=1233550&view=rev
Log:
Enable transactional datasets from TDBFactory.

Modified:
    incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/solver/QueryEngineTDB.java
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java

Modified: incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java?rev=1233550&r1=1233549&r2=1233550&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src-dev/dev/TestTxn.java Thu Jan 19 19:44:48 2012
@@ -52,8 +52,8 @@ public class TestTxn extends BaseTest
     
     protected Dataset create()
     { 
-        //DatasetGraph dsg = TDBFactory.createDatasetGraph(DIR) ;
-        DatasetGraph dsg = TDBFactoryTxn.XcreateDatasetGraph(Location.mem(DIR)) ;
+        DatasetGraph dsg = TDBFactory.createDatasetGraph() ;
+        //DatasetGraph dsg = TDBFactoryTxn.XcreateDatasetGraph(Location.mem(DIR)) ;
         
         if ( dsg instanceof DatasetGraphTDB )
             dsg = new DatasetGraphTransaction((DatasetGraphTDB)dsg) ;    

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java?rev=1233550&r1=1233549&r2=1233550&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java Thu Jan 19 19:44:48 2012
@@ -96,7 +96,6 @@ public class TDBFactory
         return DatasetFactory.create(TDBMaker._createDatasetGraph()) ;
     }
 
-
     private static DatasetGraph _createDatasetGraph(Location location)
     { 
         DatasetGraphTDB dsg = TDBMaker._createDatasetGraph(location) ;
@@ -120,10 +119,20 @@ public class TDBFactory
         return asTransactional(dsg) ;
     }
     
+    /** By default, TDBFcatory returns Datasets and DatasetGraphs that can be used in
+     *  transactions.  To force a return to TDB 0.8.x behaviour of returning 
+     *  Datasets and DatasetGraphs attached directly to the storage, set this
+     *  to false.  Warning: it's global. 
+     */
+    
+    public static boolean MAKE_TRANSACTIONAL_DATASETS = true ; 
+    
     private static DatasetGraph asTransactional(DatasetGraphTDB dsg)
     {
-        return dsg ;
-        //return new DatasetGraphTransaction(dsg) ;
+        if ( MAKE_TRANSACTIONAL_DATASETS )
+            return new DatasetGraphTransaction(dsg) ;
+        else
+            return dsg ;
     }
 
     /** Return the location of a dataset if it is backed by TDB, else null */ 

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/solver/QueryEngineTDB.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/solver/QueryEngineTDB.java?rev=1233550&r1=1233549&r2=1233550&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/solver/QueryEngineTDB.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/solver/QueryEngineTDB.java Thu Jan 19 19:44:48 2012
@@ -20,6 +20,8 @@ package com.hp.hpl.jena.tdb.solver;
 
 import java.util.Set ;
 
+import org.openjena.atlas.lib.Lib ;
+
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.query.Query ;
 import com.hp.hpl.jena.sparql.algebra.Algebra ;
@@ -38,6 +40,7 @@ import com.hp.hpl.jena.sparql.mgt.Explai
 import com.hp.hpl.jena.sparql.util.Context ;
 import com.hp.hpl.jena.sparql.util.NodeUtils ;
 import com.hp.hpl.jena.tdb.TDB ;
+import com.hp.hpl.jena.tdb.TDBException ;
 import com.hp.hpl.jena.tdb.migrate.A2 ;
 import com.hp.hpl.jena.tdb.migrate.DynamicDatasets ;
 import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
@@ -61,7 +64,7 @@ public class QueryEngineTDB extends Quer
     private Binding initialInput ;
 
     // ---- Object
-    protected QueryEngineTDB(Op op, DatasetGraph dataset, Binding input, Context context)
+    protected QueryEngineTDB(Op op, DatasetGraphTDB dataset, Binding input, Context context)
     {
         super(op, dataset, input, context) ;
         this.initialInput = input ;
@@ -77,7 +80,7 @@ public class QueryEngineTDB extends Quer
     private static final boolean DynamicDatasetByRewrite = false ;
     private boolean doingDynamicDatasetBySpecialDataset = false ;
     
-    protected QueryEngineTDB(Query query, DatasetGraph dataset, Binding input, Context cxt)
+    protected QueryEngineTDB(Query query, DatasetGraphTDB dataset, Binding input, Context cxt)
     { 
         super(query, dataset, input, cxt) ; 
         // [[DynDS]]
@@ -161,6 +164,8 @@ public class QueryEngineTDB extends Quer
         
     private static class QueryEngineFactoryTDB implements QueryEngineFactory
     {
+        // If a DatasetGraphTransaction is passed in, we are outside a transaction.
+        
         private static boolean isHandledByTDB(DatasetGraph dataset)
         {
             if (dataset instanceof DatasetGraphTDB) return true ;
@@ -168,6 +173,14 @@ public class QueryEngineTDB extends Quer
             return false ;
         }
         
+        private DatasetGraphTDB dsgToQuery(DatasetGraph dataset)
+        {
+            if (dataset instanceof DatasetGraphTDB) return (DatasetGraphTDB)dataset ;
+            if (dataset instanceof DatasetGraphTransaction) 
+                return ((DatasetGraphTransaction)dataset).getDatasetGraphToQuery() ;
+            throw new TDBException("Internal inconsistency: trying to execute query on unrecognized kind of DatasetGraph: "+Lib.className(dataset)) ;
+        }
+        
         @Override
         public boolean accept(Query query, DatasetGraph dataset, Context context) 
         { return isHandledByTDB(dataset) ; }
@@ -177,7 +190,7 @@ public class QueryEngineTDB extends Quer
         {
             //DatasetGraphTDB ds = (DatasetGraphTDB)dataset ;
             dynamicDatasetQE(query, context) ;
-            QueryEngineTDB engine = new QueryEngineTDB(query, dataset, input, context) ;
+            QueryEngineTDB engine = new QueryEngineTDB(query, dsgToQuery(dataset), input, context) ;
             return engine.getPlan() ;
         }
         

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java?rev=1233550&r1=1233549&r2=1233550&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java Thu Jan 19 19:44:48 2012
@@ -43,7 +43,7 @@ import com.hp.hpl.jena.tdb.sys.Session ;
 import com.hp.hpl.jena.tdb.sys.TDBMaker ;
 import com.hp.hpl.jena.update.GraphStore ;
 
-/** TDB Dataset, updateable with SPARQL/Update */
+/** TDB Dataset - directly over the basic storage. */
 public class DatasetGraphTDB extends DatasetGraphCaching
                              implements DatasetGraph, Sync, Closeable, GraphStore, Session
 {
@@ -60,8 +60,6 @@ public class DatasetGraphTDB extends Dat
     public DatasetGraphTDB(TripleTable tripleTable, QuadTable quadTable, DatasetPrefixesTDB prefixes, 
                            ReorderTransformation transform, StoreConfig config)
     {
-        // ?? Change to 3 nodetables and add TripleTable/QuadTable/PrefixTable wrappers.
-        
         this.tripleTable = tripleTable ;
         this.quadTable = quadTable ;
         this.prefixes = prefixes ;

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java?rev=1233550&r1=1233549&r2=1233550&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java Thu Jan 19 19:44:48 2012
@@ -53,14 +53,18 @@ public class DatasetGraphTransaction ext
     }
 
     public Location getLocation()       { return sConn.getLocation() ; }
+    public DatasetGraphTDB getDatasetGraphToQuery()
+    {
+        return get() ;
+    }
     
     @Override
-    protected DatasetGraph get()
+    protected DatasetGraphTDB get()
     {
         if ( isInTransaction() )
         {
             if ( dsgTxn == null )
-                throw new TDBTransactionException("In a transaction but no translational DatasetGraph") ;
+                throw new TDBTransactionException("In a transaction but no transactional DatasetGraph") ;
             return dsgTxn ;
         }