You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by aj...@apache.org on 2018/01/06 15:17:30 UTC
[06/44] jena git commit: Refactoring to assume fresh Context for any
Dataset view
Refactoring to assume fresh Context for any Dataset view
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/79b06548
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/79b06548
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/79b06548
Branch: refs/heads/master
Commit: 79b06548a44318af0a28c4684ef42d4e3df7a4c9
Parents: e0c580c
Author: ajs6f <aj...@apache.org>
Authored: Thu Oct 12 10:07:12 2017 -0400
Committer: ajs6f <aj...@apache.org>
Committed: Fri Jan 5 09:26:07 2018 -0500
----------------------------------------------------------------------
.../org/apache/jena/sparql/util/Context.java | 34 ++---------
.../jena/sparql/util/UnionDatasetGraph.java | 59 ++++++--------------
.../java/org/apache/jena/atlas/lib/Union.java | 28 ++++++++++
3 files changed, 50 insertions(+), 71 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/79b06548/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java
index 783a6db..c208ab1 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java
@@ -20,8 +20,6 @@ package org.apache.jena.sparql.util ;
import java.util.* ;
import java.util.concurrent.ConcurrentHashMap ;
-import java.util.function.Consumer;
-
import org.apache.jena.atlas.lib.Lib ;
import org.apache.jena.query.ARQ ;
import org.apache.jena.sparql.ARQConstants ;
@@ -37,7 +35,7 @@ public class Context {
public static final Context emptyContext = new Context(true) ;
protected Map<Symbol, Object> context = new ConcurrentHashMap<>() ;
- protected List<Consumer<Symbol>> callbacks = new ArrayList<>() ;
+
protected boolean readonly = false ;
/** Create an empty context */
@@ -86,13 +84,11 @@ public class Context {
/** Store a named value - overwrites any previous set value */
public void put(Symbol property, Object value) {
_put(property, value) ;
- doCallbacks(property) ;
}
/** Store a named value - overwrites any previous set value */
public void set(Symbol property, Object value) {
_put(property, value) ;
- doCallbacks(property) ;
}
private void _put(Symbol property, Object value) {
@@ -125,13 +121,11 @@ public class Context {
/** Remove any value associated with a property */
public void remove(Symbol property) {
context.remove(property) ;
- doCallbacks(property) ;
}
/** Remove any value associated with a property - alternative method name */
public void unset(Symbol property) {
context.remove(property) ;
- doCallbacks(property) ;
}
// ---- Helpers
@@ -199,13 +193,12 @@ public class Context {
}
}
- public void putAll(Context other) {
+ public Context putAll(Context other) {
if ( readonly )
throw new ARQException("Context is readonly") ;
- if ( other != null ) {
- for ( Map.Entry<Symbol, Object> e : other.context.entrySet() )
- put(e.getKey(), e.getValue()) ;
- }
+ if ( other != null )
+ other.context.forEach(this::put);
+ return this;
}
// -- true/false
@@ -315,23 +308,6 @@ public class Context {
return context.size() ;
}
- // ---- Callbacks
- public synchronized void addCallback(Consumer<Symbol> m) {
- callbacks.add(m) ;
- }
-
- public synchronized void removeCallback(Consumer<Symbol> m) {
- callbacks.remove(m) ;
- }
-
- public synchronized List<Consumer<Symbol>> getCallbacks() {
- return Collections.unmodifiableList(callbacks) ;
- }
-
- private synchronized void doCallbacks(Symbol symbol) {
- callbacks.forEach(c -> c.accept(symbol));
- }
-
@Override
public String toString() {
String x = "" ;
http://git-wip-us.apache.org/repos/asf/jena/blob/79b06548/jena-arq/src/main/java/org/apache/jena/sparql/util/UnionDatasetGraph.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/UnionDatasetGraph.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/UnionDatasetGraph.java
index b857417..e799531 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/UnionDatasetGraph.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/UnionDatasetGraph.java
@@ -14,32 +14,24 @@ import org.apache.jena.shared.Lock;
import org.apache.jena.sparql.core.DatasetGraph;
import org.apache.jena.sparql.core.Quad;
-public class UnionDatasetGraph implements DatasetGraph {
-
- private final DatasetGraph left, right;
+public class UnionDatasetGraph extends org.apache.jena.atlas.lib.Union<DatasetGraph> implements DatasetGraph {
private final Lock lock;
- public UnionDatasetGraph(DatasetGraph left, DatasetGraph right) {
- this.left = left;
- this.right = right;
- this.lock = new UnionLock(left.getLock(), right.getLock());
- }
+ private final Context context;
- static Graph union(Graph left, Graph right) {
- return new Union(left, right);
- }
-
- Graph union(Function<DatasetGraph, Graph> op) {
- return union(op.apply(left), op.apply(right));
+ public UnionDatasetGraph(DatasetGraph left, DatasetGraph right) {
+ this(left, right, Context.emptyContext);
}
- boolean both(Function<DatasetGraph, Boolean> op) {
- return op.apply(left) && op.apply(right);
+ public UnionDatasetGraph(DatasetGraph left, DatasetGraph right, Context context) {
+ super(left, right);
+ this.context = context;
+ this.lock = new UnionLock(left.getLock(), right.getLock());
}
- boolean either(Function<DatasetGraph, Boolean> op) {
- return op.apply(left) || op.apply(right);
+ private Graph union(Function<DatasetGraph, Graph> op) {
+ return new Union(op.apply(left), op.apply(right));
}
<T> Iterator<T> fromEach(Function<DatasetGraph, Iterator<T>> op) {
@@ -49,8 +41,7 @@ public class UnionDatasetGraph implements DatasetGraph {
@Override
public void begin(ReadWrite readWrite) {
if (readWrite.equals(WRITE)) throw new UnsupportedOperationException();
- left.begin(readWrite);
- right.begin(readWrite);
+ forEach(dsg -> dsg.begin(readWrite));
}
@Override
@@ -65,8 +56,7 @@ public class UnionDatasetGraph implements DatasetGraph {
@Override
public void end() {
- left.end();
- right.end();
+ forEach(DatasetGraph::end);
}
@Override
@@ -186,8 +176,7 @@ public class UnionDatasetGraph implements DatasetGraph {
@Override
public Context getContext() {
- // TODO Auto-generated method stub
- return null;
+ return context;
}
@Override
@@ -210,34 +199,20 @@ public class UnionDatasetGraph implements DatasetGraph {
return both(DatasetGraph::supportsTransactionAbort);
}
- private static class UnionLock implements Lock {
+ private static class UnionLock extends org.apache.jena.atlas.lib.Union<Lock> implements Lock {
public UnionLock(Lock left, Lock right) {
- this.left = left;
- this.right = right;
+ super(left, right);
}
- private final Lock left, right;
-
@Override
public void enterCriticalSection(boolean readLockRequested) {
- left.enterCriticalSection(readLockRequested);
- right.enterCriticalSection(readLockRequested);
+ forEach(lock -> lock.enterCriticalSection(readLockRequested));
}
@Override
public void leaveCriticalSection() {
- left.leaveCriticalSection();
- right.leaveCriticalSection();
+ forEach(Lock::leaveCriticalSection);
}
}
-
- private static class UnionContext extends Context {
-
- UnionContext(Context left, Context right) {
- this.context = left.context;
- }
-
-
- }
}
http://git-wip-us.apache.org/repos/asf/jena/blob/79b06548/jena-base/src/main/java/org/apache/jena/atlas/lib/Union.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Union.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Union.java
new file mode 100644
index 0000000..c5ff0c6
--- /dev/null
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Union.java
@@ -0,0 +1,28 @@
+package org.apache.jena.atlas.lib;
+
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+public class Union<T> {
+
+ protected final T left, right;
+
+ public Union(T left, T right) {
+ this.left = left;
+ this.right = right;
+ }
+
+ protected boolean both(Function<T, Boolean> op) {
+ return op.apply(left) && op.apply(right);
+ }
+
+ protected boolean either(Function<T, Boolean> op) {
+ return op.apply(left) || op.apply(right);
+ }
+
+ protected void forEach(Consumer<T> op) {
+ op.accept(left);
+ op.accept(right);
+ }
+
+}