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