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/27 19:19:47 UTC

svn commit: r1236798 - 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/sys/ src/main/java/tdb/tools/ src/test/java/com/hp/hpl/jena/tdb/ src/test/java/com/hp/hpl/jena/tdb/store/

Author: andy
Date: Fri Jan 27 18:19:46 2012
New Revision: 1236798

URL: http://svn.apache.org/viewvc?rev=1236798&view=rev
Log:
Switch to cerating datasets via StoreConnection always (uses StoreConnection cache for non-transaction usage DSGs).

Added:
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java
      - copied, changed from r1235846, incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java
Removed:
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java
Modified:
    incubator/jena/Jena2/TDB/trunk/src-dev/dev/Jena202_TDBDatasetSetChurn.java
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.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/sys/TDBMaker.java
    incubator/jena/Jena2/TDB/trunk/src/main/java/tdb/tools/dumpnodetable.java
    incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java
    incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java

Modified: incubator/jena/Jena2/TDB/trunk/src-dev/dev/Jena202_TDBDatasetSetChurn.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src-dev/dev/Jena202_TDBDatasetSetChurn.java?rev=1236798&r1=1236797&r2=1236798&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src-dev/dev/Jena202_TDBDatasetSetChurn.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src-dev/dev/Jena202_TDBDatasetSetChurn.java Fri Jan 27 18:19:46 2012
@@ -22,6 +22,7 @@ import org.openjena.atlas.iterator.Iter 
 import org.openjena.atlas.lib.FileOps ;
 import org.openjena.atlas.logging.Log ;
 
+import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Triple ;
 import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.query.ReadWrite ;
@@ -43,7 +44,7 @@ public class Jena202_TDBDatasetSetChurn
         int i ;
         int Chunk = 1000 ;
         int tock = 100 ;
-        for ( i = 0 ; i < 10000 ; i ++ )
+        for ( i = 0 ; i < 1000 ; i ++ )
         {
             if ( i != 0 && i%tock == 0 )
                 System.out.println() ;
@@ -52,7 +53,7 @@ public class Jena202_TDBDatasetSetChurn
             Dataset ds = TDBFactory.createDataset(DB) ;
             ds.begin(ReadWrite.WRITE) ;
             for ( int j = i*Chunk; j < (i+1)*Chunk ; j++ )
-                ds.getDefaultModel().getGraph().add(SSE.parseTriple("(<s> <p> 'X"+j+"')")) ;
+                ds.getDefaultModel().getGraph().add(triple(j)) ;
             ds.commit();
             ds.end() ;
             
@@ -68,4 +69,12 @@ public class Jena202_TDBDatasetSetChurn
         System.out.println("DONE") ;
         System.exit(0) ;
     }
+    
+    static Node s = Node.createURI("s") ;
+    static Node p = Node.createURI("s") ;
+    static Triple triple(int i)
+    {
+        Node o = Node.createLiteral("X"+i) ;
+        return new Triple(s,p,o) ;
+    }
 }

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java?rev=1236798&r1=1236797&r2=1236798&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDB.java Fri Jan 27 18:19:46 2012
@@ -110,7 +110,8 @@ public class TDB
      */
     public static void closedown()
     {
-        TDBMaker.clearDatasetCache() ;
+        TDBMaker.reset() ;
+        StoreConnection.reset() ;
     }
     
     /** Set the global flag that control the "No BGP optimizer" warning.

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=1236798&r1=1236797&r2=1236798&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 Fri Jan 27 18:19:46 2012
@@ -18,8 +18,6 @@
 
 package com.hp.hpl.jena.tdb;
 
-import org.openjena.atlas.logging.Log ;
-
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.query.Dataset ;
@@ -27,15 +25,12 @@ import com.hp.hpl.jena.query.DatasetFact
 import com.hp.hpl.jena.rdf.model.Model ;
 import com.hp.hpl.jena.rdf.model.ModelFactory ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.core.Transactional ;
 import com.hp.hpl.jena.sparql.core.assembler.AssemblerUtils ;
-import com.hp.hpl.jena.sparql.engine.optimizer.reorder.ReorderLib ;
-import com.hp.hpl.jena.sparql.engine.optimizer.reorder.ReorderTransformation ;
 import com.hp.hpl.jena.tdb.assembler.VocabTDB ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
-import com.hp.hpl.jena.tdb.sys.SystemTDB ;
 import com.hp.hpl.jena.tdb.sys.TDBMaker ;
+import com.hp.hpl.jena.tdb.sys.TDBMakerTxn ;
 import com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction ;
 
 /** Public factory for creating objects datasets backed by TDB storage */
@@ -96,55 +91,131 @@ public class TDBFactory
         return DatasetFactory.create(TDBMaker._createDatasetGraph()) ;
     }
 
+    /** Create a TDB-backed Dataset directly over the storage in memory (not transactional) (testing only) */  
+    public static void release(Dataset dataset)
+    {
+        _release(location(dataset)) ;
+    }
+    
+    /** Create a TDB-backed Dataset directly over the storage in memory (not transactional) (testing only) */  
+    public static void release(DatasetGraph dataset)
+    {
+        _release(location(dataset)) ;
+    }
+    
+    /** Reset internal state, releasing all datasets.
+     *  No checking done, do not call while TDB is execution queries or updates.
+     *  Mainly for the tests to have a known clean state. 
+     */
+    public static void reset()
+    {
+        //TDBMaker.reset() ;
+        TDBMakerTxn.reset() ;
+    }
+
+    // >>>>--------------------------------------
+    // Chocie of actual making process.
+    
+//    // TDB 0.8.x version
+//    
+//    private static DatasetGraph _createDatasetGraphNonTxn(Location location)
+//    { 
+//        DatasetGraphTDB dsg = TDBMaker._createDatasetGraph(location) ;
+//        if ( dsg instanceof Transactional)
+//        {
+//            Log.info(TDBFactory.class, "TDBMaker returns a transactional DatasetGraphs") ; 
+//            // v0.9.0 - doesn't happen but this prepares for a possible future.
+//            return dsg ;
+//        }
+//        // Not transactional - add the switching wrapper.
+//        return asTransactional(dsg) ; }
+//    
+//    private static DatasetGraph _createDatasetGraphNonTxn()
+//    {
+//        // Make silent by setting the optimizer to the no-opt
+//        ReorderTransformation rt = SystemTDB.defaultOptimizer ;
+//        if ( rt == null )
+//            SystemTDB.defaultOptimizer = ReorderLib.identity() ;
+//        DatasetGraphTDB dsg = TDBMaker._createDatasetGraph() ;
+//        SystemTDB.defaultOptimizer  = rt ;
+//        return asTransactional(dsg) ;
+//    }
+//    
+//    private static boolean MAKE_TRANSACTIONAL_DATASETS = true ; 
+//    
+//    private static DatasetGraph asTransactional(DatasetGraphTDB dsg)
+//    {
+//        if ( dsg instanceof DatasetGraphTxn )
+//            throw new TDBException("DatasetGraphTDB is a transaction") ;
+//        
+//        if ( MAKE_TRANSACTIONAL_DATASETS )
+//            return new DatasetGraphTransaction(dsg) ;
+//        else
+//            return dsg ;
+//    }
+//
+//    private static void _release(Location location)
+//    {
+//        if ( location == null )
+//           return ;
+//        TDBMaker.releaseLocation(location) ;
+//    }
+
     private static DatasetGraph _createDatasetGraph(Location location)
-    { 
-        DatasetGraphTDB dsg = TDBMaker._createDatasetGraph(location) ;
-        if ( dsg instanceof Transactional)
-        {
-            Log.info(TDBFactory.class, "TDBMaker returns a transactional DatasetGraphs") ; 
-            // v0.9.0 - doesn't happen but this prepares for a possible future.
-            return dsg ;
-        }
-        // Not transactional - add the switching wrapper.
-        return asTransactional(dsg) ; }
+    {
+        return TDBMakerTxn.createDatasetGraph(location) ;
+    }
     
     private static DatasetGraph _createDatasetGraph()
     {
-        // Make silent by setting the optimizer to the no-opt
-        ReorderTransformation rt = SystemTDB.defaultOptimizer ;
-        if ( rt == null )
-            SystemTDB.defaultOptimizer = ReorderLib.identity() ;
-        DatasetGraphTDB dsg = TDBMaker._createDatasetGraph() ;
-        SystemTDB.defaultOptimizer  = rt ;
-        return asTransactional(dsg) ;
+        return TDBMakerTxn.createDatasetGraph() ;
     }
     
-    /** By default, TDBFactory 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. 
-     */
+    private static void _release(Location location)
+    {
+        if ( location == null )
+            return ;
+        TDBMakerTxn.releaseLocation(location) ;
+    }
+
+    // <<<<--------------------------------------
     
-    public static boolean MAKE_TRANSACTIONAL_DATASETS = true ; 
+    /** Return the location of a dataset if it is backed by TDB, else null */ 
+    public static boolean isBackedByTDB(Dataset dataset)
+    {
+        DatasetGraph dsg = dataset.asDatasetGraph() ;
+        return isBackedByTDB(dsg) ;
+    }
     
-    private static DatasetGraph asTransactional(DatasetGraphTDB dsg)
+    /** Return the location of a dataset if it is backed by TDB, else null */ 
+    public static boolean isBackedByTDB(DatasetGraph datasetGraph)
     {
-        if ( MAKE_TRANSACTIONAL_DATASETS )
-            return new DatasetGraphTransaction(dsg) ;
-        else
-            return dsg ;
+        if ( datasetGraph instanceof DatasetGraphTransaction )
+            // The swicthing "connection" for TDB 
+            return true ;
+        if ( datasetGraph instanceof DatasetGraphTDB )
+            // A transaction or the base storage.
+            return true ;
+        return false ;
     }
+    
+        
 
     /** Return the location of a dataset if it is backed by TDB, else null */ 
     public static Location location(Dataset dataset)
     {
-        return TDBFactoryTxn.location(dataset) ;
+        DatasetGraph dsg = dataset.asDatasetGraph() ;
+        return location(dsg) ;
     }
 
-    /** Return the location of a dataset if it is backed by TDB, else null */ 
-    public static Location location(DatasetGraph dataset)
+    /** Return the location of a DatasetGraph if it is backed by TDB, else null */ 
+    public static Location location(DatasetGraph datasetGraph)
     {
-        return TDBFactoryTxn.location(dataset) ;
+        if ( datasetGraph instanceof DatasetGraphTDB )
+            return ((DatasetGraphTDB)datasetGraph).getLocation() ;
+        if ( datasetGraph instanceof DatasetGraphTransaction )
+            return ((DatasetGraphTransaction)datasetGraph).getLocation() ;
+        return null ;
     }
 
     /** Read the file and assembler a graph, of type TDB persistent graph

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java?rev=1236798&r1=1236797&r2=1236798&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java Fri Jan 27 18:19:46 2012
@@ -21,7 +21,9 @@ package com.hp.hpl.jena.tdb.sys;
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
 
-/** The workhorse for TDB Factory - hides the internal operations from
+/** 
+ * Non-transactions dataaset creation.
+ * The workhorse for TDB Factory - hides the internal operations from
  * the public interface (and javadoc) of TDBFactory for clarity.  
  */
 public class TDBMaker
@@ -33,7 +35,7 @@ public class TDBMaker
     
     /** Implementation factory for cached creation of datasets */ 
     public final static DatasetGraphMakerTDB cachedFactory = new CachingTDBMaker(uncachedFactory) ;
-
+    
     // Caching by location.
     private final static boolean CACHING = true ;
 
@@ -53,7 +55,7 @@ public class TDBMaker
     private static DatasetGraphMakerTDB factory = stdFactory ;
 
     /** Clear any TDB dataset cache */
-    public static void clearDatasetCache()
+    public static void reset()
     {
         if ( factory instanceof CachingTDBMaker )
             ((CachingTDBMaker)factory).flush();

Copied: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java (from r1235846, incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java)
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java?p2=incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java&p1=incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java&r1=1235846&r2=1236798&rev=1236798&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMakerTxn.java Fri Jan 27 18:19:46 2012
@@ -16,85 +16,32 @@
  * limitations under the License.
  */
 
-package com.hp.hpl.jena.tdb;
+package com.hp.hpl.jena.tdb.sys;
 
-import com.hp.hpl.jena.query.Dataset ;
-import com.hp.hpl.jena.query.DatasetFactory ;
-import com.hp.hpl.jena.sparql.core.DatasetGraph ;
-import com.hp.hpl.jena.sparql.core.assembler.AssemblerUtils ;
-import com.hp.hpl.jena.tdb.assembler.VocabTDB ;
+import com.hp.hpl.jena.tdb.StoreConnection ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
 import com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction ;
 
 /** factory for creating objects datasets backed by TDB storage which support transactions */
-class TDBFactoryTxn
+public class TDBMakerTxn
 {
-    // This is TDBFactory with a different maker.??
-    
-    // Assembler versions
-    
-    /** Create a Dataset that supports transactions */  
-    public static Dataset XcreateDataset(Location location)
-    {
-        return DatasetFactory.create(XcreateDatasetGraph(location)) ;
-    }
-
-    /** Create a Dataset that supports transactions */  
-    public static Dataset XcreateDataset(String location)
-    {
-        return DatasetFactory.create(XcreateDatasetGraph(location)) ;
-    }
-    
-    /** Create a Dataset that supports transactions but runs in-memory (for creating test cases)*/  
-    public static Dataset XcreateDataset()
-    {
-        return XcreateDataset(Location.mem()) ;
-    }
-    
-    /** Read the assembler file and create a dataset with transctional capabilities.
-     * Assumes the file contains exactly one definition of a TDB dataset.  
-     */ 
-    public static Dataset XassembleDataset(String assemblerFile)
-    {
-        Dataset ds = (Dataset)AssemblerUtils.build(assemblerFile, VocabTDB.tDatasetTDB) ;
-        DatasetGraphTDB dsg = (DatasetGraphTDB)(ds.asDatasetGraph()) ;
-        return DatasetFactory.create(_create(dsg)) ;
-    }
-    
-    /** Return the location of a dataset if it is backed by TDB, else null */ 
-    public static Location location(Dataset dataset)
-    {
-        DatasetGraph dsg = dataset.asDatasetGraph() ;
-        return location(dsg) ;
-    }
-        
-    /** Return the location of a DatasetGraph if it is backed by TDB, else null */ 
-    public static Location location(DatasetGraph datasetGraph)
-    {
-        if ( datasetGraph instanceof DatasetGraphTDB )
-            return ((DatasetGraphTDB)datasetGraph).getLocation() ;
-        if ( datasetGraph instanceof DatasetGraphTransaction )
-            return ((DatasetGraphTransaction)datasetGraph).getLocation() ;
-        return null ;
-    }
-
     /** Create a DatasetGraph that supports transactions */  
-    public static DatasetGraphTransaction XcreateDatasetGraph(String location)
+    public static DatasetGraphTransaction createDatasetGraph(String location)
     {
-        return XcreateDatasetGraph(new Location(location)) ;
+        return createDatasetGraph(new Location(location)) ;
     }
     
     /** Create a Dataset that supports transactions */  
-    public static DatasetGraphTransaction XcreateDatasetGraph(Location location)
+    public static DatasetGraphTransaction createDatasetGraph(Location location)
     {
         return _create(location) ;
     }
     
     /** Create a Dataset that supports transactions but runs in-memory (for creating test cases)*/  
-    public static DatasetGraphTransaction XcreateDatasetGraph()
+    public static DatasetGraphTransaction createDatasetGraph()
     {
-        return XcreateDatasetGraph(Location.mem()) ;
+        return createDatasetGraph(Location.mem()) ;
     }
 
     private static DatasetGraphTransaction _create(Location location)
@@ -108,5 +55,15 @@ class TDBFactoryTxn
         // No need to cache StoreConnection does all that.
         return new DatasetGraphTransaction(dsg) ;
     }
+
+    public static void releaseLocation(Location location)
+    {
+        StoreConnection.release(location) ;
+    }
+
+    public static void reset()
+    {
+        StoreConnection.reset() ;
+    }
 }
 

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/tdb/tools/dumpnodetable.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/tdb/tools/dumpnodetable.java?rev=1236798&r1=1236797&r2=1236798&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/tdb/tools/dumpnodetable.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/tdb/tools/dumpnodetable.java Fri Jan 27 18:19:46 2012
@@ -33,6 +33,7 @@ import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.Node_Literal ;
 import com.hp.hpl.jena.sparql.util.FmtUtils ;
 import com.hp.hpl.jena.sparql.util.Utils ;
+import com.hp.hpl.jena.tdb.StoreConnection ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.nodetable.NodeTable ;
 import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
@@ -40,7 +41,6 @@ import com.hp.hpl.jena.tdb.store.NodeId 
 import com.hp.hpl.jena.tdb.sys.Names ;
 import com.hp.hpl.jena.tdb.sys.SetupTDB ;
 import com.hp.hpl.jena.tdb.sys.SystemTDB ;
-import com.hp.hpl.jena.tdb.sys.TDBMaker ;
 
 public class dumpnodetable extends CmdGeneral
 {
@@ -59,7 +59,8 @@ public class dumpnodetable extends CmdGe
         List<String> quadIndexes = Arrays.asList(Names.quadIndexes) ;
         Location loc = modLocation.getLocation() ;
         
-        DatasetGraphTDB dsg = TDBMaker._createDatasetGraph(loc) ;
+        StoreConnection sConn = StoreConnection.make(loc) ; 
+        DatasetGraphTDB dsg = sConn.getBaseDataset() ;
         NodeTable nodeTable = dsg.getQuadTable().getNodeTupleTable().getNodeTable() ;
         dump(System.out, nodeTable) ;
     }

Modified: incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java?rev=1236798&r1=1236797&r2=1236798&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java Fri Jan 27 18:19:46 2012
@@ -24,15 +24,23 @@ import org.junit.Test ;
 import org.openjena.atlas.junit.BaseTest ;
 import org.openjena.atlas.lib.FileOps ;
 
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.core.Quad ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
 import com.hp.hpl.jena.tdb.sys.DatasetGraphMakerTDB ;
 import com.hp.hpl.jena.tdb.sys.TDBMaker ;
+import com.hp.hpl.jena.tdb.sys.TDBMakerTxn ;
+import com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction ;
 
 public class TestTDBFactory extends BaseTest
 {
     static final String DIR = ConfigTest.getTestingDirDB() ; 
     
+    static Quad quad1 = SSE.parseQuad("(_ <s> <p> 1)") ;
+    static Quad quad2 = SSE.parseQuad("(_ <s> <p> 1)") ;
+    
     @BeforeClass public static void beforeClass()
     {
         FileOps.clearDirectory(DIR) ; 
@@ -43,18 +51,72 @@ public class TestTDBFactory extends Base
         FileOps.clearDirectory(DIR) ; 
     }
     
-    @Test public void factory1()
+    @Test public void testTDBFactory1()
     {
-        DatasetGraphTDB dg1 = TDBMaker._createDatasetGraph(Location.mem()) ;
-        DatasetGraphTDB dg2 = TDBMaker._createDatasetGraph(Location.mem()) ;
+        TDBFactory.reset() ;
+        DatasetGraph dg1 = TDBFactory.createDatasetGraph(Location.mem("FOO")) ;
+        DatasetGraph dg2 = TDBFactory.createDatasetGraph(Location.mem("FOO")) ;
+        dg1.add(quad1) ;
+        assertTrue(dg2.contains(quad1)) ;
+    }
+    
+    @Test public void testTDBFactory2()
+    {
+        TDBFactory.reset() ;
+        // The unnamed location is unique each time.
+        DatasetGraph dg1 = TDBFactory.createDatasetGraph(Location.mem()) ;
+        DatasetGraph dg2 = TDBFactory.createDatasetGraph(Location.mem()) ;
+        dg1.add(quad1) ;
+        assertFalse(dg2.contains(quad1)) ;
+    }
+
+    @Test public void testTDBMakerTxn1()
+    {
+        TDBMakerTxn.reset() ;
+        DatasetGraph dg1 = TDBMakerTxn.createDatasetGraph(DIR) ;
+        DatasetGraph dg2 = TDBMakerTxn.createDatasetGraph(DIR) ;
+        
+        DatasetGraph dgBase1 = ((DatasetGraphTransaction)dg1).getBaseDatasetGraph() ;
+        DatasetGraph dgBase2 = ((DatasetGraphTransaction)dg2).getBaseDatasetGraph() ;
+        
+        assertSame(dgBase1, dgBase2) ;
+    }
+    
+    @Test public void testTDBMakerTxn2()
+    {
+        TDBMakerTxn.reset() ;
+        DatasetGraph dg1 = TDBMakerTxn.createDatasetGraph(Location.mem("FOO")) ;
+        DatasetGraph dg2 = TDBMakerTxn.createDatasetGraph(Location.mem("FOO")) ;
+        
+        DatasetGraph dgBase1 = ((DatasetGraphTransaction)dg1).getBaseDatasetGraph() ;
+        DatasetGraph dgBase2 = ((DatasetGraphTransaction)dg2).getBaseDatasetGraph() ;
+        
+        assertSame(dgBase1, dgBase2) ;
+    }
+    
+    @Test public void testTDBMaker1()
+    {
+        TDBMaker.reset() ;
+        DatasetGraph dg1 = TDBMaker._createDatasetGraph(Location.mem()) ;
+        DatasetGraph dg2 = TDBMaker._createDatasetGraph(Location.mem()) ;
         assertSame(dg1, dg2) ;
     }
     
-    @Test public void factory2()
+    @Test public void testTDBMaker2()
     {
+        TDBMaker.reset() ;
+        DatasetGraph dg1 = TDBMaker._createDatasetGraph(DIR) ;
+        DatasetGraph dg2 = TDBMaker._createDatasetGraph(DIR) ;
+        assertSame(dg1, dg2) ;
+    }
+    
+    @Test public void testTDBMaker3()
+    {
+        TDBMaker.reset() ;
+        
         DatasetGraphMakerTDB f = TDBMaker.getImplFactory() ;
 
-        TDBMaker.clearDatasetCache() ;
+        
         DatasetGraphTDB dg0 = TDBMaker._createDatasetGraph(Location.mem()) ;
 
         // Uncached.

Modified: incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java?rev=1236798&r1=1236797&r2=1236798&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java Fri Jan 27 18:19:46 2012
@@ -66,7 +66,7 @@ public class TestDatasetTDBPersist exten
     
     @After public void after()
     {
-    	TDBMaker.clearDatasetCache() ;
+    	TDBMaker.reset() ;
     	if ( graphLocation != null )
     		graphLocation.release() ;
     	graphLocation.clearDirectory() ;	// Does nto have the desired effect on Windows.