Trigger promotion when prefix changes are made.

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

Branch: refs/heads/master
Commit: 41e2eb1b067f0f8217e665590071e8d18c085685
Parents: 4e724c2
Author: Andy Seaborne <a...@apache.org>
Authored: Sun Mar 4 14:26:13 2018 +0000
Committer: Andy Seaborne <a...@apache.org>
Committed: Sun Mar 4 14:26:13 2018 +0000

----------------------------------------------------------------------
 .../apache/jena/tdb2/setup/AbstractTDBBuilder.java   |  2 +-
 .../org/apache/jena/tdb2/store/DatasetGraphTDB.java  | 15 +++++----------
 .../apache/jena/tdb2/store/DatasetPrefixesTDB.java   |  8 ++++++++
 .../java/org/apache/jena/tdb2/store/StorageTDB.java  |  5 ++---
 4 files changed, 16 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/41e2eb1b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/setup/AbstractTDBBuilder.java
----------------------------------------------------------------------
diff --git 
a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/setup/AbstractTDBBuilder.java
 
b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/setup/AbstractTDBBuilder.java
index 6bcb2f5..82f56c9 100644
--- 
a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/setup/AbstractTDBBuilder.java
+++ 
b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/setup/AbstractTDBBuilder.java
@@ -189,7 +189,7 @@ public abstract class AbstractTDBBuilder {
         NodeTupleTable prefixTable = new 
NodeTupleTableConcrete(primary.length(),
                                                                 prefixIndexes,
                                                                 prefixNodes);
-        DatasetPrefixesTDB prefixes = new DatasetPrefixesTDB(prefixTable); 
+        DatasetPrefixesTDB prefixes = new DatasetPrefixesTDB(prefixTable);
         log().debug("Prefixes: "+primary+" :: "+String.join(",", indexes));
         return prefixes;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/41e2eb1b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetGraphTDB.java
----------------------------------------------------------------------
diff --git 
a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetGraphTDB.java
 
b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetGraphTDB.java
index 2148930..904bc50 100644
--- 
a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetGraphTDB.java
+++ 
b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetGraphTDB.java
@@ -73,7 +73,7 @@ public class DatasetGraphTDB extends DatasetGraphTriplesQuads
 
     /** Application should not create a {@code DatasetGraphTDB} directly */
     public DatasetGraphTDB(TransactionalSystem txnSystem, 
-                           TripleTable tripleTable, QuadTable quadTable, 
DatasetPrefixStorage prefixes,
+                           TripleTable tripleTable, QuadTable quadTable, 
DatasetPrefixesTDB prefixes,
                            ReorderTransformation transform, Location location, 
StoreParams params) {
         reset(txnSystem, tripleTable, quadTable, prefixes, location, params) ;
         this.transform = transform ;
@@ -81,16 +81,9 @@ public class DatasetGraphTDB extends DatasetGraphTriplesQuads
     }
 
     public void reset(TransactionalSystem txnSystem,
-                      TripleTable tripleTable, QuadTable quadTable, 
DatasetPrefixStorage prefixes,
+                      TripleTable tripleTable, QuadTable quadTable, 
DatasetPrefixesTDB prefixes,
                       Location location, StoreParams params) {
-//        this.tripleTable = tripleTable ;
-//        this.quadTable = quadTable ;
-//        this.location = location ;
-//        this.prefixes = prefixes ;
-//        this.storeParams = params ;
         this.txnSystem = txnSystem ;
-        // XXX Threading?
-        // XXX (re)set transaction components in TransactionCoordinator?? 
         this.storage = new StorageTDB(tripleTable, quadTable, prefixes, 
location, params);
         this.defaultGraphTDB = getDefaultGraphTDB();
     }
@@ -171,7 +164,7 @@ public class DatasetGraphTDB extends 
DatasetGraphTriplesQuads
     }
 
     // Promotion
-    private void requireWriteTxn() {
+    /*package*/ void requireWriteTxn() {
         Transaction txn = txnSystem.getThreadTransaction() ;
         if ( txn == null )
             throw new TransactionException("Not in a transaction") ;
@@ -300,6 +293,8 @@ public class DatasetGraphTDB extends 
DatasetGraphTriplesQuads
 
     public DatasetPrefixStorage getPrefixes() {
         checkNotClosed();
+        // Need for requireWriteTxn
+        storage.prefixes.setDatasetGraphTDB(this);
         return storage.prefixes;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/41e2eb1b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetPrefixesTDB.java
----------------------------------------------------------------------
diff --git 
a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetPrefixesTDB.java
 
b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetPrefixesTDB.java
index e1b7e7b..982e8da 100644
--- 
a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetPrefixesTDB.java
+++ 
b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetPrefixesTDB.java
@@ -44,11 +44,17 @@ public class DatasetPrefixesTDB implements 
DatasetPrefixStorage
     static final String unamedGraphURI = "" ;
     
     private final NodeTupleTable nodeTupleTable ;
+    private DatasetGraphTDB dataset = null;
     
     public DatasetPrefixesTDB(NodeTupleTable nodeTupleTable) {
         this.nodeTupleTable = nodeTupleTable ;
     }
     
+    // Needed because DatasetPrefixesTDB is created before DatasetGraphTDB 
+    /*package*/ void setDatasetGraphTDB(DatasetGraphTDB dsg) {
+        this.dataset = dsg;
+    }
+    
     @Override
     public void loadPrefixMapping(String graphName, PrefixMapping pmap) {
         Node g = NodeFactory.createURI(graphName) ; 
@@ -62,6 +68,7 @@ public class DatasetPrefixesTDB implements 
DatasetPrefixStorage
 
     @Override
     public synchronized void insertPrefix(String graphName, String prefix, 
String uri) {
+        dataset.requireWriteTxn();
         Node g = NodeFactory.createURI(graphName) ; 
         Node p = NodeFactory.createLiteral(prefix) ; 
         Node u = NodeFactory.createURI(uri) ;
@@ -141,6 +148,7 @@ public class DatasetPrefixesTDB implements 
DatasetPrefixStorage
 
     /** Remove by pattern */
     private synchronized void removeAll(Node g, Node p, Node uri) {
+        dataset.requireWriteTxn();
         Iterator<Tuple<Node>> iter = nodeTupleTable.find(g, p, uri) ;
         List<Tuple<Node>> list = Iter.toList(iter) ;    // Materialize.
         Iter.close(iter) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/41e2eb1b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/StorageTDB.java
----------------------------------------------------------------------
diff --git 
a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/StorageTDB.java 
b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/StorageTDB.java
index f4d7ac6..4998838 100644
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/StorageTDB.java
+++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/StorageTDB.java
@@ -19,18 +19,17 @@
 package org.apache.jena.tdb2.store;
 
 import org.apache.jena.dboe.base.file.Location;
-import org.apache.jena.sparql.core.DatasetPrefixStorage;
 import org.apache.jena.tdb2.setup.StoreParams;
 
 public class StorageTDB {
 
     /*package*/ final TripleTable tripleTable;
     /*package*/ final QuadTable quadTable;
-    /*package*/ final DatasetPrefixStorage prefixes;
+    /*package*/ final DatasetPrefixesTDB prefixes;
     /*package*/ final Location location;
     /*package*/ final StoreParams storeParams;
     
-    public StorageTDB(TripleTable tripleTable, QuadTable quadTable, 
DatasetPrefixStorage prefixes, Location location, StoreParams params) {
+    public StorageTDB(TripleTable tripleTable, QuadTable quadTable, 
DatasetPrefixesTDB prefixes, Location location, StoreParams params) {
         super();
         this.tripleTable = tripleTable;
         this.quadTable = quadTable;

Reply via email to