You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2018/11/17 17:20:29 UTC

[03/34] jena git commit: Refactor the do-nothing DatasetGraphs.

Refactor the do-nothing DatasetGraphs.

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

Branch: refs/heads/master
Commit: c846b05517da4b6e2bf43dd49afe8392ac3e7069
Parents: 512f663
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Nov 1 09:37:10 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Nov 13 15:35:19 2018 +0000

----------------------------------------------------------------------
 .../jena/sparql/core/DatasetGraphNull.java      | 125 +++++++++++++++++++
 .../jena/sparql/core/DatasetGraphOne.java       |  26 ++--
 .../jena/sparql/core/DatasetGraphReadOnly.java  |   2 +-
 .../jena/sparql/core/DatasetGraphSink.java      |  51 +-------
 .../jena/sparql/core/DatasetGraphZero.java      |  85 +------------
 .../org/apache/jena/sparql/graph/GraphZero.java |   2 +-
 6 files changed, 151 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/c846b055/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphNull.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphNull.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphNull.java
new file mode 100644
index 0000000..a01fc5c
--- /dev/null
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphNull.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sparql.core;
+
+import java.util.Iterator;
+
+import org.apache.jena.atlas.iterator.Iter;
+import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.Node;
+import org.apache.jena.query.ReadWrite;
+import org.apache.jena.query.TxnType;
+
+/** A {@link DatasetGraph} class for support of {@link DatasetGraph DatasetGraphs} that do nothing.
+ *  <ul> 
+ *  <li>No named graphs.
+ *  <li>Empty default graph.
+ *  <li>Empty union graph.
+ *  <li>No update. ({@link DatasetGraphSink} overrides this)
+ *  </ul>
+ *  
+ * @see DatasetGraphSink
+ * @see DatasetGraphZero
+ */
+public abstract class DatasetGraphNull extends DatasetGraphBaseFind {
+    protected abstract Graph createGraph();  
+    private Graph dftGraph = createGraph(); 
+    private Graph unionGraph = createGraph(); 
+
+    protected DatasetGraphNull() {}
+    
+    private Transactional txn                           = TransactionalNull.create();
+    @Override public void begin()                       { txn.begin(); }
+    @Override public void begin(TxnType txnType)        { txn.begin(txnType); }
+    @Override public void begin(ReadWrite mode)         { txn.begin(mode); }
+    @Override public boolean promote(Promote txnType)   { return txn.promote(txnType); }
+    @Override public void commit()                      { txn.commit(); }
+    @Override public void abort()                       { txn.abort(); }
+    @Override public boolean isInTransaction()          { return txn.isInTransaction(); }
+    @Override public void end()                         { txn.end(); }
+    @Override public ReadWrite transactionMode()        { return txn.transactionMode(); }
+    @Override public TxnType transactionType()          { return txn.transactionType(); }
+    @Override public boolean supportsTransactions()     { return true; }
+    @Override public boolean supportsTransactionAbort() { return true; }
+
+    @Override
+    public Iterator<Node> listGraphNodes() {
+        return Iter.nullIterator();
+    }
+    
+    @Override
+    protected Iterator<Quad> findInDftGraph(Node s, Node p, Node o) {
+        return Iter.nullIterator();
+    }
+    
+    @Override
+    protected Iterator<Quad> findInSpecificNamedGraph(Node g, Node s, Node p, Node o) {
+        return Iter.nullIterator();
+    }
+    
+    @Override
+    protected Iterator<Quad> findInAnyNamedGraphs(Node s, Node p, Node o) {
+        return Iter.nullIterator();
+    }
+    
+    @Override
+    public Graph getDefaultGraph() {
+        return dftGraph;
+    }
+    
+    @Override
+    public Graph getUnionGraph() {
+        return unionGraph;
+    }
+    
+    @Override
+    public Graph getGraph(Node graphNode) {
+        if ( Quad.isDefaultGraph(graphNode) )
+            return dftGraph;
+        if ( Quad.isUnionGraph(graphNode) )
+            return getUnionGraph();
+        return null;
+    }
+    
+    @Override
+    public void add(Quad quad) { unsupportedMethod(this, "add") ; } 
+    
+    @Override
+    public void delete(Quad quad) { unsupportedMethod(this, "delete") ; }
+    
+    @Override
+    public void deleteAny(Node g, Node s, Node p, Node o) {
+        unsupportedMethod(this, "deleteAny");
+    }
+
+    @Override
+    public void setDefaultGraph(Graph g) {
+        unsupportedMethod(this, "setDefaultGraph");
+    }
+
+    @Override
+    public void addGraph(Node graphName, Graph graph) {
+        unsupportedMethod(this, "addGraph");
+    }
+
+    @Override
+    public void removeGraph(Node graphName) {
+        unsupportedMethod(this, "removeGraph");
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c846b055/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphOne.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphOne.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphOne.java
index 2aa627d..cbcf2ed 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphOne.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphOne.java
@@ -27,11 +27,11 @@ import org.apache.jena.atlas.iterator.NullIterator;
 import org.apache.jena.graph.Graph;
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.Triple;
-import org.apache.jena.graph.impl.WrappedGraph;
 import org.apache.jena.query.ReadWrite;
 import org.apache.jena.query.TxnType;
 import org.apache.jena.reasoner.InfGraph;
-import org.apache.jena.sparql.graph.GraphWrapper;
+import org.apache.jena.sparql.graph.GraphOps;
+import org.apache.jena.sparql.graph.GraphZero;
 
 /** DatasetGraph of a single graph as default graph.
  * <p>
@@ -65,15 +65,10 @@ public class DatasetGraphOne extends DatasetGraphBaseFind {
                 graph = ((InfGraph)graph).getRawGraph();
                 continue;
             }
-            if ( graph instanceof GraphWrapper ) {
-                graph = ((GraphWrapper)graph).get();
-                continue;
-            }
-            if ( graph instanceof WrappedGraph ) {
-                graph = ((WrappedGraph)graph).getWrapped();
-                continue;
-            }
-            return graph;
+            Graph graph2 = GraphOps.unwrapOne(graph);
+            if ( graph2 == graph )
+                return graph;
+            graph = graph2;
         }
     }
     
@@ -123,11 +118,18 @@ public class DatasetGraphOne extends DatasetGraphBaseFind {
     public Graph getDefaultGraph() {
         return graph;
     }
+    
+    @Override
+    public Graph getUnionGraph() {
+        return GraphZero.instance();
+    }
 
     @Override
     public Graph getGraph(Node graphNode) {
         if ( isDefaultGraph(graphNode) )
-            return graph;
+            return getDefaultGraph();
+        if ( Quad.isUnionGraph(graphNode) )
+            return getUnionGraph();
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/c846b055/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphReadOnly.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphReadOnly.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphReadOnly.java
index 06aae4f..7b624b4 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphReadOnly.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphReadOnly.java
@@ -49,7 +49,7 @@ public class DatasetGraphReadOnly extends DatasetGraphWrapper
     @Override public void begin(ReadWrite mode)         {
         if ( mode == ReadWrite.WRITE )
             //throw new JenaTransactionException("read-only dataset : no write transactions") ;
-            Log.warn(this,  "Write transaction on a read-only dataset") ;
+            Log.warn(this, "Write transaction on a read-only dataset") ;
         get().begin(mode) ; 
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/c846b055/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphSink.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphSink.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphSink.java
index 88716ca..7a5faa6 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphSink.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphSink.java
@@ -18,13 +18,8 @@
 
 package org.apache.jena.sparql.core;
 
-import java.util.Iterator;
-
-import org.apache.jena.atlas.iterator.Iter;
 import org.apache.jena.graph.Graph;
 import org.apache.jena.graph.Node;
-import org.apache.jena.query.ReadWrite;
-import org.apache.jena.query.TxnType;
 import org.apache.jena.sparql.graph.GraphSink;
 
 
@@ -33,56 +28,20 @@ import org.apache.jena.sparql.graph.GraphSink;
  * 
  * @see DatasetGraphZero - a DSG that does not allow changes.
  */
-public class DatasetGraphSink extends DatasetGraphBaseFind {
+public class DatasetGraphSink extends DatasetGraphNull {
 
     public static DatasetGraph create() { return new DatasetGraphSink(); }
     
-    private Graph dftGraph = GraphSink.instance();
-    
-    public DatasetGraphSink() {}
-    
-    private Transactional txn                           = TransactionalNull.create();
-    @Override public void begin(TxnType txnType)        { txn.begin(txnType); }
-    @Override public void begin(ReadWrite mode)         { txn.begin(mode); }
-    @Override public boolean promote(Promote txnType)   { return txn.promote(txnType); }
-    @Override public void commit()                      { txn.commit(); }
-    @Override public void abort()                       { txn.abort(); }
-    @Override public boolean isInTransaction()          { return txn.isInTransaction(); }
-    @Override public void end()                         { txn.end(); }
-    @Override public ReadWrite transactionMode()        { return txn.transactionMode(); }
-    @Override public TxnType transactionType()          { return txn.transactionType(); }
-    @Override public boolean supportsTransactions()     { return true; }
-    @Override public boolean supportsTransactionAbort() { return true; }
-    
     @Override
-    public Iterator<Node> listGraphNodes() {
-        return Iter.nullIterator();
+    protected Graph createGraph() {
+        return GraphSink.instance();
     }
     
-    @Override
-    protected Iterator<Quad> findInDftGraph(Node s, Node p, Node o) {
-        return Iter.nullIterator();
-    }
-    
-    @Override
-    protected Iterator<Quad> findInSpecificNamedGraph(Node g, Node s, Node p, Node o) {
-        return Iter.nullIterator();
-    }
+    public DatasetGraphSink() {}
     
-    @Override
-    protected Iterator<Quad> findInAnyNamedGraphs(Node s, Node p, Node o) {
-        return Iter.nullIterator();
-    }
+    // Ignore all updates.
     
     @Override
-    public Graph getDefaultGraph() {
-        return dftGraph;
-    }
-    @Override
-    public Graph getGraph(Node graphNode) {
-        return null;
-    }
-    @Override
     public void add(Quad quad) { /* ignore */ } 
     
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/c846b055/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java
index 702f7bb..32f0469 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphZero.java
@@ -18,13 +18,7 @@
 
 package org.apache.jena.sparql.core;
 
-import java.util.Iterator;
-
-import org.apache.jena.atlas.iterator.Iter;
 import org.apache.jena.graph.Graph;
-import org.apache.jena.graph.Node;
-import org.apache.jena.query.ReadWrite;
-import org.apache.jena.query.TxnType;
 import org.apache.jena.sparql.graph.GraphZero;
 
 /** An always empty {@link DatasetGraph}. 
@@ -32,83 +26,14 @@ import org.apache.jena.sparql.graph.GraphZero;
  * No changes allowed - this is not a sink.
  * @see DatasetGraphSink
  */
-public class DatasetGraphZero extends DatasetGraphBaseFind {
-
-    // Invariant DatasetGraph; it does have tarnsaction state so new object here.
+public class DatasetGraphZero extends DatasetGraphNull {
+    /**Invariant {@link DatasetGraph}; it does have transaction state so new object here. */
     public static DatasetGraph create() { return new DatasetGraphZero(); }
-    
-    private Graph dftGraph = GraphZero.instance();
-
-    public DatasetGraphZero() {}
-    
-    private Transactional txn                           = TransactionalNull.create();
-    @Override public void begin()                       { txn.begin(); }
-    @Override public void begin(TxnType txnType)        { txn.begin(txnType); }
-    @Override public void begin(ReadWrite mode)         { txn.begin(mode); }
-    @Override public boolean promote(Promote txnType)   { return txn.promote(txnType); }
-    @Override public void commit()                      { txn.commit(); }
-    @Override public void abort()                       { txn.abort(); }
-    @Override public boolean isInTransaction()          { return txn.isInTransaction(); }
-    @Override public void end()                         { txn.end(); }
-    @Override public ReadWrite transactionMode()        { return txn.transactionMode(); }
-    @Override public TxnType transactionType()          { return txn.transactionType(); }
-    @Override public boolean supportsTransactions()     { return true; }
-    @Override public boolean supportsTransactionAbort() { return true; }
 
-    
-    @Override
-    public Iterator<Node> listGraphNodes() {
-        return Iter.nullIterator();
-    }
-    
-    @Override
-    protected Iterator<Quad> findInDftGraph(Node s, Node p, Node o) {
-        return Iter.nullIterator();
-    }
-    
-    @Override
-    protected Iterator<Quad> findInSpecificNamedGraph(Node g, Node s, Node p, Node o) {
-        return Iter.nullIterator();
-    }
-    
-    @Override
-    protected Iterator<Quad> findInAnyNamedGraphs(Node s, Node p, Node o) {
-        return Iter.nullIterator();
-    }
-    
     @Override
-    public Graph getDefaultGraph() {
-        return dftGraph;
+    protected Graph createGraph() {
+        return GraphZero.instance();
     }
     
-    @Override
-    public Graph getGraph(Node graphNode) {
-        return null;
-    }
-    
-    @Override
-    public void add(Quad quad) { unsupportedMethod(this, "add") ; } 
-    
-    @Override
-    public void delete(Quad quad) { unsupportedMethod(this, "delete") ; }
-    
-    @Override
-    public void deleteAny(Node g, Node s, Node p, Node o) {
-        throw new UnsupportedOperationException("deleteAny");
-    }
-
-    @Override
-    public void setDefaultGraph(Graph g) {
-        throw new UnsupportedOperationException("setDefaultGraph");
-    }
-
-    @Override
-    public void addGraph(Node graphName, Graph graph) {
-        throw new UnsupportedOperationException("addGraph");
-    }
-
-    @Override
-    public void removeGraph(Node graphName) {
-        throw new UnsupportedOperationException("removeGraph");
-    }
+    public DatasetGraphZero() {}
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/c846b055/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphZero.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphZero.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphZero.java
index 479340b..d3076c2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphZero.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/GraphZero.java
@@ -34,7 +34,7 @@ import org.apache.jena.util.iterator.NullIterator;
 public class GraphZero extends GraphBase {
     
     public static Graph instance() {
-        // It has transaction state do unsafe to share one object on one thread. 
+        // It has transaction state so unsafe to share one object on one thread. 
         return new GraphZero();
     }