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 2011/11/15 22:08:46 UTC

svn commit: r1202423 - in /incubator/jena/Jena2/TDB/trunk/src: main/java/com/hp/hpl/jena/tdb/ main/java/com/hp/hpl/jena/tdb/migrate/ test/java/com/hp/hpl/jena/tdb/

Author: andy
Date: Tue Nov 15 21:08:46 2011
New Revision: 1202423

URL: http://svn.apache.org/viewvc?rev=1202423&view=rev
Log:
Factory for transactional datasets.

Added:
    incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java
Modified:
    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/migrate/DatasetGraphTrackActive.java
    incubator/jena/Jena2/TDB/trunk/src/test/java/com/hp/hpl/jena/tdb/TestTDBFactory.java

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=1202423&r1=1202422&r2=1202423&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 Tue Nov 15 21:08:46 2011
@@ -33,7 +33,7 @@ import com.hp.hpl.jena.tdb.store.Dataset
 import com.hp.hpl.jena.tdb.sys.SystemTDB ;
 import com.hp.hpl.jena.tdb.sys.TDBMaker ;
 
-/** Public factory for creating objects (graphs, datasest) associated with TDB */
+/** Public factory for creating objects datasets backed by TDB storage */
 public class TDBFactory
 {
     private TDBFactory() {} 

Added: 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/TDBFactoryTxn.java?rev=1202423&view=auto
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java (added)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/TDBFactoryTxn.java Tue Nov 15 21:08:46 2011
@@ -0,0 +1,74 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.tdb;
+
+import com.hp.hpl.jena.query.Dataset ;
+import com.hp.hpl.jena.query.DatasetFactory ;
+import com.hp.hpl.jena.tdb.base.file.Location ;
+
+/** Public factory for creating objects datasets backed by TDB storage which support transactions */
+public class TDBFactoryTxn
+{
+    // Assembler versions
+    
+    /** Create a Dataset that supports transactions */  
+    public static Dataset createDataset(Location location)
+    {
+        return DatasetFactory.create(createDatasetGraph(location)) ;
+    }
+
+    /** Create a Dataset that supports transactions */  
+    public static Dataset createDataset(String location)
+    {
+        return DatasetFactory.create(createDatasetGraph(location)) ;
+    }
+    
+    /** Create a Dataset that supports transactions but runs in-memory (for creating test cases)*/  
+    public static Dataset createDataset()
+    {
+        return createDataset(Location.mem()) ;
+    }
+    
+
+    /** Create a DatasetGraph that supports transactions */  
+    public static DatasetGraphTransaction createDatasetGraph(String location)
+    {
+        return createDatasetGraph(new Location(location)) ;
+    }
+    
+    /** Create a Dataset that supports transactions */  
+    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 createDatasetGraph()
+    {
+        return createDatasetGraph(Location.mem()) ;
+    }
+    
+    private static DatasetGraphTransaction _create(Location location)
+    {
+        // No need to cache StoreConnection does all that.
+        return new DatasetGraphTransaction(location) ;
+    }
+
+}
+

Modified: incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/migrate/DatasetGraphTrackActive.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/migrate/DatasetGraphTrackActive.java?rev=1202423&r1=1202422&r2=1202423&view=diff
==============================================================================
--- incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/migrate/DatasetGraphTrackActive.java (original)
+++ incubator/jena/Jena2/TDB/trunk/src/main/java/com/hp/hpl/jena/tdb/migrate/DatasetGraphTrackActive.java Tue Nov 15 21:08:46 2011
@@ -72,11 +72,12 @@ public abstract class DatasetGraphTrackA
     @Override
     public void close()
     {
+        // close() does not mean close the dadaset - it means close the transaction, if any.  
         _close() ;
         inTransaction = false ;
-        // Can call close repeatedly 
-        if (get() != null)
-            get().close() ;
+        // DO NOT CALL get().close() ;
+//        if (get() != null)
+//            get().close() ;
     }
 
     @Override

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=1202423&r1=1202422&r2=1202423&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 Tue Nov 15 21:08:46 2011
@@ -18,9 +18,16 @@
 
 package com.hp.hpl.jena.tdb;
 
+import org.junit.AfterClass ;
+import org.junit.BeforeClass ;
 import org.junit.Test;
 import org.openjena.atlas.junit.BaseTest ;
+import org.openjena.atlas.lib.FileOps ;
 
+import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.query.Dataset ;
+import com.hp.hpl.jena.query.ReadWrite ;
+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;
@@ -28,6 +35,18 @@ import com.hp.hpl.jena.tdb.sys.TDBMaker;
 
 public class TestTDBFactory extends BaseTest
 {
+    static final String DIR = ConfigTest.getTestingDirDB() ; 
+    
+    @BeforeClass public static void beforeClass()
+    {
+        FileOps.clearDirectory(DIR) ; 
+    }
+    
+    @AfterClass public static void afterClass()
+    {
+        FileOps.clearDirectory(DIR) ; 
+    }
+    
     @Test public void factory1()
     {
         DatasetGraphTDB dg1 = TDBFactory.createDatasetGraph(Location.mem()) ;
@@ -55,5 +74,34 @@ public class TestTDBFactory extends Base
         assertNotSame(dg3, dg2) ;
         assertSame(dg3, dg0) ;
     }
+    
+    @Test public void factoryTxn1()
+    {
+        DatasetGraphTransaction dg1 = TDBFactoryTxn.createDatasetGraph(Location.mem()) ;
+        DatasetGraphTransaction dg2 = TDBFactoryTxn.createDatasetGraph(Location.mem()) ;
+        assertSame(dg1.get(), dg2.get()) ;
+    }
+    
+    private static Triple triple1 = SSE.parseTriple("(<s> <p> <o>)") ;  
+    
+    @Test public void factoryTxn2()
+    {
+        Dataset ds1 = TDBFactoryTxn.createDataset(DIR) ;
+        Dataset ds2 = TDBFactoryTxn.createDataset(DIR) ;
+        
+        ds1.begin(ReadWrite.WRITE) ;
+        ds1.getDefaultModel().getGraph().add(triple1) ; 
+        
+        ds2.begin(ReadWrite.READ) ;
+        assertTrue(ds2.getDefaultModel().isEmpty()) ;
+        ds2.commit() ;
+        
+        ds1.commit() ;
 
+        ds2.begin(ReadWrite.READ) ;
+        assertFalse(ds2.getDefaultModel().isEmpty()) ;
+        assertEquals(1, ds2.getDefaultModel().size()) ;
+        ds2.commit() ;
+
+    }
 }