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() ;
+
+ }
}