diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/RDFServiceDataset.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/RDFServiceDataset.java index 644dfc3bc..36f5cfa08 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/RDFServiceDataset.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/RDFServiceDataset.java @@ -14,6 +14,7 @@ import org.apache.jena.graph.NodeFactory; import org.apache.jena.query.Dataset; import org.apache.jena.query.LabelExistsException; import org.apache.jena.query.ReadWrite; +import org.apache.jena.query.TxnType; import org.apache.jena.rdf.model.Model; import org.apache.jena.shared.Lock; import org.apache.jena.sparql.core.DatasetGraph; @@ -86,7 +87,7 @@ public class RDFServiceDataset implements Dataset { } @Override - public void addNamedModel(String uri, Model model) + public Dataset addNamedModel(String uri, Model model) throws LabelExistsException { Iterator graphNodes = g.listGraphNodes(); while (graphNodes.hasNext()) { @@ -97,6 +98,7 @@ public class RDFServiceDataset implements Dataset { } } g.addGraph(NodeFactory.createURI(uri), model.getGraph()); + return this; } @Override @@ -105,19 +107,22 @@ public class RDFServiceDataset implements Dataset { } @Override - public void removeNamedModel(String uri) { + public Dataset removeNamedModel(String uri) { g.removeGraph(NodeFactory.createURI(uri)); + return this; } @Override - public void replaceNamedModel(String uri, Model model) { + public Dataset replaceNamedModel(String uri, Model model) { removeNamedModel(uri); addNamedModel(uri, model); + return this; } @Override - public void setDefaultModel(Model model) { + public Dataset setDefaultModel(Model model) { g.setDefaultGraph(model.getGraph()); + return this; } @Override @@ -173,4 +178,23 @@ public class RDFServiceDataset implements Dataset { return g.isEmpty(); } + @Override + public TxnType transactionType() { + return g.transactionType(); + } + + @Override + public boolean promote(Promote promote) { + return g.promote(promote); + } + + @Override + public ReadWrite transactionMode() { + return g.transactionMode(); + } + + @Override + public void begin(TxnType txnType) { + g.begin(txnType); + } } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/RDFServiceDatasetGraph.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/RDFServiceDatasetGraph.java index bbd96d7b1..5abf6f7f9 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/RDFServiceDatasetGraph.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/RDFServiceDatasetGraph.java @@ -15,6 +15,7 @@ import org.apache.jena.graph.NodeFactory; import org.apache.jena.graph.Triple; import org.apache.jena.query.QuerySolution; import org.apache.jena.query.ReadWrite; +import org.apache.jena.query.TxnType; import org.apache.jena.shared.Lock; import org.apache.jena.shared.LockMRSW; import org.apache.jena.sparql.core.DatasetGraph; @@ -36,6 +37,7 @@ public class RDFServiceDatasetGraph implements DatasetGraph { private Context context = new Context() ; private Map graphCache = new ConcurrentHashMap(); private ReadWrite transactionMode; + private TxnType transactionType; public RDFServiceDatasetGraph(RDFService rdfService) { this.rdfService = rdfService; @@ -52,9 +54,16 @@ public class RDFServiceDatasetGraph implements DatasetGraph { graphCache.clear(); } + @Override + public void begin(TxnType txnType) { + this.transactionType = txnType; + graphCache.clear(); + } + @Override public synchronized void commit() { this.transactionMode = null; + this.transactionType = null; if (supportsTransactions(defaultGraph)) { defaultGraph.getTransactionHandler().commit(); } @@ -88,6 +97,21 @@ public class RDFServiceDatasetGraph implements DatasetGraph { @Override public boolean isInTransaction() { + return transactionMode != null || transactionType != null; + } + + @Override + public TxnType transactionType() { + return transactionType; + } + + @Override + public ReadWrite transactionMode() { + return transactionMode; + } + + @Override + public boolean promote(Promote promote) { return false; } @@ -253,8 +277,10 @@ public class RDFServiceDatasetGraph implements DatasetGraph { } else { RDFServiceGraph graph = new RDFServiceGraph(rdfService, arg0.getURI()); graphCache.put(graphURI, graph); - if(transactionMode != null && supportsTransactions(graph)) { - graph.getTransactionHandler().begin(); + if (supportsTransactions(graph)) { + if(transactionMode != null || transactionType != null) { + graph.getTransactionHandler().begin(); + } } return graph; } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/adapters/AbstractModelDecorator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/adapters/AbstractModelDecorator.java index 33f9c5f0e..052d1b8db 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/adapters/AbstractModelDecorator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/adapters/AbstractModelDecorator.java @@ -266,27 +266,27 @@ public abstract class AbstractModelDecorator implements Model { } @Override - public PrefixMapping setNsPrefix(String prefix, String uri) { + public Model setNsPrefix(String prefix, String uri) { return inner.setNsPrefix(prefix, uri); } @Override - public PrefixMapping removeNsPrefix(String prefix) { + public Model removeNsPrefix(String prefix) { return inner.removeNsPrefix(prefix); } @Override - public PrefixMapping setNsPrefixes(PrefixMapping other) { + public Model setNsPrefixes(PrefixMapping other) { return inner.setNsPrefixes(other); } @Override - public PrefixMapping setNsPrefixes(Map map) { + public Model setNsPrefixes(Map map) { return inner.setNsPrefixes(map); } @Override - public PrefixMapping withDefaultMappings(PrefixMapping map) { + public Model withDefaultMappings(PrefixMapping map) { return inner.withDefaultMappings(map); } @@ -1100,7 +1100,7 @@ public abstract class AbstractModelDecorator implements Model { } @Override - public PrefixMapping clearNsPrefixMap() { + public Model clearNsPrefixMap() { return inner.clearNsPrefixMap(); } @@ -1108,4 +1108,14 @@ public abstract class AbstractModelDecorator implements Model { public int numPrefixes() { return inner.numPrefixes(); } + + @Override + public RDFList getList(String s) { + return inner.getList(s); + } + + @Override + public RDFList getList(Resource resource) { + return inner.getList(resource); + } } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/adapters/AbstractOntModelDecorator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/adapters/AbstractOntModelDecorator.java index 619413f20..895928987 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/adapters/AbstractOntModelDecorator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/adapters/AbstractOntModelDecorator.java @@ -305,27 +305,27 @@ public abstract class AbstractOntModelDecorator implements OntModel { } @Override - public PrefixMapping setNsPrefix(String prefix, String uri) { + public Model setNsPrefix(String prefix, String uri) { return inner.setNsPrefix(prefix, uri); } @Override - public PrefixMapping removeNsPrefix(String prefix) { + public Model removeNsPrefix(String prefix) { return inner.removeNsPrefix(prefix); } @Override - public PrefixMapping setNsPrefixes(PrefixMapping other) { + public Model setNsPrefixes(PrefixMapping other) { return inner.setNsPrefixes(other); } @Override - public PrefixMapping setNsPrefixes(Map map) { + public Model setNsPrefixes(Map map) { return inner.setNsPrefixes(map); } @Override - public PrefixMapping withDefaultMappings(PrefixMapping map) { + public Model withDefaultMappings(PrefixMapping map) { return inner.withDefaultMappings(map); } @@ -400,16 +400,19 @@ public abstract class AbstractOntModelDecorator implements OntModel { } @Override + @Deprecated public String setReaderClassName(String lang, String className) { return inner.setReaderClassName(lang, className); } @Override + @Deprecated public void resetRDFReaderF() { inner.resetRDFReaderF(); } @Override + @Deprecated public String removeReader(String s) throws IllegalArgumentException { return inner.removeReader(s); } @@ -425,16 +428,19 @@ public abstract class AbstractOntModelDecorator implements OntModel { } @Override + @Deprecated public String setWriterClassName(String lang, String className) { return inner.setWriterClassName(lang, className); } @Override + @Deprecated public void resetRDFWriterF() { inner.resetRDFWriterF(); } @Override + @Deprecated public String removeWriter(String s) throws IllegalArgumentException { return inner.removeWriter(s); } @@ -1054,6 +1060,7 @@ public abstract class AbstractOntModelDecorator implements OntModel { } @Override + @Deprecated public Object executeInTransaction(Command cmd) { return inner.executeInTransaction(cmd); } @@ -1798,7 +1805,7 @@ public abstract class AbstractOntModelDecorator implements OntModel { } @Override - public PrefixMapping clearNsPrefixMap() { + public Model clearNsPrefixMap() { return inner.clearNsPrefixMap(); } @@ -1806,4 +1813,10 @@ public abstract class AbstractOntModelDecorator implements OntModel { public int numPrefixes() { return inner.numPrefixes(); } + + @Override + public RDFList getList(String s) { return inner.getList(s); } + + @Override + public RDFList getList(Resource resource) { return inner.getList(resource); } } diff --git a/dependencies/pom.xml b/dependencies/pom.xml index e6d8219c6..6c3df15c1 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -93,7 +93,7 @@ commons-fileupload commons-fileupload - 1.3.3 + 1.4 commons-io @@ -176,7 +176,7 @@ org.apache.jena jena-arq - 3.6.0 + 3.11.0 @@ -192,17 +192,17 @@ org.apache.jena jena-core - 3.6.0 + 3.11.0 org.apache.jena jena-sdb - 3.6.0 + 3.11.0 org.apache.jena jena-tdb - 3.6.0 + 3.11.0 org.apache.solr