JENA-1786: DatasetGraphMonitor exposes unwrapped graphs (#639)
* JENA-1786: DatasetGraphMonitor exposes unwrapped graphs
* Use GraphView.createDefaultGraph in DatasetGraphMonitor
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphMonitor.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphMonitor.java
index 04249e8..8ae5509 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphMonitor.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphMonitor.java
@@ -19,6 +19,8 @@
package org.apache.jena.sparql.core ;
import static org.apache.jena.atlas.iterator.Iter.take ;
+import static org.apache.jena.sparql.core.GraphView.createDefaultGraph;
+import static org.apache.jena.sparql.core.GraphView.createNamedGraph;
import java.util.Iterator ;
import java.util.List ;
@@ -199,5 +201,15 @@
SystemARQ.syncObject(monitor) ;
super.sync() ;
}
+
+ @Override
+ public Graph getDefaultGraph() {
+ return createDefaultGraph(this);
+ }
+
+ @Override
+ public Graph getGraph(Node graphNode) {
+ return createNamedGraph(this, graphNode);
+ }
}
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/core/TestDatasetMonitor.java b/jena-arq/src/test/java/org/apache/jena/sparql/core/TestDatasetMonitor.java
index af0b407..6833264 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/core/TestDatasetMonitor.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/core/TestDatasetMonitor.java
@@ -27,6 +27,10 @@
import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.atlas.lib.Pair ;
+import org.apache.jena.graph.Factory;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
import org.apache.jena.sparql.sse.SSE ;
import org.junit.Test ;
@@ -84,6 +88,58 @@
check(dsgChanges, 2, 2, 0, 0) ;
}
+ @Test public void countChanges_05() {
+ DatasetGraph dsgBase = DatasetGraphFactory.create() ;
+ DatasetChangesCounter dsgChanges = new DatasetChangesCounter() ;
+ DatasetGraph dsg = new DatasetGraphMonitor(dsgBase, dsgChanges) ;
+
+ check(dsgChanges, 0, 0, 0, 0) ;
+ Graph g = dsg.getDefaultGraph();
+ g.add(quad1.asTriple()) ;
+ g.delete(quad1.asTriple()) ;
+ g.add(quad1.asTriple()) ;
+ g.delete(quad1.asTriple()) ;
+ check(dsgChanges, 2, 2, 0, 0) ;
+ }
+
+ @Test public void countChanges_06() {
+ DatasetGraph dsgBase = DatasetGraphFactory.create() ;
+ DatasetChangesCounter dsgChanges = new DatasetChangesCounter() ;
+ DatasetGraph dsg = new DatasetGraphMonitor(dsgBase, dsgChanges) ;
+
+ check(dsgChanges, 0, 0, 0, 0) ;
+ Graph g = dsg.getGraph(NodeFactory.createURI("http://example.com/g1"));
+ g.add(quad1.asTriple()) ;
+ g.delete(quad1.asTriple()) ;
+ g.add(quad1.asTriple()) ;
+ g.delete(quad1.asTriple()) ;
+ check(dsgChanges, 2, 2, 0, 0) ;
+ }
+
+ @Test public void countChanges_07() {
+ DatasetGraph dsgBase = DatasetGraphFactory.create() ;
+ DatasetChangesCounter dsgChanges = new DatasetChangesCounter() ;
+ DatasetGraph dsg = new DatasetGraphMonitor(dsgBase, dsgChanges) ;
+
+ check(dsgChanges, 0, 0, 0, 0) ;
+ Graph g = dsg.getDefaultGraph();
+ g.add(quad1.asTriple()) ;
+ dsg.removeGraph(Quad.defaultGraphIRI);
+ check(dsgChanges, 1, 1, 0, 0) ;
+ }
+
+ @Test public void countChanges_08() {
+ DatasetGraph dsgBase = DatasetGraphFactory.create() ;
+ DatasetChangesCounter dsgChanges = new DatasetChangesCounter() ;
+ DatasetGraph dsg = new DatasetGraphMonitor(dsgBase, dsgChanges) ;
+
+ check(dsgChanges, 0, 0, 0, 0) ;
+ Graph g = dsg.getDefaultGraph();
+ g.add(quad1.asTriple()) ;
+ dsg.removeGraph(Quad.defaultGraphNodeGenerated);
+ check(dsgChanges, 1, 1, 0, 0) ;
+ }
+
@Test public void captureChanges_01() {
DatasetGraph dsgBase = DatasetGraphFactory.create() ;
DatasetChangesCapture dsgCapture = new DatasetChangesCapture() ;