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;