From c07d83403afc345d7daaf1c3f49e2719c16ee8da Mon Sep 17 00:00:00 2001 From: ajs6f Date: Mon, 4 May 2015 12:30:38 -0400 Subject: [PATCH 1/4] Using Java 8 types in o.a.j.atlas --- .../org/apache/jena/atlas/csv/CSVParser.java | 9 +- .../java/org/apache/jena/riot/other/GLib.java | 58 +----- .../apache/jena/riot/out/JsonLDWriter.java | 8 +- .../normalize/CanonicalizeLiteral.java | 6 +- .../jena/riot/system/PrefixMapBase.java | 25 +-- .../org/apache/jena/riot/thrift/BinRDF.java | 12 +- .../jena/sparql/core/DatasetGraphBase.java | 12 +- .../jena/sparql/core/DatasetGraphQuad.java | 13 +- .../org/apache/jena/sparql/engine/Rename.java | 24 +-- .../ReorderTransformationSubstitution.java | 12 +- .../org/apache/jena/sparql/expr/E_Exists.java | 6 +- .../apache/jena/sparql/expr/E_NotExists.java | 6 +- .../org/apache/jena/sparql/expr/Expr.java | 5 +- .../jena/sparql/expr/ExprAggregator.java | 8 +- .../jena/sparql/expr/ExprFunction0.java | 6 +- .../jena/sparql/expr/ExprFunction1.java | 6 +- .../jena/sparql/expr/ExprFunction2.java | 6 +- .../jena/sparql/expr/ExprFunction3.java | 6 +- .../jena/sparql/expr/ExprFunctionN.java | 5 +- .../org/apache/jena/sparql/expr/ExprList.java | 5 +- .../org/apache/jena/sparql/expr/ExprNode.java | 5 +- .../org/apache/jena/sparql/expr/ExprVar.java | 7 +- .../apache/jena/sparql/expr/NodeValue.java | 6 +- .../sparql/expr/aggregate/Aggregator.java | 5 +- .../sparql/expr/aggregate/AggregatorBase.java | 4 +- .../jena/sparql/graph/NodeTransform.java | 12 +- .../jena/sparql/graph/NodeTransformLib.java | 48 ++--- .../jena/sparql/graph/NodeTransformOp.java | 15 +- .../NodeTransformBNodesToVariables.java | 6 +- .../jena/sparql/modify/TemplateLib.java | 31 ++- .../sparql/modify/UpdateEngineWorker.java | 4 +- .../org/apache/jena/sparql/path/PathLib.java | 4 +- .../jena/sparql/path/eval/PathEngine.java | 25 +-- .../jena/sparql/path/eval/PathEvaluator.java | 6 +- .../sparql/pfunction/library/strSplit.java | 12 +- .../jena/sparql/resultset/CSVInput.java | 6 +- .../sparql/resultset/ResultSetCompare.java | 12 +- .../apache/jena/sparql/util/ModelUtils.java | 19 +- .../jena/sparql/util/graph/GraphList.java | 12 +- .../jena/riot/process/TestNormalization.java | 4 +- .../jena/riot/thrift/TestStreamRDFThrift.java | 13 +- .../apache/jena/atlas/iterator/Action.java | 9 +- .../jena/atlas/iterator/ActionCount.java | 6 +- .../jena/atlas/iterator/ActionNothing.java | 26 --- .../apache/jena/atlas/iterator/Filter.java | 8 +- .../iterator/FilterDistinctAdjacent.java | 8 +- .../jena/atlas/iterator/FilterOutNulls.java | 32 --- .../jena/atlas/iterator/FilterStack.java | 16 +- .../jena/atlas/iterator/FilterUnique.java | 12 +- .../org/apache/jena/atlas/iterator/Iter.java | 193 +++++------------- .../jena/atlas/iterator/IteratorArray.java | 6 + .../apache/jena/atlas/iterator/MapUtils.java | 36 ---- .../apache/jena/atlas/iterator/Transform.java | 8 +- .../apache/jena/atlas/lib/ActionKeyValue.java | 9 +- .../java/org/apache/jena/atlas/lib/Cache.java | 3 +- .../org/apache/jena/atlas/lib/CacheSet.java | 4 +- .../org/apache/jena/atlas/lib/Closeable.java | 2 +- .../jena/atlas/lib/CollectionUtils.java | 26 +-- .../java/org/apache/jena/atlas/lib/Lib.java | 13 +- .../org/apache/jena/atlas/lib/ListUtils.java | 7 +- .../org/apache/jena/atlas/lib/MapUtils.java | 45 ---- .../org/apache/jena/atlas/lib/Problem.java | 25 --- .../org/apache/jena/atlas/lib/SetUtils.java | 26 +-- .../java/org/apache/jena/atlas/lib/Tuple.java | 22 +- .../apache/jena/atlas/lib/cache/Cache0.java | 4 +- .../apache/jena/atlas/lib/cache/Cache1.java | 8 +- .../jena/atlas/lib/cache/CacheGuava.java | 9 +- .../jena/atlas/lib/cache/CacheSetImpl.java | 16 +- .../jena/atlas/lib/cache/CacheSetSync.java | 5 +- .../jena/atlas/lib/cache/CacheSetWrapper.java | 5 +- .../jena/atlas/lib/cache/CacheSimple.java | 13 +- .../jena/atlas/lib/cache/CacheWrapper.java | 4 +- .../java/org/apache/jena/base/Closeable.java | 27 --- .../apache/jena/atlas/iterator/TestIter.java | 134 +----------- .../jena/fuseki/servlets/SPARQL_Protocol.java | 12 +- .../jena/fuseki/servlets/SPARQL_Protocol.java | 10 +- .../query/rewriter/SecuredFunction.java | 4 +- .../apache/jena/sdb/compiler/QuadBlock.java | 6 +- .../org/apache/jena/sdb/compiler/SDB_QC.java | 14 +- .../jena/sdb/compiler/TransformSDB.java | 4 +- .../org/apache/jena/sdb/core/ScopeEntry.java | 28 +-- .../org/apache/jena/sdb/core/ScopeRename.java | 21 -- .../sdb/core/sqlnode/GenerateSQLVisitor.java | 9 +- .../apache/jena/sdb/print/ActionPrint.java | 7 +- .../sdb/test/junit/ParamAllStoreDesc.java | 11 +- .../jena/sdb/test/junit/ParamAllStores.java | 11 +- .../apache/jena/sdb/test/junit/StoreList.java | 21 +- .../spatial/SpatialDocProducerTriples.java | 19 -- .../jena/tdb/base/block/BlockMgrCache.java | 6 +- .../index/bplustree/BPlusTreeRewriter.java | 10 +- .../java/org/apache/jena/tdb/lib/NodeLib.java | 9 +- .../org/apache/jena/tdb/lib/TupleLib.java | 34 +-- .../jena/tdb/solver/OpExecutorTDB1.java | 11 +- .../java/org/apache/jena/tdb/solver/QC2.java | 9 +- .../org/apache/jena/tdb/solver/SolverLib.java | 52 ++--- .../tdb/solver/StageGeneratorDirectTDB.java | 9 +- .../jena/tdb/solver/StageMatchTuple.java | 34 +-- .../tdb/solver/stats/StatsCollectorBase.java | 5 +- .../jena/tdb/store/DatasetGraphTDB.java | 13 +- .../org/apache/jena/tdb/store/GraphTDB.java | 19 +- .../org/apache/jena/tdb/store/QuadTable.java | 9 - .../apache/jena/tdb/store/TripleTable.java | 9 - .../tdb/store/nodetable/NodeTableNative.java | 35 +--- .../store/tupletable/TupleIndexRecord.java | 18 +- .../jena/tdb/base/record/RecordLib.java | 9 +- .../apache/jena/tdb/store/TestQuadFilter.java | 20 +- 106 files changed, 455 insertions(+), 1294 deletions(-) delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionNothing.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterOutNulls.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/iterator/MapUtils.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/MapUtils.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/Problem.java delete mode 100644 jena-base/src/main/java/org/apache/jena/base/Closeable.java diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java b/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java index 83613ae6c17..e1afc2f1646 100644 --- a/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java +++ b/jena-arq/src/main/java/org/apache/jena/atlas/csv/CSVParser.java @@ -23,12 +23,12 @@ import java.io.Reader ; import java.util.Iterator ; import java.util.List ; +import java.util.function.Function; import org.apache.commons.csv.CSVFormat ; import org.apache.commons.csv.CSVRecord ; import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; /** * Wrapper for Commons CSV parser. @@ -63,12 +63,7 @@ private CSVParser(Reader input) { } } - private static Transform> transform = new Transform>() { - @Override - public List convert(CSVRecord record) { - return recordToList(record) ; - } - } ; + private static Function> transform = rec -> recordToList(rec) ; @Override public Iterator> iterator() { diff --git a/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java b/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java index 6a6958a5ff1..db147244779 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/other/GLib.java @@ -19,9 +19,7 @@ package org.apache.jena.riot.other; import java.util.Iterator ; - import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -42,89 +40,55 @@ public class GLib public static Iterator listSubjects(Graph graph) { ExtendedIterator iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ; - return Iter.iter(iter).map(projectTripleSubject).distinct() ; + return Iter.iter(iter).map(Triple::getSubject).distinct() ; } /** List the predicates in a graph (no duplicates) */ public static Iterator listPredicates(Graph graph) { ExtendedIterator iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ; - return Iter.iter(iter).map(projectTriplePredicate).distinct() ; + return Iter.iter(iter).map(Triple::getPredicate).distinct() ; } /** List the objects in a graph (no duplicates) */ public static Iterator listObjects(Graph graph) { ExtendedIterator iter = graph.find(Node.ANY, Node.ANY, Node.ANY) ; - return Iter.iter(iter).map(projectTripleObject).distinct() ; + return Iter.iter(iter).map(Triple::getObject).distinct() ; } - - private static Transform transformQuad2Triple = new Transform () { - @Override - public Triple convert(Quad quad) { return quad.asTriple() ; } - } ; /** Project quads to triples */ public static Iter quads2triples(Iterator iter) { - return Iter.iter(iter).map(transformQuad2Triple) ; + return Iter.iter(iter).map(Quad::asTriple) ; } /** Project quad to graphname */ public static Iterator quad2graphName(Iterator iter) - { return Iter.map(iter, projectQuadGraphName) ; } + { return Iter.map(iter, Quad::getGraph) ; } /** Project quad to graphname */ public static Iterator quad2subject(Iterator iter) - { return Iter.map(iter, projectQuadSubject) ; } + { return Iter.map(iter, Quad::getSubject) ; } /** Project quad to predicate */ public static Iterator quad2predicate(Iterator iter) - { return Iter.map(iter, projectQuadPredicate) ; } + { return Iter.map(iter, Quad::getPredicate) ; } /** Project quad to object */ public static Iterator quad2object(Iterator iter) - { return Iter.map(iter, projectQuadObject) ; } + { return Iter.map(iter, Quad::getObject) ; } /** Project triple to subject */ public static Iterator triple2subject(Iterator iter) - { return Iter.map(iter, projectTripleSubject) ; } + { return Iter.map(iter, Triple::getSubject) ; } /** Project triple to predicate */ public static Iterator triple2predicate(Iterator iter) - { return Iter.map(iter, projectTriplePredicate) ; } + { return Iter.map(iter, Triple::getPredicate) ; } /** Project triple to object */ public static Iterator triple2object(Iterator iter) - { return Iter.map(iter, projectTripleObject) ; } - - /** Transform quad to graphname */ - public static Transform projectQuadGraphName = new Transform() { - @Override public Node convert(Quad quad) { return quad.getGraph() ; } - } ; - /** Transform quad to subject */ - public static Transform projectQuadSubject = new Transform() { - @Override public Node convert(Quad quad) { return quad.getSubject() ; } - } ; - /** Transform quad to predicate */ - public static Transform projectQuadPredicate = new Transform() { - @Override public Node convert(Quad quad) { return quad.getPredicate() ; } - } ; - /** Transform quad to object */ - public static Transform projectQuadObject = new Transform() { - @Override public Node convert(Quad quad) { return quad.getObject() ; } - } ; - /** Transform triple to subject */ - public static Transform projectTripleSubject = new Transform() { - @Override public Node convert(Triple triple) { return triple.getSubject() ; } - } ; - /** Transform triple to predicate */ - public static Transform projectTriplePredicate = new Transform() { - @Override public Node convert(Triple triple) { return triple.getPredicate() ; } - } ; - /** Transform triple to object */ - public static Transform projectTripleObject = new Transform() { - @Override public Node convert(Triple triple) { return triple.getObject() ; } - } ; + { return Iter.map(iter, Triple::getObject) ; } } diff --git a/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java b/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java index c7ed85a3c49..9d50d87f7fe 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/out/JsonLDWriter.java @@ -23,10 +23,10 @@ import java.io.OutputStreamWriter ; import java.io.Writer ; import java.util.* ; -import java.util.Map.Entry ; +import java.util.Map.Entry; +import java.util.function.Consumer; import org.apache.jena.atlas.io.IO ; -import org.apache.jena.atlas.iterator.Action ; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.lib.Chars ; import org.apache.jena.graph.Graph ; @@ -126,9 +126,9 @@ private static void addPrefixes(Map ctx, PrefixMap prefixMap) { private static void addProperties(final Map ctx, Graph graph) { // Add some properties directly so it becomes "localname": .... final Set dups = new HashSet<>() ; - Action x = new Action() { + Consumer x = new Consumer() { @Override - public void apply(Triple item) { + public void accept(Triple item) { Node p = item.getPredicate() ; Node o = item.getObject() ; if ( p.equals(RDF.type.asNode()) ) diff --git a/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java b/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java index c7a11ad5124..3f8490e7587 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/process/normalize/CanonicalizeLiteral.java @@ -20,17 +20,17 @@ import java.util.HashMap ; import java.util.Map ; +import java.util.function.Function; import org.apache.jena.datatypes.RDFDatatype ; import org.apache.jena.datatypes.xsd.XSDDatatype ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.NodeFactory ; import org.apache.jena.riot.web.LangTag ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.util.NodeUtils ; import org.apache.jena.vocabulary.RDF ; -public class CanonicalizeLiteral implements NodeTransform +public class CanonicalizeLiteral implements Function { private static final CanonicalizeLiteral singleton = new CanonicalizeLiteral(); @@ -39,7 +39,7 @@ public class CanonicalizeLiteral implements NodeTransform private CanonicalizeLiteral() {} @Override - public Node convert(Node node) { + public Node apply(Node node) { if ( ! node.isLiteral() ) return node ; diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java index 4190e7c661b..10dc6debd5b 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java @@ -18,12 +18,11 @@ package org.apache.jena.riot.system; +import static java.util.stream.Collectors.toMap; + import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; - -import org.apache.jena.atlas.iterator.Iter; -import org.apache.jena.atlas.lib.ActionKeyValue; import org.apache.jena.atlas.lib.Pair; import org.apache.jena.iri.IRI; import org.apache.jena.iri.IRIFactory; @@ -53,16 +52,8 @@ public Map getMappingCopy() { @Override public Map getMappingCopyStr() { - final Map smap = new HashMap<>(); - ActionKeyValue action = new ActionKeyValue() { - @Override - public void apply(String key, IRI value) { - String str = value.toString(); - smap.put(key, str); - } - }; - Iter.apply(getMapping(), action); - return smap; + return getMapping().entrySet().stream() + .collect(toMap(Map.Entry::getKey, v -> v.getValue().toString())); } @Override @@ -72,9 +63,7 @@ public void add(String prefix, String iriString) { @Override public void putAll(PrefixMap pmap) { - for (Map.Entry e : pmap.getMapping().entrySet()) { - this.add(e.getKey(), e.getValue()); - } + pmap.getMapping().forEach(this::add); } @Override @@ -84,9 +73,7 @@ public void putAll(PrefixMapping pmap) { @Override public void putAll(Map mapping) { - for (Map.Entry e : mapping.entrySet()) { - this.add(e.getKey(), e.getValue()); - } + mapping.forEach(this::add); } /** diff --git a/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java b/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java index 29ad8d967be..96e4ea614e2 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java @@ -22,10 +22,10 @@ import java.io.InputStream ; import java.io.OutputStream ; import java.util.List ; +import java.util.function.Consumer; import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.io.IndentedWriter ; -import org.apache.jena.atlas.iterator.Action ; import org.apache.jena.query.ResultSet ; import org.apache.jena.riot.system.PrefixMap ; import org.apache.jena.riot.system.PrefixMapFactory ; @@ -168,11 +168,7 @@ public static void protocolToStream(TProtocol protocol, StreamRDF dest) { // ** Java7 support public static void applyVisitor(TProtocol protocol, final VisitorStreamRowTRDF visitor) { - Action action = new Action() { - @Override - public void apply(RDF_StreamRow z) { TRDF.visit(z, visitor) ; } - } ; - apply(protocol, action) ; + apply(protocol, z -> TRDF.visit(z, visitor)) ; } /** @@ -180,7 +176,7 @@ public static void applyVisitor(TProtocol protocol, final VisitorStreamRowTRDF v * @param protocol TProtocol * @param action Code to act on the row. */ - public static void apply(TProtocol protocol, Action action) { + public static void apply(TProtocol protocol, Consumer action) { RDF_StreamRow row = new RDF_StreamRow() ; while(protocol.getTransport().isOpen()) { try { row.read(protocol) ; } @@ -189,7 +185,7 @@ public static void apply(TProtocol protocol, Action action) { break ; } catch (TException ex) { TRDF.exception(ex) ; } - action.apply(row) ; + action.accept(row) ; row.clear() ; } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java index 196ecf89e1c..bd87c8204c1 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java @@ -19,10 +19,8 @@ package org.apache.jena.sparql.core; import java.util.Iterator ; - import org.apache.jena.atlas.io.IndentedLineBuffer ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -189,15 +187,7 @@ protected static Iterator triples2quadsDftGraph(Iterator iter) protected static Iter triples2quads(final Node graphNode, Iterator iter) { - Transform transformNamedGraph = new Transform () { - @Override - public Quad convert(Triple triple) - { - return new Quad(graphNode, triple) ; - } - } ; - - return Iter.iter(iter).map(transformNamedGraph) ; + return Iter.iter(iter).map(t -> new Quad(graphNode, t)) ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java index 5b28c904a2c..d685a715b5c 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphQuad.java @@ -19,28 +19,19 @@ package org.apache.jena.sparql.core; import java.util.Iterator ; - import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.graph.Node ; /** A DatasetGraph base class for pure quad-centric storage. */ public abstract class DatasetGraphQuad extends DatasetGraphBase -{ - static Transform projectGraphName = new Transform() { - @Override - public Node convert(Quad quad) - { - return quad.getGraph() ; - }} ; - +{ @Override public Iterator listGraphNodes() { Iter iter = Iter.iter(find(Node.ANY, Node.ANY, Node.ANY, Node.ANY)) ; - return iter.map(projectGraphName).distinct() ; + return iter.map(Quad::getGraph).distinct() ; } @Override diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java index 96a87516478..bc1d4ea40e9 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java @@ -22,6 +22,7 @@ import java.util.HashMap ; import java.util.Map ; import java.util.Set ; +import java.util.function.Function; import org.apache.jena.graph.Node ; import org.apache.jena.sparql.ARQConstants ; @@ -29,7 +30,6 @@ import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.graph.NodeTransformLib ; /** Support for renaming all the variables in an algebra expession @@ -49,14 +49,14 @@ public static Var chooseVarName(Var var, Collection inUse, String prefix) /** Rename one node to another */ public static Op renameNode(Op op, Node oldName, Node newName) { - NodeTransform renamer = new RenameNode(oldName, newName) ; + Function renamer = new RenameNode(oldName, newName) ; return NodeTransformLib.transform(renamer, op) ; } /** Rename one variable to another */ public static Op renameVar(Op op, Var oldName, Var newName) { - NodeTransform renamer = new RenameNode(oldName, newName) ; + Function renamer = new RenameNode(oldName, newName) ; return NodeTransformLib.transform(renamer, op) ; } @@ -76,13 +76,13 @@ public static Op renameVars(Op op, Collection constants) /** Rename all variables in an expression, EXCEPT for those named as constant */ public static ExprList renameVars(ExprList exprList, Set constants) { - NodeTransform renamer = new RenameAnyVars(constants, prefix) ; + Function renamer = new RenameAnyVars(constants, prefix) ; return NodeTransformLib.transform(renamer, exprList) ; } public static Expr renameVars(Expr expr, Set constants) { - NodeTransform renamer = new RenameAnyVars(constants, prefix) ; + Function renamer = new RenameAnyVars(constants, prefix) ; return NodeTransformLib.transform(renamer, expr) ; } @@ -90,13 +90,13 @@ public static Expr renameVars(Expr expr, Set constants) * This assumes the op was renamed by VarRename.rename */ public static Op reverseVarRename(Op op, boolean repeatedly) { - NodeTransform renamer = new UnrenameAnyVars(prefix, repeatedly) ; + Function renamer = new UnrenameAnyVars(prefix, repeatedly) ; return NodeTransformLib.transform(renamer, op) ; } // ---- Transforms that do the renaming and unrenaming. - static class RenameNode implements NodeTransform + static class RenameNode implements Function { private final Node oldName ; private final Node newName ; @@ -107,7 +107,7 @@ public RenameNode (Node oldName, Node newName) } @Override - public Node convert(Node node) + public Node apply(Node node) { if ( node.equals(oldName) ) return newName ; @@ -116,7 +116,7 @@ public Node convert(Node node) } - static class RenameAnyVars implements NodeTransform + static class RenameAnyVars implements Function { private final Map aliases = new HashMap<>() ; private final Collection constants ; @@ -129,7 +129,7 @@ public RenameAnyVars(Collection constants, String varPrefix) } @Override - public final Node convert(Node node) + public final Node apply(Node node) { if ( ! Var.isVar(node) ) return node ; if ( constants.contains(node) ) return node ; @@ -151,7 +151,7 @@ public final Node convert(Node node) } /** Reverse a renaming (assuming renaming was done by prefixing variable names) */ - static class UnrenameAnyVars implements NodeTransform + static class UnrenameAnyVars implements Function { private final String varPrefix ; private final boolean repeatedly ; @@ -163,7 +163,7 @@ public UnrenameAnyVars(String varPrefix, boolean repeatedly) } @Override - public Node convert(Node node) + public Node apply(Node node) { if ( ! Var.isVar(node) ) return node ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java index e316b31f878..d4caa80d770 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/optimizer/reorder/ReorderTransformationSubstitution.java @@ -22,10 +22,8 @@ import java.util.ArrayList ; import java.util.List ; - import org.apache.jena.atlas.iterator.AccString ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.StrUtils ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -64,7 +62,7 @@ public final ReorderProc reorderIndexes(BasicPattern pattern) // Or done here as a second pass mutate of PatternTriples // Convert to a mutable form (that allows things like "TERM") - List components = Iter.toList(Iter.map(triples.iterator(), convert)) ; + List components = Iter.toList(Iter.map(triples.iterator(), PatternTriple::new)) ; // Allow subclasses to get in (e.g. static reordering). components = modifyComponents(components) ; @@ -299,12 +297,4 @@ protected String toString(PatternTriple pt) { return "(" + printAbbrev(pt.toString()) + ")" ; } } ; - - // Triples to TriplePatterns. - private static Transform convert = new Transform(){ - @Override - public PatternTriple convert(Triple triple) - { - return new PatternTriple(triple) ; - }} ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java index 3d7f6a3cbe6..04453504544 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java @@ -18,13 +18,15 @@ package org.apache.jena.sparql.expr; +import java.util.function.Function; + +import org.apache.jena.graph.Node; import org.apache.jena.sparql.algebra.Algebra ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.core.Substitute ; import org.apache.jena.sparql.engine.QueryIterator ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.graph.NodeTransformLib ; import org.apache.jena.sparql.sse.Tags ; import org.apache.jena.sparql.syntax.Element ; @@ -56,7 +58,7 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(NodeTransform nodeTransform) + public Expr applyNodeTransform(Function nodeTransform) { Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ; return new E_Exists(getElement(), op2) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java index 2f41b9ed617..250d105db33 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java @@ -18,13 +18,15 @@ package org.apache.jena.sparql.expr; +import java.util.function.Function; + +import org.apache.jena.graph.Node; import org.apache.jena.sparql.algebra.Algebra ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.core.Substitute ; import org.apache.jena.sparql.engine.QueryIterator ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.graph.NodeTransformLib ; import org.apache.jena.sparql.sse.Tags ; import org.apache.jena.sparql.syntax.Element ; @@ -57,7 +59,7 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(NodeTransform nodeTransform) + public Expr applyNodeTransform(Function nodeTransform) { Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ; return new E_NotExists(getElement(), op2) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java index 026b897d796..124a8422bc7 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java @@ -20,13 +20,14 @@ import java.util.Collection ; import java.util.Set ; +import java.util.function.Function; import javax.xml.datatype.DatatypeConstants ; +import org.apache.jena.graph.Node; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; public interface Expr { @@ -63,7 +64,7 @@ public interface Expr /** * Rewrite, applying a node->node transformation */ - public Expr applyNodeTransform(NodeTransform transform) ; + public Expr applyNodeTransform(Function transform) ; /** Deep copy */ public Expr deepCopy() ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java index 8db9b012894..5f1794ecdeb 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java @@ -19,6 +19,9 @@ package org.apache.jena.sparql.expr; import static org.apache.jena.atlas.lib.Lib.equal ; + +import java.util.function.Function; + import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.logging.Log ; import org.apache.jena.graph.Node ; @@ -27,7 +30,6 @@ import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.expr.aggregate.Aggregator ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.serializer.SerializationContext ; /** Group aggregation functions calculated a value during grouping and @@ -107,10 +109,10 @@ public ExprAggregator copySubstitute(Binding binding) } @Override - public ExprAggregator applyNodeTransform(NodeTransform transform) + public ExprAggregator applyNodeTransform(Function transform) { // Can't rewrite this to a non-variable. - Node node = transform.convert(var) ; + Node node = transform.apply(var) ; if ( ! Var.isVar(node) ) { Log.warn(this, "Attempt to convert an aggregation variable to a non-variable: ignored") ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java index 8593147ad8b..696393ccde1 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java @@ -18,9 +18,11 @@ package org.apache.jena.sparql.expr; +import java.util.function.Function; + +import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; /** An expression that is constant (does not depend on evaluating a sub expression). */ @@ -53,7 +55,7 @@ final public NodeValue eval(Binding binding, FunctionEnv env) public abstract NodeValue eval(FunctionEnv env) ; @Override - final public Expr applyNodeTransform(NodeTransform transform) + final public Expr applyNodeTransform(Function transform) { // Nothing to transform. return copy() ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java index 97901ef9ff8..e55548da9db 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java @@ -18,10 +18,12 @@ package org.apache.jena.sparql.expr; +import java.util.function.Function; + import org.apache.jena.atlas.lib.Lib ; +import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; /** A function that has a single argument */ @@ -84,7 +86,7 @@ final public Expr copySubstitute(Binding binding) } @Override - final public Expr applyNodeTransform(NodeTransform transform) + final public Expr applyNodeTransform(Function transform) { Expr e = (expr == null ? null : expr.applyNodeTransform(transform)) ; return copy(e) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java index 4883ad931f3..79a824f9cf2 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java @@ -18,10 +18,12 @@ package org.apache.jena.sparql.expr; +import java.util.function.Function; + import org.apache.jena.atlas.lib.Lib ; +import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; /** A function of two arguments */ @@ -95,7 +97,7 @@ final public Expr copySubstitute(Binding binding) @Override - final public Expr applyNodeTransform(NodeTransform transform) + final public Expr applyNodeTransform(Function transform) { Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ; Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java index 82d842fe980..f6d9a4196e8 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java @@ -18,10 +18,12 @@ package org.apache.jena.sparql.expr; +import java.util.function.Function; + import org.apache.jena.atlas.lib.Lib ; +import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; /** A function of three arguments */ @@ -105,7 +107,7 @@ final public Expr copySubstitute(Binding binding) @Override - final public Expr applyNodeTransform(NodeTransform transform) + final public Expr applyNodeTransform(Function transform) { Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ; Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java index 720f79df37a..d2cf1100774 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java @@ -20,10 +20,11 @@ import java.util.ArrayList ; import java.util.List ; +import java.util.function.Function; +import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; /** A function which takes N arguments (N may be variable e.g. regex) */ @@ -81,7 +82,7 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(NodeTransform transform) + public Expr applyNodeTransform(Function transform) { ExprList newArgs = new ExprList() ; for ( int i = 1 ; i <= numArgs() ; i++ ) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java index 03ab237aae2..d526bbae6e7 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java @@ -19,11 +19,12 @@ package org.apache.jena.sparql.expr; import java.util.* ; +import java.util.function.Function; +import org.apache.jena.graph.Node; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.ExecutionContext ; import org.apache.jena.sparql.engine.binding.Binding ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.util.Context ; public class ExprList implements Iterable @@ -76,7 +77,7 @@ public void varsMentioned(Collection acc) { /** * Rewrite, applying a node->node transformation */ - public ExprList applyNodeTransform(NodeTransform transform) { + public ExprList applyNodeTransform(Function transform) { ExprList x = new ExprList() ; for ( Expr e : expressions) x.add(e.applyNodeTransform(transform)); diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java index 680bdf8d08b..87eec7f70c2 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java @@ -20,13 +20,14 @@ import java.util.Collection ; import java.util.Set ; +import java.util.function.Function; +import org.apache.jena.graph.Node; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.expr.nodevalue.XSDFuncOp ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.util.ExprUtils ; @@ -85,7 +86,7 @@ final public Expr deepCopy() public abstract Expr copySubstitute(Binding binding) ; @Override - public abstract Expr applyNodeTransform(NodeTransform transform) ; + public abstract Expr applyNodeTransform(Function transform) ; // ---- Default implementations diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java index fc45447e276..a1a589f4176 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java @@ -18,6 +18,8 @@ package org.apache.jena.sparql.expr; +import java.util.function.Function; + import org.apache.jena.atlas.io.IndentedWriter ; import org.apache.jena.graph.Node ; import org.apache.jena.query.Query ; @@ -25,7 +27,6 @@ import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; /** An expression that is a variable in an expression. */ @@ -75,9 +76,9 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(NodeTransform transform) + public Expr applyNodeTransform(Function transform) { - Node node = transform.convert(varNode) ; + Node node = transform.apply(varNode) ; if ( Var.isVar(node)) return new ExprVar(Var.alloc(node)) ; return NodeValue.makeNode(node) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java index 10cfde5dc39..d960de19915 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java @@ -51,6 +51,7 @@ import java.util.Iterator ; import java.util.Properties ; import java.util.ServiceLoader ; +import java.util.function.Function; import javax.xml.datatype.DatatypeConfigurationException ; import javax.xml.datatype.DatatypeFactory ; @@ -75,7 +76,6 @@ import org.apache.jena.sparql.expr.nodevalue.* ; import org.apache.jena.sparql.function.FunctionEnv ; import org.apache.jena.sparql.graph.NodeConst ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.serializer.SerializationContext ; import org.apache.jena.sparql.util.* ; import org.apache.jena.vocabulary.RDF ; @@ -468,10 +468,10 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(NodeTransform transform) + public Expr applyNodeTransform(Function transform) { Node n = asNode() ; - n = transform.convert(n) ; + n = transform.apply(n) ; return makeNode(n) ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java index 67b016cd481..553202cf5bb 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java @@ -18,9 +18,10 @@ package org.apache.jena.sparql.expr.aggregate; +import java.util.function.Function; + import org.apache.jena.graph.Node ; import org.apache.jena.sparql.expr.ExprList ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.serializer.SerializationContext ; /** An Aggregator is the processor for the whole result stream. @@ -46,7 +47,7 @@ public interface Aggregator public ExprList getExprList() ; public Aggregator copy(ExprList exprs) ; - public Aggregator copyTransform(NodeTransform transform) ; + public Aggregator copyTransform(Function transform) ; @Override public int hashCode() ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java index cd6d76b84cd..7fb321b3972 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java @@ -21,6 +21,7 @@ import java.util.HashMap ; import java.util.Locale ; import java.util.Map ; +import java.util.function.Function; import org.apache.jena.atlas.io.IndentedLineBuffer ; import org.apache.jena.graph.Node ; @@ -29,7 +30,6 @@ import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; import org.apache.jena.sparql.expr.NodeValue ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.serializer.SerializationContext ; import org.apache.jena.sparql.sse.writers.WriterExpr ; import org.apache.jena.sparql.util.ExprUtils ; @@ -86,7 +86,7 @@ public Node getValue(Binding key) public String key() { return toPrefixString() ; } @Override - public final Aggregator copyTransform(NodeTransform transform) + public final Aggregator copyTransform(Function transform) { ExprList e = getExprList() ; if ( e != null ) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java index 724da1e78cb..a22da5f9b35 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java @@ -18,12 +18,16 @@ package org.apache.jena.sparql.graph; -import org.apache.jena.atlas.iterator.Transform ; +import java.util.function.Function; + import org.apache.jena.graph.Node ; /** Convert nodes to nodes - Vars may need to be translated into Vars. */ -public interface NodeTransform extends Transform +/** + * Prefer {@link Function}. + * + */ +@Deprecated +public interface NodeTransform extends Function { - @Override - public Node convert(Node node) ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java index f585eacd056..94314c26781 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java @@ -21,6 +21,7 @@ import java.util.ArrayList ; import java.util.Iterator ; import java.util.List ; +import java.util.function.Function; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.graph.Node ; @@ -37,19 +38,20 @@ import org.apache.jena.sparql.engine.binding.BindingMap ; import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; + import static org.apache.jena.atlas.lib.Lib.equal ; public class NodeTransformLib { /** Do a node->node conversion of an Op - return original BGP for "no change" */ - public static Op transform(NodeTransform nodeTransform, Op op) + public static Op transform(Function nodeTransform, Op op) { Transform opTransform = new NodeTransformOp(nodeTransform) ; return Transformer.transform(opTransform, null, op) ; // No expr transform - we do it ourselves. } /** Do a node->node conversion of a BGP - return original BGP for "no change" */ - public static BasicPattern transform(NodeTransform nodeTransform, BasicPattern pattern) + public static BasicPattern transform(Function nodeTransform, BasicPattern pattern) { BasicPattern bgp2 = new BasicPattern() ; boolean changed = false ; @@ -66,7 +68,7 @@ public static BasicPattern transform(NodeTransform nodeTransform, BasicPattern p } /** Do a node->node conversion of a QuadPattern - return original QuadPattern for "no change" */ - public static QuadPattern transform(NodeTransform nodeTransform, QuadPattern pattern) + public static QuadPattern transform(Function nodeTransform, QuadPattern pattern) { QuadPattern qp2 = new QuadPattern() ; boolean changed = false ; @@ -83,18 +85,18 @@ public static QuadPattern transform(NodeTransform nodeTransform, QuadPattern pat } /** Do a node->node conversion of a Triple - return original Triple for "no change" */ - public static Triple transform(NodeTransform nodeTransform, Triple triple) + public static Triple transform(Function nodeTransform, Triple triple) { boolean change = false ; Node s = triple.getSubject() ; Node p = triple.getPredicate() ; Node o = triple.getObject() ; - Node s1 = nodeTransform.convert(s) ; + Node s1 = nodeTransform.apply(s) ; if ( s1 != s ) { change = true ; s = s1 ; } - Node p1 = nodeTransform.convert(p) ; + Node p1 = nodeTransform.apply(p) ; if ( p1 != p ) { change = true ; p = p1 ; } - Node o1 = nodeTransform.convert(o) ; + Node o1 = nodeTransform.apply(o) ; if ( o1 != o ) { change = true ; o = o1 ; } if ( ! change ) @@ -103,7 +105,7 @@ public static Triple transform(NodeTransform nodeTransform, Triple triple) } /** Do a node->node conversion of a Quad - return original Quad for "no change" */ - public static Quad transform(NodeTransform nodeTransform, Quad quad) + public static Quad transform(Function nodeTransform, Quad quad) { boolean change = false ; Node s = quad.getSubject() ; @@ -111,13 +113,13 @@ public static Quad transform(NodeTransform nodeTransform, Quad quad) Node o = quad.getObject() ; Node g = quad.getGraph() ; - Node g1 = nodeTransform.convert(g) ; + Node g1 = nodeTransform.apply(g) ; if ( g1 != g ) { change = true ; g = g1 ; } - Node s1 = nodeTransform.convert(s) ; + Node s1 = nodeTransform.apply(s) ; if ( s1 != s ) { change = true ; s = s1 ; } - Node p1 = nodeTransform.convert(p) ; + Node p1 = nodeTransform.apply(p) ; if ( p1 != p ) { change = true ; p = p1 ; } - Node o1 = nodeTransform.convert(o) ; + Node o1 = nodeTransform.apply(o) ; if ( o1 != o ) { change = true ; o = o1 ; } if ( ! change ) @@ -125,7 +127,7 @@ public static Quad transform(NodeTransform nodeTransform, Quad quad) return new Quad(g,s,p,o) ; } - public static Table transform(Table table, NodeTransform transform) { + public static Table transform(Table table, Function transform) { // Non-streaming rewrite List vars = transformVars(transform, table.getVars()) ; Iterator iter = table.rows() ; @@ -138,11 +140,11 @@ public static Table transform(Table table, NodeTransform transform) { return new TableData(vars, newRows) ; } - public static Binding transform(Binding b, NodeTransform transform) { + public static Binding transform(Binding b, Function transform) { BindingMap b2 = BindingFactory.create() ; List vars = Iter.toList(b.vars()) ; for ( Var v : vars ) { - Var v2 = (Var)transform.convert(v) ; + Var v2 = (Var)transform.apply(v) ; b2.add(v2, b.get(v)); } return b2 ; @@ -151,7 +153,7 @@ public static Binding transform(Binding b, NodeTransform transform) { /** Do a node->node conversion of a List<Quad> - return original List<Quad> for "no change" */ - public static List transformQuads(NodeTransform nodeTransform, List quads) + public static List transformQuads(Function nodeTransform, List quads) { List x = new ArrayList<>() ; boolean changed = false ; @@ -168,14 +170,14 @@ public static List transformQuads(NodeTransform nodeTransform, List } /** Do a node->node conversion of a VarExprList - return original VarExprList for "no change" */ - public static VarExprList transform(NodeTransform nodeTransform, VarExprList varExprList) + public static VarExprList transform(Function nodeTransform, VarExprList varExprList) { VarExprList varExprList2 = new VarExprList() ; boolean changed = false ; for ( Var v : varExprList.getVars() ) { Expr expr = varExprList.getExpr(v) ; - Var v2 = (Var)nodeTransform.convert(v) ; + Var v2 = (Var)nodeTransform.apply(v) ; Expr expr2 = ( expr != null ) ? transform(nodeTransform, expr) : null ; if ( ! equal(v, v2) || ! equal(expr, expr2) ) @@ -187,13 +189,13 @@ public static VarExprList transform(NodeTransform nodeTransform, VarExprList var return varExprList2 ; } - public static List transformVars(NodeTransform nodeTransform, List varList) + public static List transformVars(Function nodeTransform, List varList) { List varList2 = new ArrayList<>(varList.size()) ; boolean changed = false ; for ( Var v : varList ) { - Var v2 = (Var)nodeTransform.convert(v) ; + Var v2 = (Var)nodeTransform.apply(v) ; varList2.add(v2) ; if ( !equal(v, v2) ) changed = true ; @@ -203,7 +205,7 @@ public static List transformVars(NodeTransform nodeTransform, List var return varList2 ; } - public static ExprList transform(NodeTransform nodeTransform, ExprList exprList) + public static ExprList transform(Function nodeTransform, ExprList exprList) { ExprList exprList2 = new ExprList() ; boolean changed = false ; @@ -218,12 +220,12 @@ public static ExprList transform(NodeTransform nodeTransform, ExprList exprList) return exprList2 ; } - public static Expr transform(NodeTransform nodeTransform, Expr expr) + public static Expr transform(Function nodeTransform, Expr expr) { return expr.applyNodeTransform(nodeTransform) ; } - public static List transform(NodeTransform nodeTransform, List conditions) + public static List transform(Function nodeTransform, List conditions) { List conditions2 = new ArrayList<>() ; boolean same = true ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java index a9f194513cf..d62d17624c2 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java @@ -20,6 +20,7 @@ import java.util.ArrayList ; import java.util.List ; +import java.util.function.Function; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -50,8 +51,8 @@ class NodeTransformOp extends TransformCopy // Not: // Conditional (no expression) - private final NodeTransform transform ; - NodeTransformOp(NodeTransform transform) + private final Function transform ; + NodeTransformOp(Function transform) { this.transform = transform ; } @@ -85,9 +86,9 @@ class NodeTransformOp extends TransformCopy { TriplePath tp = opPath.getTriplePath() ; Node s = tp.getSubject() ; - Node s1 = transform.convert(s) ; + Node s1 = transform.apply(s) ; Node o = tp.getObject() ; - Node o1 = transform.convert(o) ; + Node o1 = transform.apply(o) ; if ( s1 == s && o1 == o ) // No change. @@ -111,7 +112,7 @@ class NodeTransformOp extends TransformCopy // The internal representation is (graph, BGP) BasicPattern bgp2 = NodeTransformLib.transform(transform, opQuadPattern.getBasicPattern()) ; Node g2 = opQuadPattern.getGraphNode() ; - g2 = transform.convert(g2) ; + g2 = transform.apply(g2) ; if ( g2 == opQuadPattern.getGraphNode() && bgp2 == opQuadPattern.getBasicPattern() ) return super.transform(opQuadPattern) ; @@ -120,7 +121,7 @@ class NodeTransformOp extends TransformCopy @Override public Op transform(OpGraph opGraph, Op subOp) { - Node g2 = transform.convert(opGraph.getNode()) ; + Node g2 = transform.apply(opGraph.getNode()) ; if ( g2 == opGraph.getNode() ) return super.transform(opGraph, subOp) ; return new OpGraph(g2, subOp) ; @@ -128,7 +129,7 @@ class NodeTransformOp extends TransformCopy @Override public Op transform(OpDatasetNames opDatasetNames) { - Node g2 = transform.convert(opDatasetNames.getGraphNode()) ; + Node g2 = transform.apply(opDatasetNames.getGraphNode()) ; if ( g2 == opDatasetNames.getGraphNode() ) return super.transform(opDatasetNames) ; return new OpDatasetNames(g2) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java index 72abe48bf7b..85ab1163b92 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java @@ -20,14 +20,14 @@ import java.util.HashMap ; import java.util.Map ; +import java.util.function.Function; import org.apache.jena.graph.Node ; import org.apache.jena.sparql.ARQConstants ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.core.VarAlloc ; -import org.apache.jena.sparql.graph.NodeTransform ; -public class NodeTransformBNodesToVariables implements NodeTransform +public class NodeTransformBNodesToVariables implements Function { private VarAlloc varAlloc = new VarAlloc(ARQConstants.allocVarBNodeToVar) ; private Map mapping ; @@ -38,7 +38,7 @@ public NodeTransformBNodesToVariables() } @Override - public Node convert(Node node) + public Node apply(Node node) { if ( ! node.isBlank() ) return node ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java index 99f9b318555..63b5cb4cb26 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/TemplateLib.java @@ -19,9 +19,10 @@ package org.apache.jena.sparql.modify; import java.util.* ; +import java.util.function.Function; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; +import org.apache.jena.ext.com.google.common.collect.Iterators; import org.apache.jena.graph.Node ; import org.apache.jena.graph.NodeFactory ; import org.apache.jena.graph.Triple ; @@ -55,28 +56,22 @@ protected static List remapDefaultGraph(List quads, final Node dftGr // The default graph has been set to something else. if ( dftGraph != null ) { - Transform nt = new Transform() { - @Override - public Quad convert(Quad quad) - { - if ( ! quad.isDefaultGraph() ) return quad ; - - return new Quad(dftGraph, quad.getSubject(), quad.getPredicate(), quad.getObject()) ; - } - }; - quads = Iter.map(quads, nt) ; - } + quads = Iter + .map(quads, + q -> (!q.isDefaultGraph()) ? q : + new Quad(dftGraph, q.getSubject(), q.getPredicate(), q.getObject())); + } return quads; } /** Substitute into triple patterns */ public static Iterator calcTriples(final List triples, Iterator bindings) { - return Iter.mapMany(bindings, new Transform>() + return Iterators.concat(Iter.map(bindings, new Function>() { Map bNodeMap = new HashMap<>() ; @Override - public Iterator convert(final Binding b) + public Iterator apply(final Binding b) { // Iteration is a new mapping of bnodes. bNodeMap.clear() ; @@ -94,17 +89,17 @@ public Iterator convert(final Binding b) } return tripleList.iterator(); } - }); + })); } /** Substitute into quad patterns */ public static Iterator calcQuads(final List quads, Iterator bindings) { - return Iter.mapMany(bindings, new Transform>() + return Iterators.concat(Iter.map(bindings, new Function>() { Map bNodeMap = new HashMap<>() ; @Override - public Iterator convert(final Binding b) + public Iterator apply(final Binding b) { // Iteration is a new mapping of bnodes. bNodeMap.clear() ; @@ -122,7 +117,7 @@ public Iterator convert(final Binding b) } return quadList.iterator(); } - }); + })); } /** Substitute into a quad, with rewriting of bNodes */ diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java index f0af38ffdb6..e97a7968cfd 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java @@ -22,6 +22,7 @@ import java.util.Iterator ; import java.util.List ; +import java.util.function.Function; import org.apache.jena.atlas.data.BagFactory ; import org.apache.jena.atlas.data.DataBag ; @@ -50,7 +51,6 @@ import org.apache.jena.sparql.engine.binding.BindingRoot ; import org.apache.jena.sparql.graph.GraphFactory ; import org.apache.jena.sparql.graph.GraphOps ; -import org.apache.jena.sparql.graph.NodeTransform ; import org.apache.jena.sparql.graph.NodeTransformLib ; import org.apache.jena.sparql.modify.request.* ; import org.apache.jena.sparql.syntax.Element ; @@ -474,7 +474,7 @@ private Graph graphOrDummy(DatasetGraph dsg, Node gn) protected static List unused_convertBNodesToVariables(List quads) { - NodeTransform bnodesToVariables = new NodeTransformBNodesToVariables() ; + Function bnodesToVariables = new NodeTransformBNodesToVariables() ; return NodeTransformLib.transformQuads(bnodesToVariables, quads) ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java index b36ed431731..c2db208d5e0 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/PathLib.java @@ -21,8 +21,8 @@ import java.util.ArrayList ; import java.util.Iterator ; import java.util.List ; +import java.util.function.Predicate; -import org.apache.jena.atlas.iterator.Filter ; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Graph ; @@ -247,7 +247,7 @@ private static int existsPath(Graph graph, Node subject, Path path, final Node o if ( ! subject.isConcrete() || !object.isConcrete() ) throw new ARQInternalErrorException("Non concrete node for existsPath evaluation") ; Iterator iter = PathEval.eval(graph, subject, path, execCxt.getContext()) ; - Filter filter = new Filter() { @Override public boolean accept(Node node) { return Lib.equal(node, object) ; } } ; + Predicate filter = node -> Lib.equal(node, object); // See if we got to the node we're interested in finishing at. iter = Iter.filter(iter, filter) ; long x = Iter.count(iter) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java index 6497bb442a1..9df5c10e497 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEngine.java @@ -22,9 +22,7 @@ import java.util.Collection ; import java.util.Iterator ; import java.util.List ; - import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -100,10 +98,10 @@ protected final Iterator doOne(Node node, Node property) { Iterator iter2 = null ; if ( direction() ) { Iter iter1 = Iter.iter(graphFind(node, property, Node.ANY)) ; - iter2 = iter1.map(PathEngine.selectObject) ; + iter2 = iter1.map(Triple::getObject) ; } else { Iter iter1 = Iter.iter(graphFind(Node.ANY, property, node)) ; - iter2 = iter1.map(PathEngine.selectSubject) ; + iter2 = iter1.map(Triple::getSubject) ; } return iter2 ; @@ -151,30 +149,15 @@ protected static long dec(long x) { return (x <= 0) ? x : x - 1 ; } - protected static Transform selectSubject = new Transform() { - @Override - public Node convert(Triple triple) { return triple.getSubject() ; } - } ; - - protected static Transform selectPredicate = new Transform() { - @Override - public Node convert(Triple triple) { return triple.getPredicate() ; } - } ; - - protected static Transform selectObject = new Transform() { - @Override - public Node convert(Triple triple) { return triple.getObject() ; } - } ; - protected Iterator stepExcludeForwards(Node node, List excludedNodes) { Iter iter1 = forwardLinks(node, excludedNodes) ; - Iter r1 = iter1.map(selectObject) ; + Iter r1 = iter1.map(Triple::getObject) ; return r1 ; } protected Iterator stepExcludeBackwards(Node node, List excludedNodes) { Iter iter1 = backwardLinks(node, excludedNodes) ; - Iter r1 = iter1.map(selectSubject) ; + Iter r1 = iter1.map(Triple::getSubject) ; return r1 ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java index 3399dec4c68..242cf9a9762 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/path/eval/PathEvaluator.java @@ -20,8 +20,8 @@ import java.util.Collection ; import java.util.Iterator ; +import java.util.function.Predicate; -import org.apache.jena.atlas.iterator.Filter ; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Node ; @@ -164,7 +164,7 @@ public void visit(P_Seq pathSeq) { // Other operations can produce duplicates and so may be executed in // different ways depending on cardibnality requirements. - protected static class FilterExclude implements Filter + protected static class FilterExclude implements Predicate { private Collection excludes ; @@ -173,7 +173,7 @@ public FilterExclude(Collection excludes) { } @Override - public boolean accept(Triple triple) { + public boolean test(Triple triple) { return !excludes.contains(triple.getPredicate()) ; } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java b/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java index 126728c7edf..86f93312d0a 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/pfunction/library/strSplit.java @@ -22,7 +22,6 @@ import java.util.Iterator ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.StrUtils ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.NodeFactory ; @@ -61,13 +60,10 @@ public QueryIterator execEvaluated(final Binding binding, final Node subject, fi // StrUtils will also trim whitespace String[] tokens = StrUtils.split(s, regex); - Iterator it = Iter.map(Arrays.asList(tokens).iterator(), new Transform() { - @Override - public Binding convert(String item) - { - return BindingFactory.binding(binding, subjectVar, NodeFactory.createLiteral(item)) ; - } - }); + Iterator it = Iter.map( + Arrays.asList(tokens).iterator(), + item -> BindingFactory.binding(binding, subjectVar, + NodeFactory.createLiteral(item))); return new QueryIterPlainWrapper(it, execCxt); } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java index 7d6487b1b42..43f6c65ff8a 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/CSVInput.java @@ -22,10 +22,10 @@ import java.util.ArrayList ; import java.util.Iterator ; import java.util.List ; +import java.util.function.Function; import org.apache.jena.atlas.csv.CSVParser ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.logging.FmtLog ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.NodeFactory ; @@ -69,10 +69,10 @@ public static ResultSet fromCSV(InputStream in) CSVParser parser = CSVParser.create(in) ; final List vars = vars(parser) ; List varNames = Var.varNames(vars) ; - Transform, Binding> transform = new Transform, Binding>(){ + Function, Binding> transform = new Function, Binding>(){ private int count = 1 ; @Override - public Binding convert(List row) { + public Binding apply(List row) { if ( row.size() != vars.size() ) FmtLog.warn(log, "Row %d: Length=%d: expected=%d", count, row.size(), vars.size()) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java index c11a38c81dd..99413a58178 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java @@ -19,9 +19,7 @@ package org.apache.jena.sparql.resultset; import java.util.* ; - import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Node ; import org.apache.jena.query.* ; @@ -230,7 +228,7 @@ static private boolean compareHeader(ResultSet rs1, ResultSet rs2) { } static private List convert(ResultSet rs) { - return Iter.iter(rs).map(qs2b).toList() ; + return Iter.iter(rs).map(item -> BindingUtils.asBinding(item)).toList() ; } @@ -299,14 +297,6 @@ private static boolean containedIn(Binding bind1, Binding bind2, EqualityTest te } return true ; } - - private static Transform qs2b = new Transform () { - @Override - public Binding convert(QuerySolution item) - { - return BindingUtils.asBinding(item) ; - } - } ; public static class BNodeIso implements EqualityTest { diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java index 9738b473229..48ee0c9b55d 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/ModelUtils.java @@ -22,7 +22,6 @@ import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.iterator.IteratorResourceClosing ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Closeable ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -101,14 +100,7 @@ public static boolean isValidAsStatement(Node s, Node p, Node o) public static StmtIterator triplesToStatements(final Iterator it, final Model refModel) { - return new StmtIteratorImpl(Iter.map(it, new Transform() - { - @Override - public Statement convert(Triple item) - { - return refModel.asStatement(item); - } - })) + return new StmtIteratorImpl(Iter.map(it, refModel::asStatement)) { // Make sure to close the incoming iterator @Override @@ -128,14 +120,7 @@ public void close() public static Iterator statementsToTriples(final Iterator it) { - return new IteratorResourceClosing<>(Iter.map(it, new Transform() - { - @Override - public Triple convert(Statement item) - { - return item.asTriple(); - } - }), + return new IteratorResourceClosing<>(Iter.map(it, Statement::asTriple), new Closeable() { @Override diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java index d1dee93867f..fbc01b4f3de 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/graph/GraphList.java @@ -24,10 +24,8 @@ import java.util.Iterator ; import java.util.List ; import java.util.Set ; - import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.iterator.IteratorConcat ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.logging.Log ; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Node ; @@ -139,13 +137,7 @@ public static Iterator listMember(Graph graph, final Node s, Node o) { return Iter.nullIterator() ; } List x = members(gn) ; - Transform transform = new Transform() { - @Override - public Triple convert(Node obj) { - return Triple.create(s, ListPFunction.nListMember, obj) ; - } - } ; - return Iter.map(x.iterator(), transform) ; + return Iter.map(x.iterator(), t -> Triple.create(s, ListPFunction.nListMember, t)) ; } private static boolean isAny(Node x) { @@ -354,8 +346,6 @@ public static Node listToTriples(List list, BasicPattern bgp) private static GNode next(GNode gnode) { return new GNode(gnode, cdr(gnode)) ; } - private static Node value(GNode gnode) { return car(gnode) ; } - public static boolean isListNode (GNode gnode) { return gnode.node.equals(NIL) || isCons(gnode) ; } diff --git a/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java b/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java index 1d62f2ac3dd..20cf455a67f 100644 --- a/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java +++ b/jena-arq/src/test/java/org/apache/jena/riot/process/TestNormalization.java @@ -103,7 +103,7 @@ private static void normalize(String input, String expected) Node n1 = NodeFactoryExtra.parseNode(input) ; assertTrue("Invalid lexical form", n1.getLiteralDatatype().isValid(n1.getLiteralLexicalForm())); - Node n2 = CanonicalizeLiteral.get().convert(n1) ; + Node n2 = CanonicalizeLiteral.get().apply(n1) ; Node n3 = NodeFactoryExtra.parseNode(expected) ; assertEquals("Invalid canonicalization (lex)", n3.getLiteralLexicalForm(), n2.getLiteralLexicalForm()) ; assertEquals("Invalid canonicalization (node)", n3, n2) ; @@ -115,7 +115,7 @@ private static void normalizeLang(String input, String expected) private static void normalizeLang(String input, String expected, boolean correct) { Node n1 = NodeFactoryExtra.parseNode(input) ; - Node n2 = CanonicalizeLiteral.get().convert(n1) ; + Node n2 = CanonicalizeLiteral.get().apply(n1) ; Node n3 = NodeFactoryExtra.parseNode(expected) ; if ( correct ) { diff --git a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java index ff87bcced96..192953fab89 100644 --- a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java +++ b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java @@ -21,8 +21,6 @@ import java.io.ByteArrayInputStream ; import java.io.ByteArrayOutputStream ; import java.util.Iterator ; - -import org.apache.jena.atlas.iterator.Filter ; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.atlas.lib.StrUtils ; @@ -130,7 +128,7 @@ public class TestStreamRDFThrift extends BaseTest { boolean b = IsoMatcher.isomorphic(dsg1, dsg2) ; assertTrue(b) ; // Stronger - same bNode and same as in original data. - Node obj = Iter.first(dsg1.listGraphNodes(), filterBlankNode) ; + Node obj = Iter.first(dsg1.listGraphNodes(), Node::isBlank) ; termAsObject(dsg1, obj) ; } @@ -149,7 +147,7 @@ public class TestStreamRDFThrift extends BaseTest { boolean b = IsoMatcher.isomorphic(dsg1, dsg2) ; assertTrue(b) ; // Stronger - same bNode and same as in original data. - Node obj = Iter.first(dsg1.listGraphNodes(), filterBlankNode) ; + Node obj = Iter.first(dsg1.listGraphNodes(), Node::isBlank) ; termAsObject(dsg1, obj) ; } @@ -174,13 +172,6 @@ static void termAsObject(DatasetGraph dsg, Node term) { fail("Failed to find "+term) ; } - static Filter filterBlankNode = new Filter() { - @Override - public boolean accept(Node item) { - return item.isBlank() ; - } - } ; - // ** Java8 // public static Stream stream(Iterator iterator) { // int characteristics = Spliterator.ORDERED | Spliterator.IMMUTABLE; diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java index de2630e26f5..d9c14ab0d25 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java @@ -18,7 +18,12 @@ package org.apache.jena.atlas.iterator; -public interface Action +import java.util.function.Consumer; + +/** + * Prefer {@link Consumer} + */ +@Deprecated +public interface Action extends Consumer { - public void apply(T item) ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionCount.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionCount.java index 20f837c26b4..1ec03545b49 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionCount.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionCount.java @@ -18,13 +18,15 @@ package org.apache.jena.atlas.iterator; +import java.util.function.Consumer; -public class ActionCount implements Action + +public class ActionCount implements Consumer { private long count = 0 ; @Override - public void apply(T item) + public void accept(T item) { count++ ; } public long getCount() { return count ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionNothing.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionNothing.java deleted file mode 100644 index d05b2796947..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/ActionNothing.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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.atlas.iterator; - - -public class ActionNothing implements Action -{ - @Override - public void apply(T item) { } -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java index 5d427c5748e..689f5bc8707 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java @@ -18,5 +18,11 @@ package org.apache.jena.atlas.iterator; +import java.util.function.Predicate; + +/** + * Prefer {@link Predicate}. + */ @FunctionalInterface -public interface Filter { boolean accept(T item) ; } +@Deprecated +public interface Filter extends Predicate{ } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java index 3beb8324fa6..e2bc4b49d44 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java @@ -18,17 +18,17 @@ package org.apache.jena.atlas.iterator; +import java.util.function.Predicate; + import org.apache.jena.atlas.lib.Lib ; -public class FilterDistinctAdjacent implements Filter +public class FilterDistinctAdjacent implements Predicate { private boolean isSet = false ; private T last = null ; - public FilterDistinctAdjacent() { } - @Override - public boolean accept(T item) + public boolean test(T item) { if ( isSet && Lib.equal(last, item) ) return false ; diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterOutNulls.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterOutNulls.java deleted file mode 100644 index 21cd471c066..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterOutNulls.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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.atlas.iterator; - - -public class FilterOutNulls implements Filter -{ - public FilterOutNulls() { } - - @Override - public boolean accept(T item) - { - return item != null ; - } - -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterStack.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterStack.java index 479d93f73c1..c4d5e86929d 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterStack.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterStack.java @@ -18,24 +18,26 @@ package org.apache.jena.atlas.iterator; +import java.util.function.Predicate; + /** * Add a filter to a chain - the original filter is called after this new sub-filter. */ -public abstract class FilterStack implements Filter +public abstract class FilterStack implements Predicate { - private final Filter other ; + private final Predicate other ; private final boolean subFilterLast ; - public FilterStack(Filter other) { this(other, false) ; } + public FilterStack(Predicate other) { this(other, false) ; } - public FilterStack(Filter other, boolean callOldFilterFirst) + public FilterStack(Predicate other, boolean callOldFilterFirst) { this.other = other ; this.subFilterLast = callOldFilterFirst ; } @Override - public final boolean accept(T item) + public final boolean test(T item) { if ( subFilterLast ) return acceptAdditionaOther(item) ; @@ -48,7 +50,7 @@ private boolean acceptAdditionaOther(T item) if ( ! acceptAdditional(item) ) return false ; - if ( other != null && ! other.accept(item) ) + if ( other != null && ! other.test(item) ) return false ; return true ; @@ -56,7 +58,7 @@ private boolean acceptAdditionaOther(T item) private boolean acceptOtherAdditional(T item) { - if ( other != null && ! other.accept(item) ) + if ( other != null && ! other.test(item) ) return false ; return acceptAdditional(item) ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterUnique.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterUnique.java index 2b2a9576b3f..4f210728351 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterUnique.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterUnique.java @@ -20,20 +20,16 @@ import java.util.HashSet ; import java.util.Set ; +import java.util.function.Predicate; -public class FilterUnique implements Filter +public class FilterUnique implements Predicate { private Set seen = new HashSet<>() ; - public FilterUnique() { } - @Override - public boolean accept(T item) + public boolean test(T item) { - if ( seen.contains(item) ) - return false ; - seen.add(item) ; - return true ; + return seen.add(item) ; } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java index 8aec2ea5145..fc0a5348c0d 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java @@ -20,10 +20,12 @@ import java.io.PrintStream ; import java.util.* ; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Stream ; import java.util.stream.StreamSupport ; -import org.apache.jena.atlas.lib.ActionKeyValue ; import org.apache.jena.atlas.lib.Closeable ; import org.apache.jena.atlas.lib.Sink ; @@ -182,27 +184,20 @@ public static R reduce(Iterator stream, Accumulate agg // apply(stream.iterator(), action) ; // } - public static void apply(Iterator stream, Action action) { + public static void apply(Iterator stream, Consumer action) { for (; stream.hasNext();) { T item = stream.next() ; - action.apply(item) ; + action.accept(item) ; } } - // -- Map specific apply. No results - do immediately. - - public static void apply(Map map, ActionKeyValue action) { - for (Map.Entry entry : map.entrySet()) - action.apply(entry.getKey(), entry.getValue()) ; - } - // ---- Filter // public static Iterator filter(Iterable stream, Filter filter) { // return filter(stream.iterator(), filter) ; // } - public static Iterator filter(final Iterator stream, final Filter filter) { + public static Iterator filter(final Iterator stream, final Predicate filter) { final Iterator iter = new Iterator() { boolean finished = false ; @@ -219,7 +214,7 @@ public boolean hasNext() { break ; } T nextItem = stream.next() ; - if ( filter.accept(nextItem) ) { + if ( filter.test(nextItem) ) { slot = nextItem ; slotOccupied = true ; break ; @@ -246,29 +241,12 @@ public void remove() { return iter ; } - private static class InvertedFilter implements Filter { - public static Filter invert(Filter filter) { - return new InvertedFilter<>(filter) ; - } - private Filter baseFilter ; - - private InvertedFilter(Filter baseFilter) { - this.baseFilter = baseFilter ; - } - - @Override - public boolean accept(T item) { - return !baseFilter.accept(item) ; - } - } - // public static Iterator notFilter(Iterable stream, Filter filter) { // return notFilter(stream.iterator(), filter) ; // } - public static Iterator notFilter(final Iterator stream, final Filter filter) { - Filter flippedFilter = InvertedFilter.invert(filter) ; - return filter(stream, flippedFilter) ; + public static Iterator notFilter(final Iterator stream, final Predicate filter) { + return filter(stream, filter.negate()) ; } // Filter-related @@ -288,10 +266,10 @@ public static Iterator notFilter(final Iterator stream, fina * Return true if every element of stream passes the filter (reads the * stream until the first element not passing the filter) */ - public static boolean every(Iterator stream, Filter filter) { + public static boolean every(Iterator stream, Predicate filter) { for (; stream.hasNext();) { T item = stream.next() ; - if ( !filter.accept(item) ) + if ( !filter.test(item) ) return false ; } return true ; @@ -312,10 +290,10 @@ public static boolean every(Iterator stream, Filter filter) * Return true if one or more elements of stream passes the filter (reads * the stream to first element passing the filter) */ - public static boolean some(Iterator stream, Filter filter) { + public static boolean some(Iterator stream, Predicate filter) { for (; stream.hasNext();) { T item = stream.next() ; - if ( filter.accept(item) ) + if ( filter.test(item) ) return true ; } return false ; @@ -327,7 +305,7 @@ public static boolean some(Iterator stream, Filter filter) { // return map(stream.iterator(), converter) ; // } - public static Iterator map(final Iterator stream, final Transform converter) { + public static Iterator map(final Iterator stream, final Function converter) { final Iterator iter = new Iterator() { @Override public boolean hasNext() { @@ -336,7 +314,7 @@ public boolean hasNext() { @Override public R next() { - return converter.convert(stream.next()) ; + return converter.apply(stream.next()) ; } @Override @@ -347,68 +325,14 @@ public void remove() { return iter ; } - public static List map(List list, Transform converter) { + public static List map(List list, Function converter) { return toList(map(list.iterator(), converter)) ; } - /** - * Projects each element of a sequence to an Iterator<R> and flattens - * the resulting sequences into one sequence. - */ - public static Iterator mapMany(final Iterator stream, - final Transform> converter) { - final Iterator iter = new Iterator() { - - private Iterator it = null ; // Iterator for the - // current element of - // stream. - - @Override - public boolean hasNext() { - if ( it != null && it.hasNext() ) - // Element of the current iterator. - return true ; - // Start or current iterator has ended. - it = null ; - - // Need to move to next non-empty iterator of the stream. - while (stream.hasNext()) { - it = converter.convert(stream.next()) ; - if ( it.hasNext() ) - // There is something. - return true ; - } - it = null ; - // Stream ran out. - return false ; - } - - @Override - public R next() { - if ( !hasNext() ) - throw new NoSuchElementException() ; - // "it" is always left with something to yield if hashNext is - // true. - return it.next() ; - } - - @Override - public void remove() { - throw new UnsupportedOperationException("mapMany.remove") ; - } - } ; - - return iter ; - } - // public static Iterator mapMany(Iterable stream, Transform> converter) { // return mapMany(stream.iterator(), converter) ; // } - public static List mapMany(List list, Transform> converter) { - return toList(mapMany(list.iterator(), converter)) ; - } - // /** // * Apply an action to everything in stream, yielding a stream of the same // * items @@ -421,7 +345,7 @@ public static List mapMany(List list, Transform Iterator operate(final Iterator stream, final Action action) { + public static Iterator operate(final Iterator stream, final Consumer action) { final Iterator iter = new Iterator() { @Override public boolean hasNext() { @@ -431,7 +355,7 @@ public boolean hasNext() { @Override public T next() { T t = stream.next() ; - action.apply(t) ; + action.accept(t) ; return t ; } @@ -450,13 +374,7 @@ public static Iterator printWrapper(final Iterator stream) { /** Print an iterator as it gets used - this adds a printing wrapper */ public static Iterator printWrapper(final PrintStream out, final Iterator stream) { - Action action = new Action() { - @Override - public void apply(T item) { - out.println(item) ; - } - } ; - return Iter.operate(stream, action) ; + return Iter.operate(stream, out::println) ; } // /** Join two iteratables @@ -502,7 +420,7 @@ public static Iterator distinctAdjacent(Iterator iter) { // } public static Iterator removeNulls(Iterator iter) { - return filter(iter, new FilterOutNulls()) ; + return filter(iter, x -> x != null) ; } /** Take the first N elements of an iterator - stop early if too few */ @@ -667,14 +585,7 @@ public static Iterator debug(Iterator stream) { */ public static Iterator debug(final PrintStream out, Iterator stream) { try { - Transform x = new Transform() { - @Override - public T convert(T item) { - out.println(item) ; - return item ; - } - } ; - return map(stream, x) ; + return map(stream, item -> {out.println(item); return item;}) ; } finally { out.flush() ; } } @@ -685,14 +596,7 @@ public static void print(Iterator stream) { /** Print an iterator (destructive) */ public static void print(final PrintStream out, Iterator stream) { - Action x = new Action() { - @Override - public void apply(T item) { - out.println(item) ; - } - - } ; - apply(stream, x) ; + apply(stream, out::println) ; } // /** Print an iterable */ @@ -782,58 +686,57 @@ public static Iterator concat(Iterator iter1, Iterator iter2) { return Iter.iter(iter1).append(Iter.iter(iter2)) ; } - public static T first(Iterator iter, Filter filter) { - for (int idx = 0; iter.hasNext(); idx++) { + public static T first(Iterator iter, Predicate filter) { + while (iter.hasNext()) { T t = iter.next() ; - if ( filter.accept(t) ) + if ( filter.test(t) ) return t ; - // return idx ; } return null ; } - public static T first(Collection collection, Filter filter) { - return first(collection.iterator(), filter) ; + public static T first(Collection collection, Predicate filter) { + return collection.stream().filter(filter).findFirst().orElse(null); } - public static int firstIndex(Iterator iter, Filter filter) { + public static int firstIndex(Iterator iter, Predicate filter) { for (int idx = 0; iter.hasNext(); idx++) { T t = iter.next() ; - if ( filter.accept(t) ) + if ( filter.test(t) ) return idx ; } return -1 ; } - public static int firstIndex(Collection collection, Filter filter) { + public static int firstIndex(Collection collection, Predicate filter) { return firstIndex(collection.iterator(), filter) ; } - public static T last(Iterator iter, Filter filter) { + public static T last(Iterator iter, Predicate filter) { T thing = null ; - for (int idx = 0; iter.hasNext(); idx++) { + while (iter.hasNext()) { T t = iter.next() ; - if ( filter.accept(t) ) + if ( filter.test(t) ) thing = t ; } return thing ; } - public static T last(Collection collection, Filter filter) { + public static T last(Collection collection, Predicate filter) { return last(collection.iterator(), filter) ; } - public static int lastIndex(Iterator iter, Filter filter) { + public static int lastIndex(Iterator iter, Predicate filter) { int location = -1 ; for (int idx = 0; iter.hasNext(); idx++) { T t = iter.next() ; - if ( filter.accept(t) ) + if ( filter.test(t) ) location = idx ; } return location ; } - public static int lastIndex(Collection collection, Filter filter) { + public static int lastIndex(Collection collection, Predicate filter) { return lastIndex(collection.iterator(), filter) ; } @@ -858,39 +761,39 @@ public void sendToSink(Sink sink) { sendToSink(iterator, sink) ; } - public T first(Filter filter) { + public T first(Predicate filter) { return first(iterator, filter) ; } - public int firstIndex(Filter filter) { + public int firstIndex(Predicate filter) { return firstIndex(iterator, filter) ; } - public T last(Filter filter) { + public T last(Predicate filter) { return last(iterator, filter) ; } - public int lastIndex(Filter filter) { + public int lastIndex(Predicate filter) { return lastIndex(iterator, filter) ; } - public Iter filter(Filter filter) { + public Iter filter(Predicate filter) { return iter(filter(iterator, filter)) ; } - public boolean every(Filter filter) { + public boolean every(Predicate filter) { return every(iterator, filter) ; } - public boolean some(Filter filter) { + public boolean some(Predicate filter) { return some(iterator, filter) ; } public Iter removeNulls() { - return filter(new FilterOutNulls()) ; + return filter(x -> x != null) ; } - public Iter map(Transform converter) { + public Iter map(Function converter) { return iter(map(iterator, converter)) ; } @@ -898,7 +801,7 @@ public Iter map(Transform converter) { * Apply an action to everything in the stream, yielding a stream of the * same items */ - public Iter operate(Action action) { + public Iter operate(Consumer action) { return iter(operate(iterator, action)) ; } @@ -906,7 +809,7 @@ public R reduce(Accumulate aggregator) { return reduce(iterator, aggregator) ; } - public void apply(Action action) { + public void apply(Consumer action) { apply(iterator, action) ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java index ee45935ca01..a8cb1b266c1 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java @@ -18,10 +18,16 @@ package org.apache.jena.atlas.iterator; +import java.util.Arrays; import java.util.Iterator ; import java.util.NoSuchElementException ; +import java.util.Spliterator; /** Iterator over a Java base array */ +/** + * Prefer {@link Arrays#spliterator(Object[])} or {@link Arrays#stream(Object[])} + */ +@Deprecated public final class IteratorArray implements Iterator { /** Iterator over all the array elements */ diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/MapUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/MapUtils.java deleted file mode 100644 index 3c6492e62c9..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/MapUtils.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.atlas.iterator; - -import java.util.Map ; - -import org.apache.jena.atlas.lib.ActionKeyValue ; - - - -public class MapUtils -{ - // Map specific operations - - public static void apply(Map map, ActionKeyValue action) - { - for ( Map.Entry entry : map.entrySet() ) - action.apply(entry.getKey(), entry.getValue()) ; - } -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java index d5d6a0a26a4..67fc3afe702 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java @@ -18,4 +18,10 @@ package org.apache.jena.atlas.iterator; -public interface Transform { R convert(T item) ; } +import java.util.function.Function; + +/** + * Prefer {@link Function}. + */ +@Deprecated +public interface Transform extends Function{ } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java index 894107ae6ce..12dadab6a0b 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ActionKeyValue.java @@ -18,7 +18,12 @@ package org.apache.jena.atlas.lib; -public interface ActionKeyValue +import java.util.function.BiConsumer; + +/** + * Prefer {@link BiConsumer}. + */ +@Deprecated +public interface ActionKeyValue extends BiConsumer { - public void apply(KeyType key, ValueType value) ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java index d7fa7112725..8ebf2d73739 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Cache.java @@ -20,6 +20,7 @@ import java.util.Iterator ; import java.util.concurrent.Callable ; +import java.util.function.BiConsumer; /** A cache */ public interface Cache @@ -52,5 +53,5 @@ public interface Cache public long size() ; /** Register a callback - called when an object is dropped from the cache (optional operation) */ - public void setDropHandler(ActionKeyValue dropHandler) ; + public void setDropHandler(BiConsumer dropHandler) ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/CacheSet.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/CacheSet.java index f5c3d224a32..0f709b062a8 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/CacheSet.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/CacheSet.java @@ -18,7 +18,7 @@ package org.apache.jena.atlas.lib; -import org.apache.jena.atlas.iterator.Action ; +import java.util.function.Consumer; public interface CacheSet { @@ -30,5 +30,5 @@ public interface CacheSet public void remove(T obj) ; public long size() ; /** Register a callback - called when an object is dropped from the cache (optional operation) */ - public void setDropHandler(Action dropHandler) ; + public void setDropHandler(Consumer dropHandler) ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java index 2b6002a0171..e2f6dfdef99 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java @@ -21,7 +21,7 @@ /** Close this object. * This form does not allow Exceptions (it does allow RuntimeExceptions). */ -public interface Closeable +public interface Closeable extends java.io.Closeable { public void close() ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java index 8bae6a49283..759e543a551 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java @@ -19,34 +19,16 @@ package org.apache.jena.atlas.lib; import java.util.Collection ; -import java.util.Iterator ; +import java.util.Objects; public class CollectionUtils { static public void removeNulls(Collection list) - { - for ( Iterator iter = list.iterator() ; iter.hasNext() ; ) - { - T e = iter.next() ; - if ( e == null ) - iter.remove() ; - } + { + list.removeIf(Objects::isNull); } static public boolean disjoint(Collection c1, Collection c2) { - if ( c2.size() < c1.size() ) - { - Collection t = c1 ; - c1 = c2 ; - c2 = t ; - } - - for ( T t : c1 ) - { - if ( c2.contains(t) ) - return false ; - } - return true ; - } + return c1.stream().noneMatch(c2::contains); } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java index 6c9c4421696..a866d5935a9 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java @@ -24,6 +24,7 @@ import java.util.zip.Checksum ; import org.apache.jena.atlas.logging.Log ; +import org.apache.jena.ext.com.google.common.base.Objects; public class Lib { @@ -35,15 +36,13 @@ public static final void sync(Object object) ((Sync)object).sync() ; } - /** Return true if obj1 and obj are both null or are .equals, else return false */ + /** Return true if obj1 and obj are both null or are .equals, else return false + * Prefer {@link Objects#equal(Object, Object)} + */ + @Deprecated public static final boolean equal(T obj1, T obj2) { - if ( obj1 == null ) - return obj2 == null ; - // obj1 != null - if ( obj2 == null ) - return false ; - return obj1.equals(obj2) ; + return Objects.equal(obj1, obj2); } /** Return true if obj1 and obj are both null or are .equals, else return false */ diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java index 78d591a66d1..8315236bc0b 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java @@ -20,10 +20,9 @@ import java.util.ArrayList ; import java.util.List ; - +import java.util.function.Consumer; import org.apache.jena.atlas.io.IndentedWriter ; -import org.apache.jena.atlas.iterator.Action ; import org.apache.jena.atlas.iterator.FilterUnique ; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.logging.Log ; @@ -101,10 +100,10 @@ public static void print(IndentedWriter out, List list) public static void print(final IndentedWriter out, List list, final String sep) { - Action output = new Action() { + Consumer output = new Consumer() { boolean first = true ; @Override - public void apply(T item) + public void accept(T item) { if ( ! first ) out.print(sep) ; out.print(item.toString()) ; diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MapUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MapUtils.java deleted file mode 100644 index 7999a25200d..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MapUtils.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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.atlas.lib; - -import java.util.Map ; - -/** Map specific functions */ -public class MapUtils -{ - private MapUtils() {} - - public static void apply(Map map, ActionKeyValue action) - { - for ( Map.Entry entry : map.entrySet() ) - action.apply(entry.getKey(), entry.getValue()) ; - } - - public static void increment(Map countMap, T key) - { increment(countMap, key, 1) ; } - - public static void increment(Map countMap, T key, int incr) - { - Integer integer = countMap.get(key) ; - if ( integer == null ) - countMap.put(key, incr) ; - else - countMap.put(key, integer+incr) ; - } -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Problem.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Problem.java deleted file mode 100644 index d571fe7f01d..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Problem.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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.atlas.lib; - -public class Problem extends RuntimeException -{ - public Problem(String msg) { super(msg) ; } - public Problem(String msg, Throwable th) { super(msg, th) ; } -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java index f4e561dabef..5cc65a99397 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java @@ -38,12 +38,7 @@ public static Set intersection(Set setLeft, Set public static boolean intersectionP(Set s1, Set s2) { - for( T elt : s1 ) - { - if ( s2.contains(elt) ) - return true ; - } - return false ; + return s1.stream().anyMatch(s2::contains); } public static Set union(Set s1, Set s2) @@ -61,24 +56,5 @@ public static Set difference(Set s1, Set s2) s3.removeAll(s2) ; return s3 ; } - - /** Return true if s1 and s2 are disjoint */ - public static boolean isDisjoint(Set s1, Set s2) - { - Set x = s1 ; - Set y = s2 ; - if ( s1.size() < s2.size() ) - { - x = s2 ; - y = s1 ; - } - - for ( T item : x ) - { - if ( y.contains(item)) - return false ; - } - return true ; - } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java index ae944a71b33..35a97a51e27 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java @@ -21,10 +21,9 @@ import java.util.Arrays ; import java.util.Iterator ; import java.util.List ; +import java.util.function.Function; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.IteratorArray ; -import org.apache.jena.atlas.iterator.Transform ; /** Tuple class - tuples are immutable and must be created initialized */ public class Tuple implements Iterable { @@ -48,22 +47,13 @@ public static Tuple create(X[] elements) { // TupleLib?? public static Iterator project(final int slot, Iterator> iter) { - Transform, T> projection = new Transform, T>() { - @Override - public T convert(Tuple tuple) { - return tuple.get(slot) ; - } - } ; - return Iter.map(iter, projection) ; + return Iter.map(iter, t -> t.get(slot)) ; } public static Iterator> prefix(final int prefixLength, Iterator> iter) { - Transform, Tuple> sub = new Transform, Tuple>() { - @Override - public Tuple convert(Tuple tuple) { - T[] x = ArrayUtils.copy(tuple.tuple, 0, prefixLength) ; - return Tuple.create(x) ; - } + Function, Tuple> sub = t -> { + T[] x = ArrayUtils.copy(t.tuple, 0, prefixLength) ; + return Tuple.create(x) ; } ; return Iter.map(iter, sub) ; } @@ -100,7 +90,7 @@ public T[] tupleCopy() { @Override public Iterator iterator() { - return IteratorArray.create(tuple) ; + return Arrays.stream(tuple).iterator() ; } /** Return a tuple with the column mapping applied */ diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache0.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache0.java index 00befa0ea29..5b8b5cc3016 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache0.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache0.java @@ -20,9 +20,9 @@ import java.util.Iterator ; import java.util.concurrent.Callable ; +import java.util.function.BiConsumer; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.lib.ActionKeyValue ; import org.apache.jena.atlas.lib.Cache ; /** A cache that keeps nothing */ @@ -67,6 +67,6 @@ public long size() { } @Override - public void setDropHandler(ActionKeyValue dropHandler) {} + public void setDropHandler(BiConsumer dropHandler) {} } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java index 38ab5c68119..ffa6e0aa85e 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java @@ -20,16 +20,16 @@ import java.util.Iterator ; import java.util.concurrent.Callable ; +import java.util.function.BiConsumer; import org.apache.jena.atlas.iterator.SingletonIterator ; -import org.apache.jena.atlas.lib.ActionKeyValue ; import org.apache.jena.atlas.lib.Cache ; import org.apache.jena.atlas.lib.Lib ; /** A one-slot cache.*/ public class Cache1 implements Cache { - private ActionKeyValue dropHandler = null ; + private BiConsumer dropHandler = null ; private K cacheKey ; private V cacheValue ; @@ -107,7 +107,7 @@ public void remove(K key) } @Override - public void setDropHandler(ActionKeyValue dropHandler) + public void setDropHandler(BiConsumer dropHandler) { this.dropHandler = dropHandler ; } @@ -115,7 +115,7 @@ public void setDropHandler(ActionKeyValue dropHandler) private void notifyDrop(K key, V thing) { if ( dropHandler != null && key != null ) - dropHandler.apply(key, thing) ; + dropHandler.accept(key, thing) ; } @Override diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java index fd5959c8a78..a25faa01aea 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheGuava.java @@ -21,11 +21,10 @@ import java.util.Iterator ; import java.util.concurrent.Callable ; import java.util.concurrent.ExecutionException ; +import java.util.function.BiConsumer; -import org.apache.jena.atlas.lib.ActionKeyValue ; import org.apache.jena.atlas.lib.Cache ; import org.apache.jena.atlas.logging.Log ; - import org.apache.jena.ext.com.google.common.cache.CacheBuilder ; import org.apache.jena.ext.com.google.common.cache.RemovalListener ; import org.apache.jena.ext.com.google.common.cache.RemovalNotification ; @@ -34,7 +33,7 @@ final public class CacheGuava implements Cache { - private ActionKeyValue dropHandler = null ; + private BiConsumer dropHandler = null ; /*private*/ org.apache.jena.ext.com.google.common.cache.Cache cache ; public CacheGuava(int size) @@ -43,7 +42,7 @@ public CacheGuava(int size) @Override public void onRemoval(RemovalNotification notification) { if ( dropHandler != null ) - dropHandler.apply(notification.getKey(), + dropHandler.accept(notification.getKey(), notification.getValue()) ; } } ; @@ -112,7 +111,7 @@ public long size() { } @Override - public void setDropHandler(ActionKeyValue dropHandler) { + public void setDropHandler(BiConsumer dropHandler) { this.dropHandler = dropHandler ; } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetImpl.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetImpl.java index b3bf0487629..8a24d263953 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetImpl.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetImpl.java @@ -19,9 +19,9 @@ package org.apache.jena.atlas.lib.cache ; import java.util.Iterator ; +import java.util.function.BiConsumer; +import java.util.function.Consumer; -import org.apache.jena.atlas.iterator.Action ; -import org.apache.jena.atlas.lib.ActionKeyValue ; import org.apache.jena.atlas.lib.Cache ; import org.apache.jena.atlas.lib.CacheSet ; @@ -37,21 +37,21 @@ public CacheSetImpl(Cache cache) { /** Callback for entries when dropped from the cache */ @Override - public void setDropHandler(Action dropHandler) { + public void setDropHandler(Consumer dropHandler) { cacheMap.setDropHandler(new Wrapper(dropHandler)) ; } // From map action to set action. - static class Wrapper implements ActionKeyValue { - Action dropHandler ; + static class Wrapper implements BiConsumer { + Consumer dropHandler ; - public Wrapper(Action dropHandler) { + public Wrapper(Consumer dropHandler) { this.dropHandler = dropHandler ; } @Override - public void apply(T key, Object value) { - dropHandler.apply(key) ; + public void accept(T key, Object value) { + dropHandler.accept(key) ; } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetSync.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetSync.java index fc3a3bdc5ed..8fdda11d568 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetSync.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetSync.java @@ -18,7 +18,8 @@ package org.apache.jena.atlas.lib.cache ; -import org.apache.jena.atlas.iterator.Action ; +import java.util.function.Consumer; + import org.apache.jena.atlas.lib.CacheSet ; public class CacheSetSync implements CacheSet { @@ -59,7 +60,7 @@ synchronized public long size() { } @Override - synchronized public void setDropHandler(Action dropHandler) { + synchronized public void setDropHandler(Consumer dropHandler) { cache.setDropHandler(dropHandler) ; } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetWrapper.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetWrapper.java index c11ffb0c55e..3a36c9786d9 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetWrapper.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSetWrapper.java @@ -18,7 +18,8 @@ package org.apache.jena.atlas.lib.cache ; -import org.apache.jena.atlas.iterator.Action ; +import java.util.function.Consumer; + import org.apache.jena.atlas.lib.CacheSet ; public class CacheSetWrapper implements CacheSet { @@ -59,7 +60,7 @@ public long size() { } @Override - public void setDropHandler(Action dropHandler) { + public void setDropHandler(Consumer dropHandler) { cache.setDropHandler(dropHandler) ; } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSimple.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSimple.java index a33d8e2e744..9f889dd48a2 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSimple.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheSimple.java @@ -18,13 +18,14 @@ package org.apache.jena.atlas.lib.cache; +import static java.util.Arrays.asList; + import java.util.Arrays ; import java.util.Iterator ; import java.util.concurrent.Callable ; +import java.util.function.BiConsumer; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.IteratorArray ; -import org.apache.jena.atlas.lib.ActionKeyValue ; import org.apache.jena.atlas.lib.Cache ; @@ -40,7 +41,7 @@ public class CacheSimple implements Cache private final K[] keys ; private final int size ; private int currentSize = 0 ; - private ActionKeyValue dropHandler = null ; + private BiConsumer dropHandler = null ; public CacheSimple(int size) { @@ -113,7 +114,7 @@ public void put(K key, V thing) // Drop the old K->V old = values[x] ; if ( dropHandler != null ) - dropHandler.apply(keys[x], old) ; + dropHandler.accept(keys[x], old) ; currentSize-- ; } @@ -142,7 +143,7 @@ public long size() @Override public Iterator keys() { - Iterator iter = IteratorArray.create(keys) ; + Iterator iter = asList(keys).iterator() ; return Iter.removeNulls(iter) ; } @@ -154,7 +155,7 @@ public boolean isEmpty() /** Callback for entries when dropped from the cache */ @Override - public void setDropHandler(ActionKeyValue dropHandler) + public void setDropHandler(BiConsumer dropHandler) { this.dropHandler = dropHandler ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheWrapper.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheWrapper.java index e655749ffdc..ef27228fa35 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheWrapper.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/CacheWrapper.java @@ -19,8 +19,8 @@ package org.apache.jena.atlas.lib.cache; import java.util.Iterator ; import java.util.concurrent.Callable ; +import java.util.function.BiConsumer; -import org.apache.jena.atlas.lib.ActionKeyValue ; import org.apache.jena.atlas.lib.Cache ; @@ -56,7 +56,7 @@ public class CacheWrapper implements Cache public void remove(Key key) { cache.remove(key) ; } @Override - public void setDropHandler(ActionKeyValue dropHandler) + public void setDropHandler(BiConsumer dropHandler) { cache.setDropHandler(dropHandler) ; } @Override diff --git a/jena-base/src/main/java/org/apache/jena/base/Closeable.java b/jena-base/src/main/java/org/apache/jena/base/Closeable.java deleted file mode 100644 index 59a06aa7d28..00000000000 --- a/jena-base/src/main/java/org/apache/jena/base/Closeable.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * 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.base; - -/** Close this object. - * This form does not allow Exceptions (it does allow RuntimeExceptions) - */ -public interface Closeable { - public void close() ; -} - diff --git a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java index 56cf8a92093..11550a1b6d8 100644 --- a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java +++ b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java @@ -26,6 +26,7 @@ import java.util.Arrays ; import java.util.Iterator ; import java.util.List ; +import java.util.function.Predicate; import org.junit.Test ; @@ -225,97 +226,11 @@ public void fold_04() @Test public void map_01() { - Iterator it = Iter.map(data2.iterator(), new Transform() - { - @Override - public String convert(String item) - { - return item + item; - } - }); + Iterator it = Iter.map(data2.iterator(), item -> item + item); test(it, "xx", "yy", "zz"); } - - @Test - public void mapMany_01() - { - Iterator it = Iter.mapMany(data2.iterator(), new Transform>() - { - @Override - public Iterator convert(String item) - { - List l = new ArrayList<>(2); - l.add(item); - l.add(item + item); - return l.iterator(); - } - }); - - test(it, "x", "xx", "y", "yy", "z", "zz"); - } - - @Test - public void mapMany_02() - { - Iterator it = Iter.mapMany(data2.iterator(), new Transform>() - { - @Override - public Iterator convert(String item) - { - return Iter.nullIterator() ; - } - }); - - assertFalse(it.hasNext()) ; - } - - @Test - public void mapMany_03() - { - Iterator it = Iter.mapMany(data2.iterator(), new Transform>() - { - int count = 0 ; - @Override - public Iterator convert(String item) - { - count++ ; - if ( count%2 == 1 ) - return Iter.singleton(item) ; - else - return Iter.nullIterator() ; - } - }); - - test(it, "x", "z"); - } - - @Test - public void mapMany_04() - { - Iterator it = Iter.mapMany(data2.iterator(), new Transform>() - { - int count = 0 ; - @Override - public Iterator convert(String item) - { - count++ ; - if ( count%2 == 0 ) - return Iter.singleton(item) ; - else - return Iter.nullIterator() ; - } - }); - - test(it, "y"); - } - - Filter filter = new Filter() { - @Override - public boolean accept(String item) - { - return item.length() == 1 ; - }} ; + Predicate filter = item -> item.length() == 1; @Test public void first_01() @@ -441,14 +356,7 @@ public void filter_01() @Test public void filter_02() { - Iterator it = Iter.filter(data3.iterator(), new Filter() - { - @Override - public boolean accept(String item) - { - return "x".equals(item) || "z".equals(item) ; - } - }); + Iterator it = Iter.filter(data3.iterator(), item -> "x".equals(item) || "z".equals(item)); test(it, "x", "z"); } @@ -456,14 +364,7 @@ public boolean accept(String item) @Test public void filter_03() { - Iterator it = Iter.filter(data3.iterator(), new Filter() - { - @Override - public boolean accept(String item) - { - return (null == item) || "x".equals(item) ; - } - }); + Iterator it = Iter.filter(data3.iterator(), item -> null == item || "x".equals(item)); test(it, null, "x", null, null, null, null); } @@ -496,23 +397,8 @@ public boolean accept(String item) test(iter, "a", "b", "a") ; } - private static class AlwaysAcceptFilter implements Filter { - @Override - public boolean accept(Object o) { - return true; - } - } - - private static class NeverAcceptFilter implements Filter { - @Override - public boolean accept(Object o) { - return false; - } - } - - private static class AlwaysAcceptFilterStack extends FilterStack { - public AlwaysAcceptFilterStack(Filter f) { + public AlwaysAcceptFilterStack(Predicate f) { super(f); } @@ -524,16 +410,16 @@ public boolean acceptAdditional(Object o) { @Test public void testFilterStack_01() { - Filter filter = new AlwaysAcceptFilter(); + Predicate filter = x -> true; FilterStack filterStack = new AlwaysAcceptFilterStack(filter); - assertTrue(filterStack.accept(new Object())); + assertTrue(filterStack.test(new Object())); } @Test public void testFilterStack_02() { - Filter filter = new NeverAcceptFilter(); + Predicate filter = x -> false; FilterStack filterStack = new AlwaysAcceptFilterStack(filter); - assertFalse(filterStack.accept(new Object())); + assertFalse(filterStack.test(new Object())); } } diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java index 7ac93516ea3..84bb8588ac3 100644 --- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java +++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java @@ -24,10 +24,8 @@ import java.util.Arrays ; import java.util.Collections ; import java.util.List ; - import javax.servlet.http.HttpServletRequest ; -import org.apache.jena.atlas.iterator.Filter ; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.query.Query ; @@ -76,17 +74,9 @@ private static List toStrList(String[] array) private static List removeEmptyValues(List list) { - return Iter.iter(list).filter(acceptNonEmpty).toList() ; + return Iter.iter(list).filter(item -> item != null && item.length() != 0).toList() ; } - private static Filter acceptNonEmpty = new Filter(){ - @Override - public boolean accept(String item) - { - return item != null && item.length() != 0 ; - } - } ; - protected static int countParamOccurences(HttpServletRequest request, String param) { String[] x = request.getParameterValues(param) ; diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java index 4f5d5c95c24..2a19d036835 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java @@ -24,10 +24,10 @@ import java.util.Arrays ; import java.util.Collections ; import java.util.List ; +import java.util.function.Predicate; import javax.servlet.http.HttpServletRequest ; -import org.apache.jena.atlas.iterator.Filter ; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.query.Query ; @@ -79,13 +79,7 @@ private static List removeEmptyValues(List list) return Iter.iter(list).filter(acceptNonEmpty).toList() ; } - private static Filter acceptNonEmpty = new Filter(){ - @Override - public boolean accept(String item) - { - return item != null && item.length() != 0 ; - } - } ; + private static Predicate acceptNonEmpty = item -> item != null && item.length() != 0; protected static int countParamOccurences(HttpServletRequest request, String param) { diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java index 6206f6203b4..6f262a56ad9 100644 --- a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java @@ -18,6 +18,7 @@ package org.apache.jena.permissions.query.rewriter; import java.util.List; +import java.util.function.Function; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -30,7 +31,6 @@ import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.expr.* ; import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.graph.NodeTransform ; public class SecuredFunction extends ExprFunctionN { @@ -103,7 +103,7 @@ public Expr copySubstitute( Binding binding ) } @Override - public Expr applyNodeTransform( NodeTransform transform ) + public Expr applyNodeTransform( Function transform ) { return this; } diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QuadBlock.java b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QuadBlock.java index 78aae0ba9bf..fdc733905b5 100644 --- a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QuadBlock.java +++ b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/QuadBlock.java @@ -22,10 +22,10 @@ import java.util.ArrayList ; import java.util.List ; +import java.util.function.Consumer; import org.apache.jena.atlas.io.IndentedWriter ; import org.apache.jena.atlas.io.PrintUtils ; -import org.apache.jena.atlas.iterator.Action ; import org.apache.jena.graph.Node ; import org.apache.jena.shared.PrefixMapping ; import org.apache.jena.sparql.algebra.op.OpQuadPattern ; @@ -167,10 +167,10 @@ public void output(final IndentedWriter out, SerializationContext sCxt) { final String sep = "\n" ; - final Action strAction = new Action() { + final Consumer strAction = new Consumer() { boolean first = true ; @Override - public void apply(Quad quad) + public void accept(Quad quad) { if ( ! first ) out.print(sep) ; diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDB_QC.java b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDB_QC.java index 9ece0c95508..c35cf6c42ae 100644 --- a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDB_QC.java +++ b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/SDB_QC.java @@ -23,10 +23,8 @@ import java.sql.SQLException; import java.util.List; import java.util.Set; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.jena.atlas.iterator.Transform; import org.apache.jena.query.Query ; import org.apache.jena.query.SortCondition ; import org.apache.jena.sdb.SDB ; @@ -102,7 +100,7 @@ public static List queryOutVars(Query query) // If part query, need all variables. // Project variables - List vars = toList(map(query.getResultVars().iterator(), StringToVar)) ; + List vars = toList(map(query.getResultVars().iterator(), Var::alloc)) ; if ( vars.size() == 0 ) { @@ -114,7 +112,7 @@ public static List queryOutVars(Query query) q2.setQueryPattern(query.getQueryPattern()) ; q2.setQuerySelectType() ; q2.setQueryResultStar(true) ; - vars = toList(map(q2.getResultVars().iterator(), StringToVar)) ; + vars = toList(map(q2.getResultVars().iterator(), Var::alloc)) ; } @@ -146,12 +144,4 @@ public static boolean isOpSQL(Op x) { return ( x instanceof OpSQL ) ; } - - - private static Transform StringToVar = new Transform(){ - @Override - public Var convert(String varName) - { - return Var.alloc(varName) ; - }} ; } diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/TransformSDB.java b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/TransformSDB.java index 608cb6b512f..e2bfda6f33c 100644 --- a/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/TransformSDB.java +++ b/jena-sdb/src/main/java/org/apache/jena/sdb/compiler/TransformSDB.java @@ -113,12 +113,12 @@ public Op transform(OpLeftJoin opJoin, Op left, Op right) // Find optional-on-left Set scopes2 = toSet(filter(scopes.iterator(), ScopeEntry.OptionalFilter)) ; - Set leftOptVars = toSet(map(scopes2.iterator(), ScopeEntry.ToVar)) ; // Vars from left optionals. + Set leftOptVars = toSet(map(scopes2.iterator(), ScopeEntry::getVar)) ; // Vars from left optionals. if ( false ) { Iter iter = Iter.iter(scopes) ; - Set leftOptVars_ = iter.filter(ScopeEntry.OptionalFilter).map(ScopeEntry.ToVar).toSet() ; + Set leftOptVars_ = iter.filter(ScopeEntry.OptionalFilter).map(ScopeEntry::getVar).toSet() ; } // Find optional-on-right (easier - it's all variables) diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeEntry.java b/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeEntry.java index b9b1d78b4d3..0384e850f5b 100644 --- a/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeEntry.java +++ b/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeEntry.java @@ -18,9 +18,9 @@ package org.apache.jena.sdb.core; -import org.apache.jena.atlas.iterator.Action ; -import org.apache.jena.atlas.iterator.Filter ; -import org.apache.jena.atlas.iterator.Transform ; +import java.util.function.Consumer; +import java.util.function.Predicate; + import org.apache.jena.sdb.core.sqlexpr.SqlColumn ; import org.apache.jena.sparql.core.Var ; @@ -30,27 +30,9 @@ public class ScopeEntry SqlColumn column; ScopeStatus status ; - public static Filter OptionalFilter = new Filter() - { - @Override - public boolean accept(ScopeEntry item) - { return item.getStatus() == ScopeStatus.OPTIONAL ; } - } ; - - public static Transform ToVar = new Transform() - { - @Override - public Var convert(ScopeEntry item) - { return item.getVar() ; } - } ; + public static Predicate OptionalFilter = item -> item.getStatus() == ScopeStatus.OPTIONAL; - public static Action SetOpt = new Action() - { - @Override - public void apply(ScopeEntry item) - { item.setStatus(ScopeStatus.OPTIONAL) ; } - } ; - + public static Consumer SetOpt = item -> item.setStatus(ScopeStatus.OPTIONAL) ; public ScopeEntry(Var var, SqlColumn column) { this(var, column, ScopeStatus.FIXED) ; } diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeRename.java b/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeRename.java index bc51291c014..2a4706a03ab 100644 --- a/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeRename.java +++ b/jena-sdb/src/main/java/org/apache/jena/sdb/core/ScopeRename.java @@ -22,8 +22,6 @@ import java.util.HashSet ; import java.util.Map ; import java.util.Set ; - -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.sdb.core.sqlexpr.SqlColumn ; import org.apache.jena.sparql.core.Var ; import org.slf4j.Logger ; @@ -114,23 +112,4 @@ public String toString() { return frame + " " + scope ; } - - private Transform converter = - new Transform(){ - @Override - public ScopeEntry convert(ScopeEntry entry) - { - entry = new ScopeEntry(entry.getVar(), entry.getColumn()) ; - Var var = entry.getVar() ; - SqlColumn col = frame.get(var) ; - if ( col == null ) - { - log.warn("No alias for variable "+var) ; - return entry ; - } - ScopeEntry entry2 = new ScopeEntry(entry.getVar(), entry.getColumn()) ; - entry2.setStatus(entry.getStatus()) ; - //entry.reset(var, col, entry.getStatus()) ; - return entry2 ; - }} ; } diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/core/sqlnode/GenerateSQLVisitor.java b/jena-sdb/src/main/java/org/apache/jena/sdb/core/sqlnode/GenerateSQLVisitor.java index 489ebf8caf6..69b242c757e 100644 --- a/jena-sdb/src/main/java/org/apache/jena/sdb/core/sqlnode/GenerateSQLVisitor.java +++ b/jena-sdb/src/main/java/org/apache/jena/sdb/core/sqlnode/GenerateSQLVisitor.java @@ -20,10 +20,8 @@ import java.util.List ; import java.util.Set ; - import org.apache.jena.atlas.io.IndentedWriter ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.sdb.SDB ; import org.apache.jena.sdb.core.Annotations ; @@ -281,14 +279,9 @@ public SqlJoinInner rewrite(SqlJoinInner join) return join2 ; } - static final Transform colToTable = new Transform() { - @Override - public SqlTable convert(SqlColumn item) { return item.getTable() ; } - } ; - private static Set tables(Set cols) { - return Iter.toSet(Iter.map(cols.iterator(), colToTable)) ; + return Iter.toSet(Iter.map(cols.iterator(), SqlColumn::getTable)) ; } @Override diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/print/ActionPrint.java b/jena-sdb/src/main/java/org/apache/jena/sdb/print/ActionPrint.java index ed1e70f844f..097736a6d75 100644 --- a/jena-sdb/src/main/java/org/apache/jena/sdb/print/ActionPrint.java +++ b/jena-sdb/src/main/java/org/apache/jena/sdb/print/ActionPrint.java @@ -18,11 +18,12 @@ package org.apache.jena.sdb.print; +import java.util.function.Consumer; + import org.apache.jena.atlas.io.IndentedWriter ; import org.apache.jena.atlas.io.Printable ; -import org.apache.jena.atlas.iterator.Action ; -public class ActionPrint implements Action +public class ActionPrint implements Consumer { private boolean first = true ; private IndentedWriter out ; @@ -32,7 +33,7 @@ public class ActionPrint implements Action public ActionPrint(IndentedWriter out) { this(out, " ") ; } @Override - public void apply(Printable item) + public void accept(Printable item) { if ( ! first && sep != null ) out.print(sep) ; diff --git a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStoreDesc.java b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStoreDesc.java index 751e59737e9..9648f6f3cce 100644 --- a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStoreDesc.java +++ b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStoreDesc.java @@ -21,10 +21,8 @@ import java.util.ArrayList ; import java.util.Collection ; import java.util.List ; - import org.junit.runners.Parameterized.Parameters ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.sdb.StoreDesc ; import org.apache.jena.sdb.test.SDBTestSetup ; import org.apache.jena.sdb.util.Pair ; @@ -32,13 +30,6 @@ //@RunWith(Parameterized.class) public abstract class ParamAllStoreDesc { - // Make into Object[]{String,Store} lists just for JUnit. - static Transform, Object[]> fix = new Transform, Object[]>() - { - @Override - public Object[] convert(Pair item) - { return new Object[]{item.car(), item.cdr()} ; } - } ; // Build once and return the same for parametrized types each time. // Connections are slow to create. @@ -48,7 +39,7 @@ public Object[] convert(Pair item) List> x = new ArrayList>() ; x.addAll(StoreList.storeDesc(SDBTestSetup.storeList)) ; x.addAll(StoreList.storeDesc(SDBTestSetup.storeListSimple)) ; - data = Iter.iter(x).map(fix).toList() ; + data = Iter.iter(x).map(p -> new Object[]{p.car(), p.cdr()}).toList() ; } // ---- diff --git a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStores.java b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStores.java index 46bb959d7a2..4e0a709d6e5 100644 --- a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStores.java +++ b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/ParamAllStores.java @@ -21,10 +21,8 @@ import java.util.ArrayList ; import java.util.Collection ; import java.util.List ; - import org.junit.runners.Parameterized.Parameters ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.sdb.Store ; import org.apache.jena.sdb.StoreDesc ; import org.apache.jena.sdb.test.SDBTestSetup ; @@ -33,13 +31,6 @@ //@RunWith(Parameterized.class) public abstract class ParamAllStores { - // Make into Object[]{String,Store} lists just for JUnit. - static Transform, Object[]> fix = new Transform, Object[]>() - { - @Override - public Object[] convert(Pair item) - { return new Object[]{item.car(), item.cdr()} ; } - } ; // Build once and return the same for parametrized types each time. // Connections are slow to create. @@ -49,7 +40,7 @@ public Object[] convert(Pair item) List> x = new ArrayList>() ; x.addAll(StoreList.stores(SDBTestSetup.storeList)) ; x.addAll(StoreList.stores(SDBTestSetup.storeListSimple)) ; - data = Iter.iter(x).map(fix).toList() ; + data = Iter.iter(x).map(p -> new Object[]{p.car(), p.cdr()}).toList() ; } // ---- diff --git a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/StoreList.java b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/StoreList.java index 87396898189..af5f6c852e6 100644 --- a/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/StoreList.java +++ b/jena-sdb/src/test/java/org/apache/jena/sdb/test/junit/StoreList.java @@ -22,9 +22,9 @@ import java.util.ArrayList ; import java.util.List ; +import java.util.function.Function; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.query.* ; import org.apache.jena.rdf.model.Model ; import org.apache.jena.rdf.model.Property ; @@ -57,24 +57,9 @@ public class StoreList "}") ; // Not Java's finest hour ... - static Transform, Pair> t1 = new Transform, Pair>() - { - @Override - public Pair convert(Pair pair) - { - return new Pair(pair.car(), StoreDesc.read(pair.cdr())) ; - } - } ; + static Function, Pair> t1 = p -> new Pair(p.car(), StoreDesc.read(p.cdr())); - static Transform, Pair> t2 = new Transform, Pair>() - { - @Override - public Pair convert(Pair pair) - { - Store store = testStore(pair.cdr()) ; - return new Pair(pair.car(), store) ; - } - } ; + static Function, Pair> t2 = p -> new Pair(p.car(), testStore(p.cdr())); public static Store testStore(StoreDesc desc) { diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialDocProducerTriples.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialDocProducerTriples.java index 5445aebb9bf..e3f0b738063 100644 --- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialDocProducerTriples.java +++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialDocProducerTriples.java @@ -18,13 +18,7 @@ package org.apache.jena.query.spatial; -import java.util.List; - -import org.apache.jena.atlas.iterator.Iter; -import org.apache.jena.atlas.iterator.Transform; import org.apache.jena.graph.Node ; -import org.apache.jena.graph.Triple ; -import org.apache.jena.sparql.core.Quad ; import org.apache.jena.sparql.core.QuadAction ; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -62,17 +56,4 @@ public void change(QuadAction qaction, Node g, Node s, Node p, Node o) { return; context.index(g, s, p, o); } - - static Transform QuadsToTriples = new Transform() { - @Override - public Triple convert(Quad item) { - return item.asTriple(); - } - - }; - - static private List quadsToTriples(List quads) { - return Iter.map(quads, QuadsToTriples); - } - } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrCache.java b/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrCache.java index ac9e67f7be0..4b884e8d079 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrCache.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrCache.java @@ -19,8 +19,8 @@ package org.apache.jena.tdb.base.block; import java.util.Iterator ; +import java.util.function.BiConsumer; -import org.apache.jena.atlas.lib.ActionKeyValue ; import org.apache.jena.atlas.lib.Cache ; import org.apache.jena.atlas.lib.CacheFactory ; import org.slf4j.Logger ; @@ -67,9 +67,9 @@ private BlockMgrCache(int readSlots, int writeSlots, final BlockMgr blockMgr) else { writeCache = CacheFactory.createCache(writeSlots) ; - writeCache.setDropHandler(new ActionKeyValue(){ + writeCache.setDropHandler(new BiConsumer(){ @Override - public void apply(Long id, Block block) + public void accept(Long id, Block block) { // We're inside a synchronized operation at this point. log("Cache spill: write block: %d", id) ; diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/index/bplustree/BPlusTreeRewriter.java b/jena-tdb/src/main/java/org/apache/jena/tdb/index/bplustree/BPlusTreeRewriter.java index a6c01ff5ecd..3f29ae3f695 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/index/bplustree/BPlusTreeRewriter.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/index/bplustree/BPlusTreeRewriter.java @@ -23,10 +23,10 @@ import static org.apache.jena.tdb.index.bplustree.BPlusTreeRewriterUtils.summarizeDataBlocks ; import java.util.Iterator ; +import java.util.function.Function; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.iterator.IteratorWithBuffer ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Pair ; import org.apache.jena.tdb.base.block.BlockMgr ; import org.apache.jena.tdb.base.buffer.PtrBuffer ; @@ -141,17 +141,13 @@ private static Iterator> writePackedDataBlocks(Iterator iter = new RecordBufferPageLinker(new RecordBufferPagePacker(records, mgr)) ; - Transform> transform = new Transform>() - { - @Override - public Pair convert(RecordBufferPage rbp) + Function> transform = rbp -> { mgr.put(rbp) ; Record r = rbp.getRecordBuffer().getHigh() ; r = bpt.getRecordFactory().createKeyOnly(r) ; return new Pair<>(rbp.getId(), r) ; - } - } ; + }; // Write and convert to split pairs. Iterator> iter2 = Iter.map(iter, transform) ; diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/lib/NodeLib.java b/jena-tdb/src/main/java/org/apache/jena/tdb/lib/NodeLib.java index 3d1c8f7303d..e9cf3e9a0a1 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/lib/NodeLib.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/lib/NodeLib.java @@ -27,7 +27,6 @@ import java.util.Iterator ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Bytes ; import org.apache.jena.atlas.lib.Pool ; import org.apache.jena.atlas.lib.PoolBase ; @@ -222,12 +221,6 @@ public static String format(String sep, Node[] nodes) public static Iterator nodes(final NodeTable nodeTable, Iterator iter) { - return Iter.map(iter, new Transform(){ - @Override - public Node convert(NodeId item) - { - return nodeTable.getNodeForNodeId(item) ; - } - }) ; + return Iter.map(iter, nodeTable::getNodeForNodeId) ; } } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/lib/TupleLib.java b/jena-tdb/src/main/java/org/apache/jena/tdb/lib/TupleLib.java index ff9687e0052..1925c871b6f 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/lib/TupleLib.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/lib/TupleLib.java @@ -21,9 +21,7 @@ import static org.apache.jena.tdb.sys.SystemTDB.SizeOfLong ; import java.util.Iterator; - import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Bytes ; import org.apache.jena.atlas.lib.ColumnMap ; import org.apache.jena.atlas.lib.InternalErrorException ; @@ -45,47 +43,23 @@ public class TupleLib { public static Iterator> convertToNodes(final NodeTable nodeTable, Iterator> iter) { - Transform, Tuple> action = new Transform, Tuple>(){ - @Override - public Tuple convert(Tuple item) - { - return tupleNodes(nodeTable, item) ; - }} ; - return Iter.map(iter, action) ; + return Iter.map(iter, item -> tupleNodes(nodeTable, item)) ; } public static Iterator> convertToNodeId(final NodeTable nodeTable, Iterator> iter) { - Transform, Tuple> action = new Transform, Tuple>(){ - @Override - public Tuple convert(Tuple item) - { - return tupleNodeIds(nodeTable, item) ; - }} ; - return Iter.map(iter, action) ; + return Iter.map(iter, item -> tupleNodeIds(nodeTable, item)) ; } //Leave - bypasses extract step in Tuple -> Tuple -> Triple public static Iterator convertToTriples(final NodeTable nodeTable, Iterator> iter) { - Transform, Triple> action = new Transform, Triple>(){ - @Override - public Triple convert(Tuple item) - { - return triple(nodeTable, item) ; - }} ; - return Iter.map(iter, action) ; + return Iter.map(iter, item -> triple(nodeTable, item)) ; } public static Iterator convertToQuads(final NodeTable nodeTable, Iterator> iter) { - Transform, Quad> action = new Transform, Quad>(){ - @Override - public Quad convert(Tuple item) - { - return quad(nodeTable, item) ; - }} ; - return Iter.map(iter, action) ; + return Iter.map(iter, item -> quad(nodeTable, item)) ; } public static Tuple tupleNodes(NodeTable nodeTable, Tuple ids) diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/OpExecutorTDB1.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/OpExecutorTDB1.java index e1ab89f660d..77cfbfa760d 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/OpExecutorTDB1.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/OpExecutorTDB1.java @@ -18,8 +18,9 @@ package org.apache.jena.tdb.solver; -import org.apache.jena.atlas.iterator.Filter ; -import org.apache.jena.atlas.lib.Tuple ; +import java.util.function.Predicate; + +import org.apache.jena.atlas.lib.Tuple; import org.apache.jena.atlas.logging.Log ; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Node ; @@ -44,7 +45,7 @@ import org.apache.jena.sparql.mgt.Explain ; import org.apache.jena.tdb.store.DatasetGraphTDB ; import org.apache.jena.tdb.store.GraphTDB ; -import org.apache.jena.tdb.store.NodeId ; +import org.apache.jena.tdb.store.NodeId; import org.slf4j.Logger ; import org.slf4j.LoggerFactory ; @@ -345,7 +346,7 @@ private static boolean isDefaultGraphStorage(Node gn) protected QueryIterator execute(OpDatasetNames dsNames, QueryIterator input) { DatasetGraphTDB ds = (DatasetGraphTDB)execCxt.getDataset() ; - Filter> filter = QC2.getFilter(execCxt.getContext()) ; + Predicate> filter = QC2.getFilter(execCxt.getContext()) ; Node gn = dsNames.getGraphNode() ; if ( Var.isVar(gn) ) return SolverLib.graphNames(ds, dsNames.getGraphNode(), input, filter, execCxt) ; @@ -368,7 +369,7 @@ public OpExecutor create(ExecutionContext execCxt) /** An op executor that simply executes a BGP or QuadPattern without any reordering */ private static class OpExecutorPlainTDB extends OpExecutor { - Filter> filter = null ; + Predicate> filter = null ; public OpExecutorPlainTDB(ExecutionContext execCxt) { diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QC2.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QC2.java index 26200c37d5c..331ac59f2d7 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QC2.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/QC2.java @@ -18,7 +18,8 @@ package org.apache.jena.tdb.solver; -import org.apache.jena.atlas.iterator.Filter ; +import java.util.function.Predicate; + import org.apache.jena.atlas.lib.Tuple ; import org.apache.jena.sparql.util.Context ; import org.apache.jena.tdb.TDBException ; @@ -27,13 +28,13 @@ public class QC2 { - public static Filter> getFilter(Context context) + public static Predicate> getFilter(Context context) { Object x = context.get(SystemTDB.symTupleFilter) ; try { @SuppressWarnings("unchecked") - Filter> f = (Filter>)x ; + Predicate> f = (Predicate>)x ; return f ; } catch (ClassCastException ex) { @@ -41,7 +42,7 @@ public static Filter> getFilter(Context context) } } - public static void setFilter(Context context, Filter> filter) + public static void setFilter(Context context, Predicate> filter) { context.set(SystemTDB.symTupleFilter, filter) ; } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java index b92bfc13549..cf813e10b74 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/SolverLib.java @@ -21,6 +21,9 @@ import static org.apache.jena.tdb.lib.Lib2.printAbbrev ; import java.util.* ; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Predicate; import org.apache.jena.atlas.iterator.* ; import org.apache.jena.atlas.lib.Tuple ; @@ -54,7 +57,7 @@ public class SolverLib /** Non-reordering execution of a basic graph pattern, given a iterator of bindings as input */ public static QueryIterator execute(GraphTDB graph, BasicPattern pattern, - QueryIterator input, Filter> filter, + QueryIterator input, Predicate> filter, ExecutionContext execCxt) { // Maybe default graph or named graph. @@ -67,7 +70,7 @@ public static QueryIterator execute(GraphTDB graph, BasicPattern pattern, * GraphNode is null for execution over the real default graph. */ public static QueryIterator execute(DatasetGraphTDB ds, Node graphNode, BasicPattern pattern, - QueryIterator input, Filter> filter, + QueryIterator input, Predicate> filter, ExecutionContext execCxt) { NodeTupleTable ntt = ds.chooseNodeTupleTable(graphNode) ; @@ -81,14 +84,14 @@ public static Iterator convertToIds(Iterator iterBinding * (in convToBinding(BindingNodeId, NodeTable) */ public static Iterator convertToNodes(Iterator iterBindingIds, NodeTable nodeTable) - { return Iter.map(iterBindingIds, convToBinding(nodeTable)) ; } + { return Iter.map(iterBindingIds, bindingNodeIds -> convToBinding(bindingNodeIds, nodeTable)) ; } // The worker. Callers choose the NodeTupleTable. // graphNode may be Node.ANY, meaning we should make triples unique. // graphNode may be null, meaning default graph private static QueryIterator execute(NodeTupleTable nodeTupleTable, Node graphNode, BasicPattern pattern, - QueryIterator input, Filter> filter, + QueryIterator input, Predicate> filter, ExecutionContext execCxt) { if ( Quad.isUnionGraph(graphNode) ) @@ -202,21 +205,11 @@ public T next() public static Iterator solve(NodeTupleTable nodeTupleTable, Tuple tuple, boolean anyGraph, - Iterator chain, Filter> filter, + Iterator chain, Predicate> filter, ExecutionContext execCxt) { return new StageMatchTuple(nodeTupleTable, chain, tuple, anyGraph, filter, execCxt) ; } - - // Transform : BindingNodeId ==> Binding - private static Transform convToBinding(final NodeTable nodeTable) { - return new Transform() { - @Override - public Binding convert(BindingNodeId bindingNodeIds) { - return convToBinding(bindingNodeIds, nodeTable) ; - } - } ; - } public static Binding convToBinding(BindingNodeId bindingNodeIds, NodeTable nodeTable) { if ( true ) @@ -235,15 +228,9 @@ public static Binding convToBinding(BindingNodeId bindingNodeIds, NodeTable node } // Transform : Binding ==> BindingNodeId - public static Transform convFromBinding(final NodeTable nodeTable) + public static Function convFromBinding(final NodeTable nodeTable) { - return new Transform() - { - @Override - public BindingNodeId convert(Binding binding) { - return SolverLib.convert(binding, nodeTable) ; - } - } ; + return binding -> SolverLib.convert(binding, nodeTable); } /** Binding ==> BindingNodeId, given a NodeTable */ @@ -276,7 +263,7 @@ public static BindingNodeId convert(Binding binding, NodeTable nodeTable) /** Find whether a specific graph name is in the quads table. */ public static QueryIterator testForGraphName(DatasetGraphTDB ds, Node graphNode, QueryIterator input, - Filter> filter, ExecutionContext execCxt) { + Predicate> filter, ExecutionContext execCxt) { NodeId nid = TDBInternal.getNodeId(ds, graphNode) ; boolean exists = !NodeId.isDoesNotExist(nid) ; if ( exists ) { @@ -302,7 +289,7 @@ public static QueryIterator testForGraphName(DatasetGraphTDB ds, Node graphNode, /** Find all the graph names in the quads table. */ public static QueryIterator graphNames(DatasetGraphTDB ds, Node graphNode, QueryIterator input, - Filter> filter, ExecutionContext execCxt) { + Predicate> filter, ExecutionContext execCxt) { List killList = new ArrayList<>() ; Iterator> iter1 = ds.getQuadTable().getNodeTupleTable().find(NodeId.NodeIdAny, NodeId.NodeIdAny, NodeId.NodeIdAny, NodeId.NodeIdAny) ; @@ -319,14 +306,7 @@ public static QueryIterator graphNames(DatasetGraphTDB ds, Node graphNode, Query Iterator iter4 = NodeLib.nodes(ds.getQuadTable().getNodeTupleTable().getNodeTable(), iter3) ; final Var var = Var.alloc(graphNode) ; - Transform bindGraphName = new Transform() { - @Override - public Binding convert(Node node) { - return BindingFactory.binding(var, node) ; - } - } ; - - Iterator iterBinding = Iter.map(iter4, bindGraphName) ; + Iterator iterBinding = Iter.map(iter4, node -> BindingFactory.binding(var, node)) ; // Not abortable. return new QueryIterTDB(iterBinding, killList, input, execCxt) ; } @@ -364,10 +344,6 @@ public static Iterator> unionGraph(NodeTupleTable ntt) } // -- Mutating "transform in place" - private static Action> quadsToAnyTriples = new Action>(){ - @Override - public void apply(Tuple item) - { item.tuple()[0] = NodeId.NodeIdAny ; } - } ; + private static Consumer> quadsToAnyTriples = item -> item.tuple()[0] = NodeId.NodeIdAny ; } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageGeneratorDirectTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageGeneratorDirectTDB.java index bb76f7c61f4..78bd7917f48 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageGeneratorDirectTDB.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageGeneratorDirectTDB.java @@ -18,15 +18,16 @@ package org.apache.jena.tdb.solver; -import org.apache.jena.atlas.iterator.Filter ; -import org.apache.jena.atlas.lib.Tuple ; +import java.util.function.Predicate; + +import org.apache.jena.atlas.lib.Tuple; import org.apache.jena.graph.Graph ; import org.apache.jena.sparql.core.BasicPattern ; import org.apache.jena.sparql.engine.ExecutionContext ; import org.apache.jena.sparql.engine.QueryIterator ; import org.apache.jena.sparql.engine.main.StageGenerator ; import org.apache.jena.tdb.store.GraphTDB ; -import org.apache.jena.tdb.store.NodeId ; +import org.apache.jena.tdb.store.NodeId; /** Execute TDB requests directly -- no reordering * Using OpExecutor is preferred. @@ -51,7 +52,7 @@ public QueryIterator execute(BasicPattern pattern, QueryIterator input, Executio // Not us - bounce up the StageGenerator chain return above.execute(pattern, input, execCxt) ; GraphTDB graph = (GraphTDB)g ; - Filter> filter = QC2.getFilter(execCxt.getContext()) ; + Predicate> filter = QC2.getFilter(execCxt.getContext()) ; return SolverLib.execute(graph, pattern, input, filter, execCxt) ; } } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageMatchTuple.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageMatchTuple.java index 77cdbdda0b8..398502e4a9f 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageMatchTuple.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/StageMatchTuple.java @@ -21,6 +21,9 @@ import java.util.Iterator; import java.util.List; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Predicate; import org.apache.jena.atlas.iterator.* ; import org.apache.jena.atlas.lib.Tuple ; @@ -38,11 +41,11 @@ public class StageMatchTuple extends RepeatApplyIterator private final ExecutionContext execCxt ; private boolean anyGraphs ; - private Filter> filter ; + private Predicate> filter ; public StageMatchTuple(NodeTupleTable nodeTupleTable, Iterator input, Tuple tuple, boolean anyGraphs, - Filter> filter, + Predicate> filter, ExecutionContext execCxt) { super(input) ; @@ -117,10 +120,7 @@ protected Iterator makeNextStage(final BindingNodeId input) } // Map Tuple to BindingNodeId - Transform, BindingNodeId> binder = new Transform, BindingNodeId>() - { - @Override - public BindingNodeId convert(Tuple tuple) + Function, BindingNodeId> binder = tuple -> { BindingNodeId output = new BindingNodeId(input) ; for ( int i = 0 ; i < var.length ; i++ ) @@ -134,27 +134,11 @@ public BindingNodeId convert(Tuple tuple) output.put(v, id) ; } return output ; - } } ; return Iter.iter(iterMatches).map(binder).removeNulls() ; } - - // -- Copying - private static Transform,Tuple> projectToTriples = new Transform,Tuple>(){ - @Override - public Tuple convert(Tuple item) - { - // Zap graph node id. - Tuple t2 = Tuple.createTuple(NodeId.NodeIdAny, // Can't be null - gets bound to a daft variable. - item.get(1), - item.get(2), - item.get(3)) ; - return t2 ; - } } ; - - private static Iterator> print(Iterator> iter) { if ( ! iter.hasNext() ) @@ -202,9 +186,5 @@ private static NodeId idFor(NodeTable nodeTable, BindingNodeId input, Node node) } // -- Mutating "transform in place" - private static Action> quadsToAnyTriples = new Action>(){ - @Override - public void apply(Tuple item) - { item.tuple()[0] = NodeId.NodeIdAny ; } - } ; + private static Consumer> quadsToAnyTriples = item -> item.tuple()[0] = NodeId.NodeIdAny ; } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/stats/StatsCollectorBase.java b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/stats/StatsCollectorBase.java index 620b34a736b..72f0d973fae 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/solver/stats/StatsCollectorBase.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/solver/stats/StatsCollectorBase.java @@ -22,7 +22,6 @@ import java.util.HashMap ; import java.util.Map ; -import org.apache.jena.atlas.lib.MapUtils ; import org.apache.jena.graph.Node ; /** Statistics collector, general purpose */ @@ -41,9 +40,9 @@ protected StatsCollectorBase(T typeTrigger) public void record(T g, T s, T p, T o) { count++ ; - MapUtils.increment(predicates, p) ; + predicates.put(p, predicates.getOrDefault(p, 0) + 1); if ( typeTrigger != null && typeTrigger.equals(p) ) - MapUtils.increment(types, o) ; + types.put(o, types.getOrDefault(o, 0) + 1); } protected abstract Map convert(Map map) ; diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java index c577861959a..55dfe53fa7e 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/DatasetGraphTDB.java @@ -20,9 +20,7 @@ import java.util.Iterator ; - import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Closeable ; import org.apache.jena.atlas.lib.Sync ; import org.apache.jena.atlas.lib.Tuple ; @@ -171,21 +169,12 @@ protected Graph _createNamedGraph(Node graphNode) public ReorderTransformation getReorderTransform() { return transform ; } public DatasetPrefixesTDB getPrefixes() { return prefixes ; } - - static private Transform, NodeId> project0 = new Transform, NodeId>() - { - @Override - public NodeId convert(Tuple item) - { - return item.get(0) ; - } - } ; @Override public Iterator listGraphNodes() { Iterator> x = quadTable.getNodeTupleTable().findAll() ; - Iterator z = Iter.iter(x).map(project0).distinct() ; + Iterator z = Iter.iter(x).map(t -> t.get(0)).distinct() ; return NodeLib.nodes(quadTable.getNodeTupleTable().getNodeTable(), z) ; } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/GraphTDB.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/GraphTDB.java index 17d2e25d012..93fbf6940fb 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/GraphTDB.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/GraphTDB.java @@ -19,9 +19,9 @@ package org.apache.jena.tdb.store ; import java.util.Iterator ; +import java.util.function.Function; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Closeable ; import org.apache.jena.atlas.lib.Sync ; import org.apache.jena.atlas.lib.Tuple ; @@ -166,18 +166,11 @@ protected final int graphBaseSize() { return (int)Iter.count(iter) ; } - private static Transform, Tuple> project4TupleTo3Tuple = new Transform, Tuple>() { - @Override - public Tuple convert(Tuple item) { - if ( item.size() != 4 ) - throw new TDBException( - "Expected a Tuple of 4, got: " - + item) ; - return Tuple.createTuple(item.get(1), - item.get(2), - item.get(3)) ; - } - } ; + private static Function, Tuple> project4TupleTo3Tuple = item -> { + if (item.size() != 4) + throw new TDBException("Expected a Tuple of 4, got: " + item); + return Tuple.createTuple(item.get(1), item.get(2), item.get(3)); + }; // Convert from Iterator to Iterator static class ProjectQuadsToTriples implements Iterator { diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/QuadTable.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/QuadTable.java index 894b49ec299..313d8d54281 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/QuadTable.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/QuadTable.java @@ -20,9 +20,7 @@ import java.util.Iterator ; - import org.apache.jena.atlas.iterator.NullIterator ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Tuple ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -89,13 +87,6 @@ public Iterator find(Node g, Node s, Node p, Node o) Iterator iter2 = TupleLib.convertToQuads(table.getNodeTable(), iter) ; return iter2 ; } - - private static Transform, Quad> action = new Transform, Quad>(){ - @Override - public Quad convert(Tuple item) - { - return new Quad(item.get(0), item.get(1), item.get(2), item.get(3)) ; - }} ; /** Clear - does not clear the associated node tuple table */ public void clearQuads() diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/TripleTable.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/TripleTable.java index e79f7daecfa..5dfc17ea3b0 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/TripleTable.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/TripleTable.java @@ -20,9 +20,7 @@ import java.util.Iterator ; - import org.apache.jena.atlas.iterator.NullIterator ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Tuple ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -79,13 +77,6 @@ public Iterator find(Node s, Node p, Node o) return iter2 ; } - private static Transform, Triple> action = new Transform, Triple>(){ - @Override - public Triple convert(Tuple item) - { - return new Triple(item.get(0), item.get(1), item.get(2)) ; - }} ; - /** Clear - does not clear the associated node tuple table */ public void clearTriples() { table.clear() ; } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/nodetable/NodeTableNative.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/nodetable/NodeTableNative.java index e5796ca679d..51ceee167b7 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/nodetable/NodeTableNative.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/nodetable/NodeTableNative.java @@ -22,9 +22,9 @@ import java.nio.ByteBuffer ; import java.util.Iterator ; +import java.util.function.Function; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Pair ; import org.apache.jena.graph.Node ; import org.apache.jena.tdb.TDBException ; @@ -214,37 +214,16 @@ public NodeId allocOffset() @Override public Iterator> all() { return all2() ; } - private Iterator> all1() - - { - // Could be quicker by hoping down the objects files. - Iterator iter = nodeHashToId.iterator() ; - - Transform> transform = new Transform>() { - @Override - public Pair convert(Record item) - { - NodeId id = NodeId.create(item.getValue(), 0) ; - Node n = NodeLib.fetchDecode(id.getId(), getObjects()) ; - return new Pair<>(id, n) ; - }}; - return Iter.map(iter, transform) ; - } - private Iterator> all2() { Iterator> objs = objects.all() ; - Transform, Pair> transform = new Transform, Pair>() { - @Override - public Pair convert(Pair item) - { - NodeId id = NodeId.create(item.car().longValue()) ; - ByteBuffer bb = item.cdr(); - Node n = NodeLib.decode(bb) ; - return new Pair<>(id, n) ; - } - }; + Function, Pair> transform = item -> { + NodeId id = NodeId.create(item.car().longValue()); + ByteBuffer bb = item.cdr(); + Node n = NodeLib.decode(bb); + return new Pair<>(id, n); + }; return Iter.map(objs, transform) ; } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/tupletable/TupleIndexRecord.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/tupletable/TupleIndexRecord.java index d4079b00425..ead540e2c01 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/tupletable/TupleIndexRecord.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/tupletable/TupleIndexRecord.java @@ -22,6 +22,7 @@ import static org.apache.jena.tdb.sys.SystemTDB.SizeOfNodeId ; import java.util.Iterator; +import java.util.function.Predicate; import org.apache.jena.atlas.iterator.* ; import org.apache.jena.atlas.lib.Bytes ; @@ -166,7 +167,7 @@ private Iterator> findWorker(Tuple patternNaturalOrder, bo iter = index.iterator(minRec, maxRec) ; } - Iterator> tuples = Iter.map(iter, transformToTuple) ; + Iterator> tuples = Iter.map(iter, item -> TupleLib.tuple(item, colMap)) ; if ( leadingIdx < numSlots-1 ) { @@ -185,25 +186,16 @@ private Iterator> findWorker(Tuple patternNaturalOrder, bo public Iterator> all() { Iterator iter = index.iterator() ; - return Iter.map(iter, transformToTuple) ; + return Iter.map(iter, item -> TupleLib.tuple(item, colMap)) ; } - private final Transform> transformToTuple = new Transform>() - { - @Override - public final Tuple convert(Record item) - { - return TupleLib.tuple(item, colMap) ; - } - } ; - private Iterator> scan(Iterator> iter, final Tuple pattern) { - Filter> filter = new Filter>() + Predicate> filter = new Predicate>() { @Override - public boolean accept(Tuple item) + public boolean test(Tuple item) { // Check on pattern and item (both in natural order) for ( int i = 0 ; i < tupleLength ; i++ ) diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/base/record/RecordLib.java b/jena-tdb/src/test/java/org/apache/jena/tdb/base/record/RecordLib.java index 79053adb5f4..9d721567d4c 100644 --- a/jena-tdb/src/test/java/org/apache/jena/tdb/base/record/RecordLib.java +++ b/jena-tdb/src/test/java/org/apache/jena/tdb/base/record/RecordLib.java @@ -24,7 +24,6 @@ import java.util.List; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.Transform ; import org.apache.jena.atlas.lib.Bytes ; import org.apache.jena.tdb.base.record.Record ; import org.apache.jena.tdb.base.record.RecordFactory ; @@ -83,13 +82,7 @@ public static int recordToInt(Record key) public static List toIntList(Iterator iter) { - return Iter.toList(Iter.map(iter, new Transform(){ - @Override - public Integer convert(Record item) - { - return recordToInt(item) ; - }} - )) ; + return Iter.toList(Iter.map(iter, item -> recordToInt(item))) ; } public static Record r(int v) diff --git a/jena-tdb/src/test/java/org/apache/jena/tdb/store/TestQuadFilter.java b/jena-tdb/src/test/java/org/apache/jena/tdb/store/TestQuadFilter.java index ee2ff43acac..9752dac12ad 100644 --- a/jena-tdb/src/test/java/org/apache/jena/tdb/store/TestQuadFilter.java +++ b/jena-tdb/src/test/java/org/apache/jena/tdb/store/TestQuadFilter.java @@ -18,7 +18,8 @@ package org.apache.jena.tdb.store; -import org.apache.jena.atlas.iterator.Filter ; +import java.util.function.Predicate; + import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.atlas.lib.Tuple ; import org.apache.jena.graph.NodeFactory ; @@ -61,23 +62,12 @@ private static Dataset setup() } /** Create a filter to exclude the graph http://example/g2 */ - private static Filter> createFilter(Dataset ds) + private static Predicate> createFilter(Dataset ds) { DatasetGraphTDB dsg = (DatasetGraphTDB)(ds.asDatasetGraph()) ; final NodeTable nodeTable = dsg.getQuadTable().getNodeTupleTable().getNodeTable() ; final NodeId target = nodeTable.getNodeIdForNode(NodeFactory.createURI(graphToHide)) ; - Filter> filter = new Filter>() { - @Override - public boolean accept(Tuple item) - { - // Reverse the lookup as a demo - //Node n = nodeTable.getNodeForNodeId(target) ; - //System.err.println(item) ; - if ( item.size() == 4 && item.get(0).equals(target) ) - return false ; - return true ; - } } ; - return filter ; + return item -> !( item.size() == 4 && item.get(0).equals(target) ); } @Test public void quad_filter_1() { test("SELECT * { GRAPH ?g { ?s ?p ?o } }", 1, 2) ; } @@ -86,7 +76,7 @@ public boolean accept(Tuple item) private void test(String qs, int withFilter, int withoutFilter) { - Filter> filter = createFilter(ds) ; + Predicate> filter = createFilter(ds) ; // private static void example(Dataset ds, Filter> filter) // { From c38abf69cf65bbf1ead04b04b8efb3da9fa445ee Mon Sep 17 00:00:00 2001 From: ajs6f Date: Mon, 4 May 2015 15:15:23 -0400 Subject: [PATCH 2/4] Further simplification in jena-base --- .../engine/iterator/QueryIterGroup.java | 22 +- .../sparql/engine/iterator/QueryIterTopN.java | 8 +- .../org/apache/jena/sparql/util/Context.java | 2 +- .../org/apache/jena/atlas/iterator/Iter.java | 22 +- .../jena/atlas/iterator/IteratorArray.java | 3 +- .../org/apache/jena/atlas/lib/Allocator.java | 28 --- .../org/apache/jena/atlas/lib/Callback.java | 5 +- .../java/org/apache/jena/atlas/lib/Cell.java | 99 -------- .../jena/atlas/lib/CollectionUtils.java | 9 +- .../org/apache/jena/atlas/lib/FileOps.java | 18 +- .../org/apache/jena/atlas/lib/ListUtils.java | 65 ++---- .../org/apache/jena/atlas/lib/MultiMap.java | 146 ------------ .../apache/jena/atlas/lib/MultiMapToList.java | 43 ---- .../apache/jena/atlas/lib/MultiMapToSet.java | 47 ---- .../org/apache/jena/atlas/lib/MultiSet.java | 218 ------------------ .../apache/jena/atlas/lib/PropertyUtils.java | 4 +- .../org/apache/jena/atlas/lib/StrUtils.java | 41 +--- .../java/org/apache/jena/atlas/lib/Tuple.java | 8 +- .../apache/jena/atlas/lib/TupleBuilder.java | 50 ---- .../apache/jena/atlas/lib/cache/Getter.java | 25 -- .../org/apache/jena/atlas/lib/TS_Lib.java | 1 - .../apache/jena/atlas/lib/TestMultiSet.java | 143 ------------ .../impl/PropertyTableHashMapImpl.java | 19 +- .../org/apache/jena/fuseki/FusekiLib.java | 8 +- .../jena/fuseki/servlets/SPARQL_Protocol.java | 4 +- .../org/apache/jena/fuseki/FusekiLib.java | 8 +- .../jena/fuseki/server/DataService.java | 6 +- .../jena/fuseki/servlets/SPARQL_Protocol.java | 2 +- .../jena/tdb/base/block/BlockMgrTracker.java | 31 +-- .../jena/query/text/EntityDefinition.java | 5 +- .../assembler/EntityDefinitionAssembler.java | 19 +- 31 files changed, 112 insertions(+), 997 deletions(-) delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/Allocator.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/Cell.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMap.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/MultiSet.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/TupleBuilder.java delete mode 100644 jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Getter.java delete mode 100644 jena-base/src/test/java/org/apache/jena/atlas/lib/TestMultiSet.java diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java index e483c58e712..2b2e194b9b9 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterGroup.java @@ -25,8 +25,10 @@ import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.iterator.IteratorDelayedInitialization ; -import org.apache.jena.atlas.lib.MultiMap ; import org.apache.jena.atlas.lib.Pair ; +import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap; +import org.apache.jena.ext.com.google.common.collect.HashMultimap; +import org.apache.jena.ext.com.google.common.collect.Multimap; import org.apache.jena.graph.Node ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.core.VarExprList ; @@ -77,12 +79,12 @@ private static Iterator calc(final QueryIterator iter, @Override protected Iterator initializeIterator() { - boolean noAggregators = ( aggregators == null || aggregators.size() == 0 ) ; + boolean noAggregators = ( aggregators == null || aggregators.isEmpty() ) ; - // Phase 1 : assign bindings to buckets by key and pump through the aggregrators. - MultiMap> accumulators = MultiMap.createMapList() ; + // Phase 1 : assign bindings to buckets by key and pump through the aggregators. + Multimap> accumulators = HashMultimap.create() ; - for ( ; iter.hasNext() ; ) + while ( iter.hasNext() ) { Binding b = iter.nextBinding() ; Binding key = genKey(groupVarExpr, b, execCxt) ; @@ -94,9 +96,8 @@ protected Iterator initializeIterator() { continue ; } - Collection> accs = accumulators.get(key) ; // Create if does not exist. - if ( accs == null ) + if ( !accumulators.containsKey(key) ) { for ( ExprAggregator agg : aggregators ) { @@ -104,11 +105,10 @@ protected Iterator initializeIterator() { Var v = agg.getVar() ; accumulators.put(key, Pair.create(v, x)) ; } - accs = accumulators.get(key) ; } // Do the per-accumulator calculation. - for ( Pair pair : accs ) + for ( Pair pair : accumulators.get(key) ) pair.getRight().accumulate(b, execCxt) ; } @@ -153,11 +153,11 @@ protected Iterator initializeIterator() { if ( noAggregators ) // We used placeholder so there are always the key. - return accumulators.keys().iterator() ; + return accumulators.keySet().iterator() ; List results = new ArrayList<>() ; - for ( Binding k : accumulators.keys() ) + for ( Binding k : accumulators.keySet() ) { Collection> accs = accumulators.get(k) ; BindingMap b = BindingFactory.create(k) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTopN.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTopN.java index 266fd1ad35a..f5a39a990dc 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTopN.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterTopN.java @@ -18,6 +18,8 @@ package org.apache.jena.sparql.engine.iterator; +import static java.util.Arrays.asList; + import java.util.Arrays ; import java.util.Comparator ; import java.util.Iterator ; @@ -25,7 +27,6 @@ import java.util.PriorityQueue ; import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.iterator.IteratorArray ; import org.apache.jena.atlas.iterator.IteratorDelayedInitialization ; import org.apache.jena.atlas.lib.ReverseComparator ; import org.apache.jena.query.Query ; @@ -87,7 +88,7 @@ private Iterator sortTopN(final QueryIterator qIter, final Comparator() { @Override protected Iterator initializeIterator() { - for (; qIter.hasNext();) { + while ( qIter.hasNext() ) { Binding binding = qIter.next() ; if ( heap.size() < limit ) add(binding) ; @@ -101,8 +102,7 @@ protected Iterator initializeIterator() { Binding[] y = heap.toArray(new Binding[]{}) ; heap = null ; Arrays.sort(y, comparator) ; - IteratorArray iter = IteratorArray.create(y) ; - return iter ; + return asList(y).iterator() ; } } ; } 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 9107deaba09..f8c8ed91f6f 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 @@ -273,7 +273,7 @@ private void doCallbacks(Symbol symbol) { for ( Callback c : callbacks ) { - c.proc(symbol) ; + c.apply(symbol) ; } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java index fc0a5348c0d..9cf45a77cfb 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java @@ -267,7 +267,7 @@ public static Iterator notFilter(final Iterator stream, fina * stream until the first element not passing the filter) */ public static boolean every(Iterator stream, Predicate filter) { - for (; stream.hasNext();) { + while ( stream.hasNext() ) { T item = stream.next() ; if ( !filter.test(item) ) return false ; @@ -291,7 +291,7 @@ public static boolean every(Iterator stream, Predicate filte * the stream to first element passing the filter) */ public static boolean some(Iterator stream, Predicate filter) { - for (; stream.hasNext();) { + while ( stream.hasNext() ) { T item = stream.next() ; if ( filter.test(item) ) return true ; @@ -420,14 +420,14 @@ public static Iterator distinctAdjacent(Iterator iter) { // } public static Iterator removeNulls(Iterator iter) { - return filter(iter, x -> x != null) ; + return filter(iter, Objects::nonNull) ; } /** Take the first N elements of an iterator - stop early if too few */ public static List take(Iterator iter, int N) { iter = new IteratorN<>(iter, N) ; List x = new ArrayList<>(N) ; - for (; iter.hasNext();) + while ( iter.hasNext() ) x.add(iter.next()) ; return x ; } @@ -611,7 +611,7 @@ public static void print(final PrintStream out, Iterator stream) { /** Send the elements of the iterator to a sink - consumes the iterator */ public static void sendToSink(Iterator iter, Sink sink) { - for (; iter.hasNext();) { + while ( iter.hasNext() ) { T thing = iter.next() ; sink.send(thing) ; } @@ -635,11 +635,11 @@ public static Iter iter(Iter iter) { // { return Iter.iter(Arrays.asList(objects)) ; } public static Iter iterSingleton(T x) { - return Iter.iter(SingletonIterator.create(x)) ; + return iter(SingletonIterator.create(x)) ; } public static Iter iter(Collection collection) { - return Iter.iter(collection.iterator()) ; + return iter(collection.iterator()) ; } public static Iter iter(Iterator iterator) { @@ -667,7 +667,7 @@ public static Iter nullIter() { * debugging */ public static Iterator materialize(Iterator iter) { - return Iter.toList(iter).iterator() ; + return toList(iter).iterator() ; } public static Iter concat(Iter iter1, Iter iter2) { @@ -683,7 +683,7 @@ public static Iterator concat(Iterator iter1, Iterator iter2) { return iter2 ; if ( iter2 == null ) return iter1 ; - return Iter.iter(iter1).append(Iter.iter(iter2)) ; + return iter(iter1).append(iter(iter2)) ; } public static T first(Iterator iter, Predicate filter) { @@ -790,7 +790,7 @@ public boolean some(Predicate filter) { } public Iter removeNulls() { - return filter(x -> x != null) ; + return iter(removeNulls(this)) ; } public Iter map(Function converter) { @@ -823,7 +823,7 @@ public Iter append(Iterator iter) { /** Return an Iter that yields at most the first N items */ public Iter take(int N) { - return Iter.iter(take(iterator, N)) ; + return iter(take(iterator, N)) ; } /** Count the iterator (this is destructive on the iterator) */ diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java index a8cb1b266c1..70a8f26b36e 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java @@ -25,7 +25,8 @@ /** Iterator over a Java base array */ /** - * Prefer {@link Arrays#spliterator(Object[])} or {@link Arrays#stream(Object[])} + * Prefer {@link Arrays#asList(Object...)} with {@link Iterable#iterator()} or + * {@link Arrays#spliterator(Object[])} or {@link Arrays#stream(Object[])} */ @Deprecated public final class IteratorArray implements Iterator diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Allocator.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Allocator.java deleted file mode 100644 index 84005de6c2c..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Allocator.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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.atlas.lib; - -public interface Allocator -{ - /** Allocate a new T, different from others allocated */ - public T create() ; - -// /** Reset the process of allocation - may cause equivalent objects to be created from before the reset */ -// public void reset() ; -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Callback.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Callback.java index d2f04f968ce..647625a9eef 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Callback.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Callback.java @@ -18,7 +18,8 @@ package org.apache.jena.atlas.lib; -public interface Callback +import java.util.function.Function; + +public interface Callback extends Function { - public void proc(T arg) ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cell.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Cell.java deleted file mode 100644 index 6910c0c5028..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Cell.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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.atlas.lib ; - - -/** Key-value slot, with chaining for lookup. */ -public class Cell -{ - private final Cell previous ; - private final K key ; - private final V value ; - - /** Create a slot with no key, value or parent - can be used a slot chain root */ - public Cell() { this(null, null, null); } - - public Cell(K key, V value) { this(key, value, null); } - - private Cell(K key, V value, Cell previous) - { - this.key = key ; - this.value = value ; - this.previous = previous ; - } - - public Cell extend(K key, V value) - { - return new Cell<>(key, value, this) ; - } - - public final V find(K k) - { - // Java, tail recursion, lack thereof. - Cell slot = this ; - - while (slot != null) - { - // Defend against null keys (e.g. the root of a slot chain). - if ( k.equals(slot.key) ) - return slot.value ; -// if ( previous == null ) -// return null ; - slot = slot.previous ; - } - return null ; - } - - /* As it should be ... */ -// public final V find(K k) -// { -// if ( k.equals(key) ) -// return value ; -// if ( previous == null ) -// return null ; -// return previous.find(k) ; -// } - - private static final String sep = ", " ; - private void str(int level, StringBuilder acc) - { - if ( key == null && value == null ) - return ; - - if ( level != 0 ) - acc.append(sep) ; - acc.append("(") ; - acc.append(key.toString()) ; - acc.append("->") ; - acc.append(value.toString()) ; - acc.append(")") ; - if ( previous != null ) - previous.str(level+1, acc) ; - } - - @Override - public String toString() - { - StringBuilder sb = new StringBuilder() ; - sb.append("{ ") ; - str(0, sb) ; - sb.append(" }") ; - return sb.toString() ; - } -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java index 759e543a551..9895df8ed2a 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java @@ -19,16 +19,11 @@ package org.apache.jena.atlas.lib; import java.util.Collection ; -import java.util.Objects; public class CollectionUtils -{ - static public void removeNulls(Collection list) - { - list.removeIf(Objects::isNull); - } - +{ static public boolean disjoint(Collection c1, Collection c2) { return c1.stream().noneMatch(c2::contains); + } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/FileOps.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/FileOps.java index 6862f4a31f6..cf2e6ee8917 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/FileOps.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/FileOps.java @@ -19,11 +19,8 @@ package org.apache.jena.atlas.lib ; import java.io.File ; -import java.io.FileInputStream ; -import java.io.FileOutputStream ; import java.io.IOException ; -import java.nio.channels.FileChannel ; - +import java.nio.file.Files; import org.apache.jena.atlas.AtlasException ; import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.logging.Log ; @@ -83,9 +80,8 @@ public static void clearAll(File d) { if ( ! d.exists() ) return ; - for ( File f : d.listFiles() ) { - if ( ".".equals(f.getName()) || "..".equals(f.getName()) ) - continue ; + for (File f : d.listFiles(f -> !f.getName().equals(".") + && !f.getName().equals(".."))) { if ( f.isDirectory() ) clearAll(f) ; f.delete() ; @@ -215,13 +211,7 @@ public static String fullDirectoryPath(String filename) { /** Copy a file */ public static void copyFile(File source, File dest) { try { - @SuppressWarnings("resource") - FileChannel sourceChannel = new FileInputStream(source).getChannel() ; - @SuppressWarnings("resource") - FileChannel destChannel = new FileOutputStream(dest).getChannel() ; - destChannel.transferFrom(sourceChannel, 0, sourceChannel.size()) ; - sourceChannel.close() ; - destChannel.close() ; + Files.copy(source.toPath(), dest.toPath()); } catch (IOException ex) { IO.exception(ex) ; diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java index 8315236bc0b..2d1345f5db8 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java @@ -18,13 +18,13 @@ package org.apache.jena.atlas.lib; +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toList; + import java.util.ArrayList ; import java.util.List ; -import java.util.function.Consumer; - import org.apache.jena.atlas.io.IndentedWriter ; -import org.apache.jena.atlas.iterator.FilterUnique ; -import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.logging.Log ; /** Various things for lists */ @@ -35,14 +35,13 @@ private ListUtils() {} public static List unique(List list) { - Iter iter = Iter.iter(list.iterator()) ; - return iter.filter(new FilterUnique()).toList() ; + return list.stream().distinct().collect(toList()); } public static List asList(int... values) { - List x = new ArrayList<>() ; + List x = new ArrayList<>(values.length) ; for ( int v : values ) x.add(v) ; return x ; @@ -50,47 +49,17 @@ List asList(int... values) public static String str(T[] array) { - StringBuilder buff = new StringBuilder() ; - String sep = "[" ; - - for ( T anArray : array ) - { - buff.append( sep ); - sep = ", "; - buff.append( anArray ); - } - buff.append("]") ; - return buff.toString() ; + return stream(array).map(String::valueOf).collect(joining(", ", "[", "]")); } public static String str(int[] array) { - StringBuilder buff = new StringBuilder() ; - String sep = "[" ; - - for ( int anArray : array ) - { - buff.append( sep ); - sep = ", "; - buff.append( anArray ); - } - buff.append("]") ; - return buff.toString() ; + return stream(array).mapToObj(String::valueOf).collect(joining(", ", "[", "]")); } public static String str(long[] array) { - StringBuilder buff = new StringBuilder() ; - String sep = "[" ; - - for ( long anArray : array ) - { - buff.append( sep ); - sep = ", "; - buff.append( anArray ); - } - buff.append("]") ; - return buff.toString() ; + return stream(array).mapToObj(String::valueOf).collect(joining(", ", "[", "]")); } public static void print(IndentedWriter out, List list) @@ -98,23 +67,15 @@ public static void print(IndentedWriter out, List list) print(out, list, " ") ; } - public static void print(final IndentedWriter out, List list, final String sep) + public static void print(final IndentedWriter out, List list, final CharSequence sep) { - Consumer output = new Consumer() { - boolean first = true ; - @Override - public void accept(T item) - { - if ( ! first ) out.print(sep) ; - out.print(item.toString()) ; - first = false ; - } - } ; - Iter.apply(list.iterator(), output) ; + out.print(list.stream().map(String::valueOf).collect(joining(sep))); } /** Return a list of lists of all the elements of collection in every order * Easy to run out of heap memory. + * + * See {@link com.google.common.collect.Collections2#permutations(Collection)} */ static public List> permute(List c) { diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMap.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMap.java deleted file mode 100644 index 2782ea67473..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMap.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * 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.atlas.lib; - -import java.util.* ; - -import org.apache.jena.atlas.iterator.IteratorConcat ; - -/* Map from K to collection of V */ - -public abstract class MultiMap -{ - private Map> map = new HashMap<>() ; - - protected abstract Collection createCollection() ; - - public static MultiMapToList createMapList() { return new MultiMapToList<>() ; } - public static MultiMapToSet createMapSet() { return new MultiMapToSet<>() ; } - - protected MultiMap() { } - - protected Collection getByKey(K key) { - return map.get(key) ; - } - - public abstract Collection get(K key) ; - - public V getOne(K key) { - Collection c = map.get(key) ; - if ( c == null || c.size() == 0 ) - return null ; - return c.iterator().next() ; - } - - public void putAll(K key, @SuppressWarnings("unchecked") V ... values) - { - for ( V v : values) - put(key, v) ; - } - - public void put(K key, V value) - { - Collection x = map.get(key) ; - if ( x == null ) - { - x = createCollection() ; - map.put(key, x) ; - } - x.add(value) ; - } - - public void remove(K key, V value) { - if ( map.containsKey(key)) - map.get(key).remove(value) ; - } - public void removeKey(K key) { map.remove(key) ; } - - protected Collection valuesForKey(K key) { return map.get(key); } - public abstract Collection values(K key) ; - public abstract Collection values() ; - - public boolean containsKey(K key) { return map.containsKey(key) ; } - - public Set keys() { return map.keySet() ; } - - public void clear() { map.clear() ; } - - public boolean isEmpty() { return map.isEmpty() ; } - - /** Does not materialise the contents */ - public Iterator flatten() - { - IteratorConcat all = new IteratorConcat<>() ; - for ( K k : map.keySet() ) - { - Collection x = map.get(k) ; - all.add(x.iterator()) ; - } - return all ; - } - - @Override - public boolean equals(Object obj) { - if ( this == obj ) - return true ; - if ( obj == null ) - return false ; - if ( getClass() != obj.getClass() ) - return false ; - MultiMap other = (MultiMap)obj ; - if ( map == null ) { - if ( other.map != null ) - return false ; - } else if ( !map.equals(other.map) ) - return false ; - return true ; - } - - @Override - public int hashCode() { return map.hashCode()^ 0x01010101 ; } - - @Override - public String toString() - { - StringBuilder sb = new StringBuilder() ; - sb.append("{ ") ; - boolean firstKey = true ; - for ( K key : keys() ) - { - if ( ! firstKey ) - sb.append(", ") ; - firstKey = false ; - sb.append(key) ; - sb.append(" => [") ; - boolean firstValue = true ; - for ( V value : values(key) ) - { - if ( firstValue ) - sb.append(" ") ; - else - sb.append(", ") ; - sb.append(value) ; - firstValue = false ; - } - sb.append(" ] ") ; - } - sb.append("}") ; - return sb.toString() ; - } -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java deleted file mode 100644 index ac1ba700150..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToList.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * 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.atlas.lib; - -import java.util.ArrayList ; -import java.util.Collection ; -import java.util.List ; - -import org.apache.jena.atlas.iterator.Iter ; - -public class MultiMapToList extends MultiMap { - public static MultiMapToList create() { return new MultiMapToList<>() ; } - - @Override - protected Collection createCollection() { - return new ArrayList<>() ; - } - - @Override - public List get(K key) { return (List)getByKey(key); } - - @Override - public List values(K key) { return (List)valuesForKey(key); } - - @Override - public List values() { return Iter.toList(flatten()) ; } -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java deleted file mode 100644 index b89e05be21f..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiMapToSet.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * 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.atlas.lib; - -import java.util.Collection ; -import java.util.HashSet ; -import java.util.Set ; - -import org.apache.jena.atlas.iterator.Iter ; - -public class MultiMapToSet extends MultiMap { - public static MultiMapToSet create() { return new MultiMapToSet<>() ; } - - @Override - protected Collection createCollection() - { - return new HashSet<>() ; - } - - @Override - public Set get(K key) { return (Set)getByKey(key) ; } - - @Override - public Set values(K key) { return (Set)valuesForKey(key); } - - @Override - public Set values() { return Iter.toSet(flatten()) ; } - - -} - diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiSet.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiSet.java deleted file mode 100644 index 37010424ee4..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/MultiSet.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * 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.atlas.lib; - -import java.util.ArrayList ; -import java.util.HashMap ; -import java.util.Iterator ; -import java.util.List ; -import java.util.Map ; -import java.util.NoSuchElementException ; - -/** A MultiSet - also known as a Bag - */ - -public class MultiSet implements Iterable -{ - private Map map = new HashMap<>() ; - private int multiSetSize = 0 ; - - private RefLong _get(T obj) - { - RefLong z = map.get(obj) ; - if ( z == null ) - { - z = new RefLong(0) ; - map.put(obj, z) ; - } - return z ; - } - - /** Does it contain any elements at all? */ - public boolean isEmpty() { return map.isEmpty() ; } - - /** Does it contain the object? */ - public boolean contains(T obj) { return map.containsKey(obj) ; } - - /** Yield one object per element (i.e without counts) */ - public Iterator elements() { return map.keySet().iterator() ; } - - /** Add an object */ - public void add(T obj) { _get(obj).inc(); multiSetSize++ ; } - - /** Add an object, with cardinality n */ - public void add(T obj, long n) - { - if ( n <= 0 ) return ; - _get(obj).add(n) ; - multiSetSize += n ; - } - - /** Remove one occurrence of the object from the multiset */ - public void remove(T obj) - { - RefLong x = map.get(obj) ; - if ( x == null ) return ; - x.dec() ; - multiSetSize-- ; - if ( x.value() == 0 ) - map.remove(obj) ; - } - - /** Remove N occurrences of the object from the multiset */ - public void remove(T obj, long n) - { - RefLong x = map.get(obj) ; - if ( x == null ) return ; - long z = x.value() ; - if ( z < n ) - n = z ; - x.subtract(n) ; - multiSetSize -= n ; - if ( x.value() <= 0 ) - map.remove(obj) ; - } - - - /** Remove all occurrences of the object in themultiset */ - public void removeAll(T obj) - { - RefLong x = map.get(obj) ; - if ( x == null ) - return ; - multiSetSize -= x.value() ; - map.remove(obj) ; - } - - /* Remove everything */ - public void clear() { map.clear() ; multiSetSize = 0 ; } - - - /** Get the count of the number of times the object appears in the multiset - i.e. it's cardinality. - * Returns zero when not present. - */ - public long count(T obj) - { - if ( ! map.containsKey(obj) ) return 0 ; - return map.get(obj).value() ; - } - - public int size() - { -// int count = 0 ; -// for ( Map.Entry e : map.entrySet() ) -// count += e.getValue().value() ; -// //return count ; -// if ( count != multiSetSize ) -// { -// Log.warn(this, "Mismatch") ; -// return count ; -// } - - return multiSetSize ; - } - - private Iterator iterator1() - { - // CRUDE - List expanded = new ArrayList<>() ; - for ( Map.Entry e : map.entrySet() ) - { - for ( int i = 0 ; i < e.getValue().value() ; i++ ) - expanded.add(e.getKey()) ; - } - - return expanded.iterator() ; - } - - @Override - public Iterator iterator() - { - return new Iterator() { - - Iterator keys = map.keySet().iterator() ; - T key = null ; - long keyCount = 0 ; - T slot = null ; - - @Override - public boolean hasNext() - { - if ( slot != null ) - return true ; - - if ( keys == null ) - return false ; - - if ( key != null ) - { - if ( keyCount < count(key) ) - { - keyCount++ ; - slot = key ; - return true ; - } - // End of this key. - key = null ; - } - - if ( keys.hasNext() ) - { - key = keys.next() ; - keyCount = 1 ; - slot = key ; - return true ; - } - keys = null ; - return false ; - } - - @Override - public T next() - { - if ( ! hasNext() ) throw new NoSuchElementException() ; - T x = slot ; - slot = null ; - return x ; - } - - @Override - public void remove() - { throw new UnsupportedOperationException() ; } - } ; - } - - @Override - public String toString() - { - StringBuilder sb = new StringBuilder() ; - sb.append("{") ; - String sep = "" ; - for ( Map.Entry e : map.entrySet() ) - { - sb.append(sep) ; - sep = ", " ; - sb.append(e.getKey().toString()) ; - sb.append("=") ; - sb.append(Long.toString(e.getValue().value())) ; - } - sb.append("}") ; - return sb.toString() ; - } -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java index d4ac5b7eb79..f9acfc878a6 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertyUtils.java @@ -92,7 +92,7 @@ public static Boolean getPropertyAsBoolean(Properties properties, String key) { /** Test whether a property has a value. Null tests equal to not present. */ public boolean propertyEquals(Properties properties, String key, String value) { - return Lib.equal(properties.getProperty(key), value) ; + return Objects.equals(properties.getProperty(key), value) ; } /** Set property if not already set. */ @@ -130,7 +130,7 @@ public void checkOrSetProperty(Properties properties, String key, String expecte public void checkMetadata(Properties properties, String key, String expected) { String value = properties.getProperty(key) ; - if ( !Lib.equal(value, value) ) + if ( !Objects.equals(value, value) ) inconsistent(properties, key, value, expected) ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java index 9a9be769b4e..a61af116541 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/StrUtils.java @@ -18,10 +18,15 @@ package org.apache.jena.atlas.lib; +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toList; + import java.io.UnsupportedEncodingException ; import java.util.ArrayList ; import java.util.List ; import java.util.Map ; +import java.util.stream.Collectors; public class StrUtils //extends StringUtils @@ -54,27 +59,12 @@ public static String strjoin(String sep, List args) private static String join(String sep, List a) { - return join(sep, a.toArray(new String[0])) ; + return a.stream().collect(joining(sep)); } private static String join(String sep, String...a) - { - if ( a.length == 0 ) - return "" ; - - if ( a.length == 1) - return a[0] ; - - StringBuilder sbuff = new StringBuilder() ; - sbuff.append(a[0]) ; - - for ( int i = 1 ; i < a.length ; i++ ) - { - if ( sep != null ) - sbuff.append(sep) ; - sbuff.append(a[i]) ; - } - return sbuff.toString() ; + { + return stream(a).collect(joining(sep)); } public static final int CMP_GREATER = +1 ; @@ -127,12 +117,7 @@ public static String str(Object x) /** Split but also trim whiespace. */ public static String[] split(String s, String splitStr) { - String[] x = s.split(splitStr) ; - for ( int i = 0 ; i < x.length ; i++ ) - { - x[i] = x[i].trim() ; - } - return x ; + return stream(s.split(splitStr)).map(String::trim).toArray(String[]::new); } /** Does one string contain another string? @@ -152,7 +137,7 @@ public final static String replace(String string, String target, String replacem public static String substitute(String str, Mapsubs) { - for ( Map.Entry e : subs.entrySet() ) + for ( Map.Entry e : subs.entrySet() ) { String param = e.getKey() ; if ( str.contains(param) ) @@ -182,10 +167,8 @@ public static String noNewlineEnding(String x) public static List toCharList(String str) { - List characters = new ArrayList<>(str.length()) ; - for ( Character ch : str.toCharArray() ) - characters.add(ch) ; - return characters ; + return str.codePoints().mapToObj(i -> (char) i).map(Character::new) + .collect(toList()); } // ==== Encoding and decoding strings based on a marker character (e.g. %) diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java index 35a97a51e27..f991d65db65 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Tuple.java @@ -21,6 +21,7 @@ import java.util.Arrays ; import java.util.Iterator ; import java.util.List ; +import java.util.Objects; import java.util.function.Function; import org.apache.jena.atlas.iterator.Iter ; @@ -37,9 +38,6 @@ public static Tuple createTuple(@SuppressWarnings("unchecked") X... eleme /** * Create a tuple from an array of elements. The array is not copied and * should not be modified after this call. - *

- * There is also a {@link TupleBuilder} which does create an idendent - * copy, in case that style is preferrable for creating tuples. */ public static Tuple create(X[] elements) { return new Tuple<>(elements) ; @@ -90,7 +88,7 @@ public T[] tupleCopy() { @Override public Iterator iterator() { - return Arrays.stream(tuple).iterator() ; + return Arrays.asList(tuple).iterator() ; } /** Return a tuple with the column mapping applied */ @@ -130,7 +128,7 @@ public boolean equals(Object other) { for ( int i = 0 ; i < tuple.length ; i++ ) { Object obj1 = tuple[i] ; Object obj2 = x.tuple[i] ; - if ( !Lib.equal(obj1, obj2) ) + if ( !Objects.equals(obj1, obj2) ) return false ; } return true ; diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/TupleBuilder.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/TupleBuilder.java deleted file mode 100644 index 278334d8092..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/TupleBuilder.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 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.atlas.lib; - - -import java.util.ArrayList ; -import java.util.List ; - -/** Tuple builder class - tuples are immutable, this is how to create them in the builder style */ -public class TupleBuilder -{ - private List x = new ArrayList<>() ; - - public TupleBuilder() { } - - public TupleBuilder add(T element) { - x.add(element) ; - return this ; - } - - public TupleBuilder reset() { - x.clear() ; - return this ; - } - - public Tuple build() { - @SuppressWarnings("unchecked") - T[] elts = (T[])new Object[x.size()] ; - // Copy contents, should not create a new array because elts - // is created with the right size so elts == elts2 - T[] elts2 = x.toArray(elts) ; - return new Tuple<>(elts2) ; - } -} diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Getter.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Getter.java deleted file mode 100644 index c9f879cb15d..00000000000 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Getter.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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.atlas.lib.cache; - -/** A get interface */ -public interface Getter -{ - public V get(K key) ; -} diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java index b91d4ad7bc3..ac543c0f9ca 100644 --- a/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java +++ b/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java @@ -46,7 +46,6 @@ , TestReverseComparator.class , TestTrie.class , TestFilenameProcessing.class - , TestMultiSet.class , TestNumberUtils.class , TestDateTimeUtils.class } ) diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestMultiSet.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestMultiSet.java deleted file mode 100644 index 477386bbbba..00000000000 --- a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestMultiSet.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * 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.atlas.lib; - -import java.util.Arrays ; -import java.util.Collections ; -import java.util.List ; - -import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.junit.BaseTest ; -import org.apache.jena.atlas.lib.MultiSet ; -import org.junit.Test ; - - -public class TestMultiSet extends BaseTest -{ - @Test public void multiSet_01() - { - MultiSet x = new MultiSet<>() ; - assertTrue(x.isEmpty()) ; - assertEquals(0, x.count("A")) ; - } - - @Test public void multiSet_02() - { - MultiSet x = new MultiSet<>() ; - x.add("A") ; - assertFalse(x.isEmpty()) ; - assertEquals(1, x.count("A") ) ; - x.add("A") ; - assertEquals(2, x.count("A") ) ; - } - - @Test public void multiSet_03() - { - MultiSet x = new MultiSet<>() ; - x.add("A") ; - x.add("A") ; - x.remove("A") ; - assertEquals(1, x.count("A") ) ; - assertTrue(x.contains("A")) ; - x.remove("A") ; - assertEquals(0, x.count("A") ) ; - assertFalse(x.contains("A")) ; - } - - @Test public void multiSet_04() - { - String[] data = { } ; - iterTest(data) ; - } - - - @Test public void multiSet_05() - { - String[] data = { "A" } ; - iterTest(data) ; - } - - @Test public void multiSet_06() - { - String[] data = { "A", "B", "C" } ; - iterTest(data) ; - } - - - @Test public void multiSet_07() - { - String[] data = { "A", "B", "C", "A" } ; - iterTest(data) ; - } - - @Test public void multiSet_08() - { - String[] data = { } ; - MultiSet x = add(data) ; - assertEquals(0, x.size()) ; - } - - @Test public void multiSet_09() - { - String[] data = { "A", "A" } ; - MultiSet x = add(data) ; - assertEquals(2, x.size()) ; - } - - @Test public void multiSet_10() - { - String[] data = { "A", "A" } ; - MultiSet x = add(data) ; - x.remove("A") ; - assertEquals(1, x.size()) ; - x.remove("A") ; - assertEquals(0, x.size()) ; - x.remove("A") ; - assertEquals(0, x.size()) ; - } - - @Test public void multiSet_11() - { - String[] data = { "A", "A" } ; - MultiSet x = add(data) ; - long c = Iter.count(x.elements()) ; - assertEquals(1, c) ; - } - - private static MultiSet add(String[] data) - { - MultiSet x = new MultiSet<>() ; - for ( String str : data ) - x.add(str) ; - return x ; - } - - private static void iterTest(String[] data) - { - List expected = Arrays.asList(data) ; - MultiSet x = new MultiSet<>() ; - for ( String str : data ) - x.add(str) ; - List actual = Iter.toList(x.iterator()) ; - Collections.sort(expected) ; - Collections.sort(actual) ; - assertEquals(expected, actual) ; - } - -} diff --git a/jena-csv/src/main/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImpl.java b/jena-csv/src/main/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImpl.java index cee257f2cbe..622b3f1506e 100644 --- a/jena-csv/src/main/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImpl.java +++ b/jena-csv/src/main/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImpl.java @@ -19,11 +19,12 @@ package org.apache.jena.propertytable.impl; import java.util.* ; -import java.util.Map.Entry ; +import java.util.Map.Entry; import org.apache.jena.atlas.iterator.Iter; import org.apache.jena.atlas.iterator.IteratorConcat; -import org.apache.jena.atlas.lib.MultiMapToSet ; +import org.apache.jena.ext.com.google.common.collect.HashMultimap; +import org.apache.jena.ext.com.google.common.collect.SetMultimap ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; import org.apache.jena.propertytable.Column; @@ -50,7 +51,7 @@ public class PropertyTableHashMapImpl implements PropertyTable { private Map> valueIndex; // POS index // Maps column Node to (value, subject Node) pairs - private Map> valueReverseIndex; + private Map> valueReverseIndex; PropertyTableHashMapImpl() { columnIndex = new HashMap(); @@ -58,7 +59,7 @@ public class PropertyTableHashMapImpl implements PropertyTable { rowIndex = new HashMap(); rowList = new ArrayList(); valueIndex = new HashMap>(); - valueReverseIndex = new HashMap>(); + valueReverseIndex = new HashMap>(); } @Override @@ -120,7 +121,7 @@ public ExtendedIterator getTripleIterator(Column column, Node value) { Node p = column.getColumnKey(); - final MultiMapToSet valueToSubjectMap = valueReverseIndex.get(p); + final SetMultimap valueToSubjectMap = valueReverseIndex.get(p); if ( valueToSubjectMap == null ) return NullIterator.instance() ; final Set subjects = valueToSubjectMap.get(value); @@ -171,7 +172,7 @@ public Column createColumn(Node p) { columnIndex.put(p, new ColumnImpl(this, p)); columnList.add(columnIndex.get(p)); valueIndex.put(p, new HashMap()); - valueReverseIndex.put(p, MultiMapToSet. create()); + valueReverseIndex.put(p, HashMultimap.create()); return getColumn(p); } @@ -226,7 +227,7 @@ public Collection getMatchingRows(Column column, Node value) { Node p = column.getColumnKey(); - final MultiMapToSet valueToSubjectMap = valueReverseIndex.get(p); + final SetMultimap valueToSubjectMap = valueReverseIndex.get(p); if ( valueToSubjectMap == null ) return Collections.emptyList() ; final Set subjects = valueToSubjectMap.get(value); @@ -257,7 +258,7 @@ private final void setX(final Node s, final Node p, final Node value) { private void addToReverseMap(final Node p, final Node s, final Node oldValue, final Node value) { - final MultiMapToSet valueToSubjectMap = valueReverseIndex.get(p); + final SetMultimap valueToSubjectMap = valueReverseIndex.get(p); if ( valueToSubjectMap == null ) return ; valueToSubjectMap.remove(oldValue, s); @@ -281,7 +282,7 @@ private void unSetX(final Node s, final Node p) { private void removeFromReverseMap(final Node p, final Node s, final Node value) { - final MultiMapToSet valueTokeysMap = valueReverseIndex.get(p); + final SetMultimap valueTokeysMap = valueReverseIndex.get(p); if ( valueTokeysMap == null ) return ; valueTokeysMap.remove(s, value); diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiLib.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiLib.java index ca216f3a988..e06d692938c 100644 --- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiLib.java +++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiLib.java @@ -23,9 +23,9 @@ import javax.servlet.http.HttpServletRequest ; import org.apache.commons.lang.StringUtils ; -import org.apache.jena.atlas.lib.MultiMap ; -import org.apache.jena.atlas.lib.MultiMapToList ; import org.apache.jena.atlas.web.ContentType ; +import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap; +import org.apache.jena.ext.com.google.common.collect.Multimap; import org.apache.jena.fuseki.servlets.HttpAction ; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Node ; @@ -87,8 +87,8 @@ static String fmtRequest(HttpServletRequest request) { } /** Parse the query string - do not process the body even for a form */ - public static MultiMap parseQueryString(HttpServletRequest req) { - MultiMap map = MultiMapToList.create() ; + public static Multimap parseQueryString(HttpServletRequest req) { + Multimap map = ArrayListMultimap.create() ; // Don't use ServletRequest.getParameter or getParamterNames // as that reads form data. This code parses just the query string. diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java index 84bb8588ac3..ed106d88481 100644 --- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java +++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java @@ -24,6 +24,8 @@ import java.util.Arrays ; import java.util.Collections ; import java.util.List ; +import java.util.Objects; + import javax.servlet.http.HttpServletRequest ; import org.apache.jena.atlas.iterator.Iter ; @@ -74,7 +76,7 @@ private static List toStrList(String[] array) private static List removeEmptyValues(List list) { - return Iter.iter(list).filter(item -> item != null && item.length() != 0).toList() ; + return Iter.iter(list).filter(Objects::nonNull).filter(item -> !item.isEmpty()).toList() ; } protected static int countParamOccurences(HttpServletRequest request, String param) diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLib.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLib.java index 3a2a4097241..1138260f25a 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLib.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/FusekiLib.java @@ -22,9 +22,9 @@ import javax.servlet.http.HttpServletRequest ; -import org.apache.jena.atlas.lib.MultiMap ; -import org.apache.jena.atlas.lib.MultiMapToList ; import org.apache.jena.atlas.web.ContentType ; +import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap; +import org.apache.jena.ext.com.google.common.collect.Multimap; import org.apache.jena.fuseki.server.SystemState ; import org.apache.jena.fuseki.servlets.HttpAction ; import org.apache.jena.graph.Graph ; @@ -95,8 +95,8 @@ static String fmtRequest(HttpServletRequest request) { } /** Parse the query string - do not process the body even for a form */ - public static MultiMap parseQueryString(HttpServletRequest req) { - MultiMap map = MultiMapToList.create() ; + public static Multimap parseQueryString(HttpServletRequest req) { + Multimap map = ArrayListMultimap.create() ; // Don't use ServletRequest.getParameter or getParamterNames // as that reads form data. This code parses just the query string. diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java index 1037390ad59..e4b8793c6cb 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/DataService.java @@ -25,8 +25,8 @@ import java.util.concurrent.atomic.AtomicBoolean ; import java.util.concurrent.atomic.AtomicLong ; -import org.apache.jena.atlas.lib.MultiMap ; -import org.apache.jena.atlas.lib.MultiMapToList ; +import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap; +import org.apache.jena.ext.com.google.common.collect.ListMultimap; import org.apache.jena.fuseki.DEF ; import org.apache.jena.fuseki.Fuseki ; import org.apache.jena.fuseki.build.DataServiceDesc ; @@ -54,7 +54,7 @@ public static DataService serviceOnlyDataService() { private final DataServiceDesc svcDesc ; private DatasetGraph dataset = null ; // Only valid if active. - private MultiMapToList operations = MultiMap.createMapList() ; + private ListMultimap operations = ArrayListMultimap.create() ; private Map endpoints = new HashMap<>() ; private volatile DatasetStatus state = UNINITIALIZED ; diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java index 2a19d036835..0be8b6c6ed7 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Protocol.java @@ -79,7 +79,7 @@ private static List removeEmptyValues(List list) return Iter.iter(list).filter(acceptNonEmpty).toList() ; } - private static Predicate acceptNonEmpty = item -> item != null && item.length() != 0; + private static Predicate acceptNonEmpty = item -> item != null && !item.isEmpty(); protected static int countParamOccurences(HttpServletRequest request, String param) { diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrTracker.java b/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrTracker.java index 01732615e4b..9d2f9ee0f9c 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrTracker.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/base/block/BlockMgrTracker.java @@ -24,7 +24,8 @@ import java.util.Iterator ; import java.util.List ; -import org.apache.jena.atlas.lib.MultiSet ; +import org.apache.jena.ext.com.google.common.collect.HashMultiset; +import org.apache.jena.ext.com.google.common.collect.Multiset; import org.apache.jena.atlas.lib.Pair ; import org.apache.jena.tdb.TDBException ; import org.slf4j.Logger ; @@ -42,9 +43,9 @@ static enum Action { Alloc, Promote, GetRead, GetWrite, Write, Release, Free, It // ---- State for tracking // Track and count block references and releases // No - the page is dirty. - protected final MultiSet activeReadBlocks = new MultiSet<>() ; - protected final MultiSet activeWriteBlocks = new MultiSet<>() ; - protected final MultiSet activeIterBlocks = new MultiSet<>() ; + protected final Multiset activeReadBlocks = HashMultiset.create() ; + protected final Multiset activeWriteBlocks = HashMultiset.create() ; + protected final Multiset activeIterBlocks = HashMultiset.create() ; // Track the operations protected final List> actions = new ArrayList<>() ; protected final List> activeIterators = new ArrayList<>() ; @@ -59,13 +60,6 @@ private void clearInternalRW() actions.clear() ; } - private void clearInternalIter() - { - clearInternalRW() ; - activeIterators.clear() ; - activeIterBlocks.clear() ; - } - private int inRead = 0 ; private int inIterator = 0 ; private boolean inUpdate = false ; @@ -79,11 +73,6 @@ private static BlockMgr track(String label, BlockMgr blkMgr) return new BlockMgrTracker(label, blkMgr) ; } - private BlockMgrTracker(BlockMgr blockMgr) - { - this(LoggerFactory.getLogger(BlockMgrTracker.class), blockMgr.getLabel(), blockMgr) ; - } - private BlockMgrTracker(String label, BlockMgr blockMgr) { this(loggerDefault, label, blockMgr) ; @@ -411,7 +400,7 @@ private void checkReadOrIter(Action action) } - private void checkEmpty(String string, MultiSet blocks) + private void checkEmpty(String string, Multiset blocks) { if ( ! blocks.isEmpty() ) { @@ -440,11 +429,6 @@ private void warn(String string) log.warn(msg(string)) ; } - private void warn(Action action, String string) - { - warn(action + ": " + string) ; - } - private void error(String string) { log.error(msg(string)) ; @@ -461,9 +445,6 @@ private void error(Action action, String string) //debugPoint() ; } - // Do nothing - but use a a breakpoint point. - private void debugPoint() {} - private void history() { info("History") ; diff --git a/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java b/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java index 1eb97b90c94..2f15ffb38ed 100644 --- a/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java +++ b/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java @@ -23,7 +23,8 @@ import java.util.HashMap ; import java.util.Map ; -import org.apache.jena.atlas.lib.MultiMap ; +import org.apache.jena.ext.com.google.common.collect.ArrayListMultimap; +import org.apache.jena.ext.com.google.common.collect.ListMultimap; import org.apache.jena.graph.Node ; import org.apache.jena.rdf.model.Resource ; import org.apache.lucene.analysis.Analyzer ; @@ -34,7 +35,7 @@ public class EntityDefinition { private final Map predicateToField = new HashMap<>() ; private final Map fieldToAnalyzer = new HashMap<>(); - private final MultiMap fieldToPredicate = MultiMap.createMapList() ; + private final ListMultimap fieldToPredicate = ArrayListMultimap.create() ; private final Collection fields = Collections.unmodifiableCollection(fieldToPredicate.keys()) ; // private final Collection fields = // Collections.unmodifiableCollection(fieldToPredicate.keySet()) ; diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java index f6777785ac0..a54fc92e6bf 100644 --- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java +++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/EntityDefinitionAssembler.java @@ -28,9 +28,11 @@ import org.apache.jena.assembler.Assembler ; import org.apache.jena.assembler.Mode ; import org.apache.jena.assembler.assemblers.AssemblerBase ; -import org.apache.jena.atlas.lib.MultiMap ; import org.apache.jena.atlas.lib.StrUtils ; import org.apache.jena.atlas.logging.Log ; +import org.apache.jena.ext.com.google.common.collect.HashMultimap; +import org.apache.jena.ext.com.google.common.collect.Multimap; +import org.apache.jena.ext.com.google.common.collect.Multimaps; import org.apache.jena.graph.Node ; import org.apache.jena.query.* ; import org.apache.jena.query.text.EntityDefinition ; @@ -88,7 +90,7 @@ public EntityDefinition open(Assembler a, Resource root, Mode mode) String graphField = qsol1.contains("graphField") ? qsol1.getLiteral("graphField").getLexicalForm() : null; String defaultField = qsol1.contains("dftField") ? qsol1.getLiteral("dftField").getLexicalForm() : null ; - MultiMap mapDefs = MultiMap.createMapList() ; + Multimap mapDefs = HashMultimap.create() ; Map analyzerDefs = new HashMap<>(); Statement listStmt = root.getProperty(TextVocab.pMap); @@ -97,7 +99,7 @@ public EntityDefinition open(Assembler a, Resource root, Mode mode) if (! n.isResource()) { throw new TextIndexException("Text list node is not a resource : " + n); } - Resource listResource = (Resource) n; + Resource listResource = n.asResource(); if (listResource.equals(RDF.nil)) { break; // end of the list } @@ -110,7 +112,7 @@ public EntityDefinition open(Assembler a, Resource root, Mode mode) if (! n.isResource()) { throw new TextIndexException("Text map list entry is not a resource : " + n); } - Resource listEntry = (Resource) n; + Resource listEntry = n.asResource(); Statement fieldStatement = listEntry.getProperty(TextVocab.pField); if (fieldStatement == null) { @@ -120,7 +122,7 @@ public EntityDefinition open(Assembler a, Resource root, Mode mode) if (! n.isLiteral()) { throw new TextIndexException("Text map entry field property has no literal value : " + n); } - String field = ((Literal)n).getLexicalForm(); + String field = n.asLiteral().getLexicalForm(); Statement predicateStatement = listEntry.getProperty(TextVocab.pPredicate); if (predicateStatement == null) { @@ -130,8 +132,7 @@ public EntityDefinition open(Assembler a, Resource root, Mode mode) if (! n.isURIResource()) { throw new TextIndexException("Text map entry predicate property has non resource value : " + n); } - Resource predicate = (Resource) n; - mapDefs.put(field, predicate.asNode()) ; + mapDefs.put(field, n.asNode()) ; Statement analyzerStatement = listEntry.getProperty(TextVocab.pAnalyzer); if (analyzerStatement != null) { @@ -139,7 +140,7 @@ public EntityDefinition open(Assembler a, Resource root, Mode mode) if (! n.isResource()) { throw new TextIndexException("Text map entry analyzer property is not a resource : " + n); } - Resource analyzerResource = (Resource) n; + Resource analyzerResource = n.asResource(); Analyzer analyzer = (Analyzer) a.open(analyzerResource); analyzerDefs.put(field, analyzer); } @@ -151,7 +152,7 @@ public EntityDefinition open(Assembler a, Resource root, Mode mode) // Primary field/predicate if ( defaultField != null ) { Collection c = mapDefs.get(defaultField) ; - if ( c == null ) + if ( c.isEmpty() ) throw new TextIndexException("No definition of primary field '"+defaultField+"'") ; } From 4151172d0e43a416366f39ecbd1b385d3e06b25f Mon Sep 17 00:00:00 2001 From: ajs6f Date: Tue, 5 May 2015 11:30:54 -0400 Subject: [PATCH 3/4] Emendations in response to comments from @afs --- .../apache/jena/atlas/json/JsonBuilder.java | 4 +-- .../org/apache/jena/atlas/web/MediaType.java | 4 +-- .../org/apache/jena/query/SortCondition.java | 5 ++-- .../java/org/apache/jena/riot/RDFFormat.java | 7 +++-- .../apache/jena/riot/RDFFormatVariant.java | 5 ++-- .../apache/jena/riot/RDFWriterRegistry.java | 29 +++++++++---------- .../jena/riot/adapters/RDFReaderRIOT_Web.java | 4 +-- .../apache/jena/riot/lang/JsonLDReader.java | 4 +-- .../jena/riot/other/BatchedStreamRDF.java | 6 ++-- .../jena/riot/out/SinkQuadBracedOutput.java | 4 +-- .../org/apache/jena/riot/tokens/Token.java | 10 +++---- .../apache/jena/riot/writer/TurtleShell.java | 5 ++-- .../riot/writer/WriterStreamRDFBatched.java | 6 ++-- .../riot/writer/WriterStreamRDFBlocks.java | 8 ++--- .../jena/sparql/algebra/op/OpAssign.java | 5 ++-- .../jena/sparql/algebra/op/OpExtend.java | 5 ++-- .../jena/sparql/algebra/op/OpGroup.java | 6 ++-- .../jena/sparql/algebra/op/OpLabel.java | 6 ++-- .../jena/sparql/algebra/op/OpProject.java | 4 +-- .../optimize/TransformFilterPlacement.java | 3 +- .../sparql/core/DatasetChangesBatched.java | 8 ++--- .../sparql/core/DatasetGraphCollection.java | 4 +-- .../org/apache/jena/sparql/core/Prologue.java | 7 +++-- .../org/apache/jena/sparql/core/Quad.java | 7 +++-- .../apache/jena/sparql/core/QueryCompare.java | 4 ++- .../apache/jena/sparql/core/VarExprList.java | 4 +-- .../sparql/engine/binding/BindingBase.java | 4 +-- .../jena/sparql/expr/ExprAggregator.java | 7 ++--- .../apache/jena/sparql/expr/ExprFunction.java | 4 +-- .../jena/sparql/expr/aggregate/AggCustom.java | 6 ++-- .../sparql/expr/aggregate/AggGroupConcat.java | 5 ++-- .../aggregate/AggGroupConcatDistinct.java | 5 ++-- .../jena/sparql/expr/aggregate/AggMax.java | 5 ++-- .../sparql/expr/aggregate/AggMaxDistinct.java | 5 ++-- .../jena/sparql/expr/aggregate/AggMin.java | 5 ++-- .../sparql/expr/aggregate/AggMinDistinct.java | 5 ++-- .../jena/sparql/expr/aggregate/AggSample.java | 5 ++-- .../jena/sparql/graph/NodeTransformLib.java | 7 ++--- .../sparql/modify/request/UpdateLoad.java | 5 ++-- .../org/apache/jena/sparql/path/PathLib.java | 4 +-- .../sparql/resultset/ResultSetCompare.java | 4 +-- .../apache/jena/atlas/iterator/Action.java | 1 + .../apache/jena/atlas/iterator/Filter.java | 1 + .../iterator/FilterDistinctAdjacent.java | 5 ++-- .../jena/atlas/iterator/IteratorArray.java | 2 +- .../apache/jena/atlas/iterator/Transform.java | 1 + .../org/apache/jena/atlas/lib/Closeable.java | 2 +- .../java/org/apache/jena/atlas/lib/Lib.java | 1 + .../java/org/apache/jena/atlas/lib/Pair.java | 4 ++- .../apache/jena/atlas/lib/cache/Cache1.java | 4 +-- .../org/apache/jena/fuseki/FusekiCmd.java | 5 ++-- .../fuseki/servlets/ResponseResultSet.java | 16 +++++----- .../jena/fuseki/server/FusekiServer.java | 5 ++-- .../fuseki/servlets/ResponseResultSet.java | 16 +++++----- .../java/org/apache/jena/sdb/util/Pair.java | 5 ++-- .../apache/jena/tdb/base/file/Location.java | 4 +-- .../apache/jena/tdb/base/file/MetaFile.java | 5 ++-- .../bulkloader2/CmdNodeTableBuilder.java | 5 ++-- .../java/org/apache/jena/tdb/sys/FileRef.java | 4 +-- 59 files changed, 175 insertions(+), 151 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/json/JsonBuilder.java b/jena-arq/src/main/java/org/apache/jena/atlas/json/JsonBuilder.java index feb3072dd39..50336f1fcf2 100644 --- a/jena-arq/src/main/java/org/apache/jena/atlas/json/JsonBuilder.java +++ b/jena-arq/src/main/java/org/apache/jena/atlas/json/JsonBuilder.java @@ -21,8 +21,8 @@ import java.math.BigDecimal ; import java.util.ArrayDeque ; import java.util.Deque ; +import java.util.Objects; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.logging.Log ; /* Builder pattern for JSON. @@ -90,7 +90,7 @@ public JsonBuilder finishObject(String finishMarker) { if ( stack.isEmpty() ) builtValue = value ; String startMarker = markers.pop(); - if ( ! Lib.equal(startMarker, finishMarker) ) + if ( ! Objects.equals(startMarker, finishMarker) ) throw new JsonException("JSON build error : start/finish alignment error: start="+startMarker+" finish="+finishMarker) ; return this ; } diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/web/MediaType.java b/jena-arq/src/main/java/org/apache/jena/atlas/web/MediaType.java index b911250cd93..3cafb3e09a1 100644 --- a/jena-arq/src/main/java/org/apache/jena/atlas/web/MediaType.java +++ b/jena-arq/src/main/java/org/apache/jena/atlas/web/MediaType.java @@ -18,11 +18,11 @@ package org.apache.jena.atlas.web ; -import static org.apache.jena.atlas.lib.Lib.equal ; import static org.apache.jena.atlas.lib.Lib.hashCodeObject ; import java.util.LinkedHashMap ; import java.util.Map ; +import java.util.Objects; import org.slf4j.Logger ; import org.slf4j.LoggerFactory ; @@ -172,7 +172,7 @@ public boolean equals(Object object) { if ( !(object instanceof MediaType) ) return false ; MediaType mt = (MediaType)object ; - return equal(type, mt.type) && equal(subType, mt.subType) && equal(params, mt.params) ; + return Objects.equals(type, mt.type) && Objects.equals(subType, mt.subType) && Objects.equals(params, mt.params) ; } public String getParameter(String name) { diff --git a/jena-arq/src/main/java/org/apache/jena/query/SortCondition.java b/jena-arq/src/main/java/org/apache/jena/query/SortCondition.java index 424960ebdd9..021f70d7f94 100644 --- a/jena-arq/src/main/java/org/apache/jena/query/SortCondition.java +++ b/jena-arq/src/main/java/org/apache/jena/query/SortCondition.java @@ -18,8 +18,9 @@ package org.apache.jena.query; +import java.util.Objects; + import org.apache.jena.atlas.io.IndentedWriter ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.logging.Log ; import org.apache.jena.graph.Node ; import org.apache.jena.sparql.core.Var ; @@ -125,7 +126,7 @@ public boolean equals(Object other) if ( sc.getDirection() != this.getDirection() ) return false ; - if ( ! Lib.equal(this.getExpression(), sc.getExpression()) ) + if ( ! Objects.equals(this.getExpression(), sc.getExpression()) ) return false ; // if ( ! Utils.eq(this.getVariable(), sc.getVariable()) ) diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java index ae994819ddc..5297ca7d965 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormat.java @@ -19,7 +19,8 @@ package org.apache.jena.riot ; import static org.apache.jena.riot.RDFLanguages.THRIFT ; -import org.apache.jena.atlas.lib.Lib ; + +import java.util.Objects; /** Constants for writable formats */ public class RDFFormat { @@ -144,9 +145,9 @@ public boolean equals(Object obj) { if ( getClass() != obj.getClass() ) return false ; RDFFormat other = (RDFFormat)obj ; - if ( !Lib.equal(lang, other.lang) ) + if ( !Objects.equals(lang, other.lang) ) return false ; - if ( !Lib.equal(variant, other.variant) ) + if ( !Objects.equals(variant, other.variant) ) return false ; return true ; } diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormatVariant.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormatVariant.java index 2bda6f4fc5e..24ae2face4d 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/RDFFormatVariant.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFFormatVariant.java @@ -18,7 +18,8 @@ package org.apache.jena.riot ; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.sparql.util.Symbol ; /** Modifier for an RDF Format */ @@ -46,7 +47,7 @@ public boolean equals(Object obj) { if ( getClass() != obj.getClass() ) return false ; RDFFormatVariant other = (RDFFormatVariant)obj ; - if ( !Lib.equal(symbol, other.symbol) ) + if ( !Objects.equals(symbol, other.symbol) ) return false ; return true ; } diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java index dd238d19216..aeb37fc5d59 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java @@ -20,7 +20,6 @@ import java.util.* ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.riot.out.CharSpace ; import org.apache.jena.riot.out.JsonLDWriter ; import org.apache.jena.riot.system.RiotLib ; @@ -48,23 +47,23 @@ public WriterGraphRIOT create(RDFFormat serialization) { // Built-ins - if ( Lib.equal(RDFFormat.TURTLE_PRETTY, serialization) ) + if ( Objects.equals(RDFFormat.TURTLE_PRETTY, serialization) ) return new TurtleWriter() ; - if ( Lib.equal(RDFFormat.TURTLE_BLOCKS, serialization) ) + if ( Objects.equals(RDFFormat.TURTLE_BLOCKS, serialization) ) return new TurtleWriterBlocks() ; - if ( Lib.equal(RDFFormat.TURTLE_FLAT, serialization) ) + if ( Objects.equals(RDFFormat.TURTLE_FLAT, serialization) ) return new TurtleWriterFlat() ; - if ( Lib.equal(RDFFormat.NTRIPLES_UTF8, serialization) ) + if ( Objects.equals(RDFFormat.NTRIPLES_UTF8, serialization) ) return new NTriplesWriter() ; - if ( Lib.equal(RDFFormat.NTRIPLES_ASCII, serialization) ) + if ( Objects.equals(RDFFormat.NTRIPLES_ASCII, serialization) ) return new NTriplesWriter(CharSpace.ASCII) ; - if ( Lib.equal(RDFFormat.RDFJSON, serialization) ) + if ( Objects.equals(RDFFormat.RDFJSON, serialization) ) return new RDFJSONWriter() ; - if ( Lib.equal(RDFFormat.RDFXML_PRETTY, serialization) ) + if ( Objects.equals(RDFFormat.RDFXML_PRETTY, serialization) ) return new RDFXMLAbbrevWriter() ; - if ( Lib.equal(RDFFormat.RDFXML_PLAIN, serialization) ) + if ( Objects.equals(RDFFormat.RDFXML_PLAIN, serialization) ) return new RDFXMLPlainWriter() ; WriterDatasetRIOT dsw = wdsfactory.create(serialization) ; @@ -78,17 +77,17 @@ public WriterGraphRIOT create(RDFFormat serialization) @Override public WriterDatasetRIOT create(RDFFormat serialization) { - if ( Lib.equal(RDFFormat.TRIG_PRETTY, serialization) ) + if ( Objects.equals(RDFFormat.TRIG_PRETTY, serialization) ) return new TriGWriter() ; - if ( Lib.equal(RDFFormat.TRIG_BLOCKS, serialization) ) + if ( Objects.equals(RDFFormat.TRIG_BLOCKS, serialization) ) return new TriGWriterBlocks() ; - if ( Lib.equal(RDFFormat.TRIG_FLAT, serialization) ) + if ( Objects.equals(RDFFormat.TRIG_FLAT, serialization) ) return new TriGWriterFlat() ; - if ( Lib.equal(RDFFormat.NQUADS_UTF8, serialization) ) + if ( Objects.equals(RDFFormat.NQUADS_UTF8, serialization) ) return new NQuadsWriter() ; - if ( Lib.equal(RDFFormat.NQUADS_ASCII, serialization) ) + if ( Objects.equals(RDFFormat.NQUADS_ASCII, serialization) ) return new NQuadsWriter(CharSpace.ASCII) ; - if ( Lib.equal(RDFFormat.RDFNULL, serialization) ) + if ( Objects.equals(RDFFormat.RDFNULL, serialization) ) return NullWriter.factory.create(RDFFormat.RDFNULL) ; return null ; }} ; diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java index a324222b9f5..6d58bf7df62 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java @@ -20,8 +20,8 @@ import java.io.InputStream ; import java.io.Reader ; +import java.util.Objects; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.web.TypedInputStream ; import org.apache.jena.rdf.model.Model ; import org.apache.jena.riot.Lang ; @@ -74,7 +74,7 @@ public void read(Model model, String url) // Reading a URL, no hint language provided. // Use the URL structure as the hint. Lang lang = null ; - if ( ! Lib.equal(contentType, WebContent.contentTypeTextPlain) ) + if ( ! Objects.equals(contentType, WebContent.contentTypeTextPlain) ) lang = RDFLanguages.contentTypeToLang(contentType) ; if ( lang == null ) diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java index f381123018c..e7b758e2a01 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/JsonLDReader.java @@ -23,11 +23,11 @@ import java.io.Reader ; import java.util.List ; import java.util.Map ; +import java.util.Objects; import java.util.Map.Entry; import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.lib.InternalErrorException ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.web.ContentType ; import org.apache.jena.datatypes.RDFDatatype ; import org.apache.jena.datatypes.xsd.XSDDatatype ; @@ -155,7 +155,7 @@ else if ( type.equals(BLANK_NODE) ) else if ( type.equals(LITERAL) ) { String lang = (String)map.get("language") ; String datatype = (String)map.get("datatype") ; - if ( Lib.equal(xsdString, datatype) ) + if ( Objects.equals(xsdString, datatype) ) // In RDF 1.1, simple literals and xsd:string are the same. // During migration, we prefer simple literals to xsd:strings. datatype = null ; diff --git a/jena-arq/src/main/java/org/apache/jena/riot/other/BatchedStreamRDF.java b/jena-arq/src/main/java/org/apache/jena/riot/other/BatchedStreamRDF.java index e39209ca03d..d3eedd5b09e 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/other/BatchedStreamRDF.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/other/BatchedStreamRDF.java @@ -20,8 +20,8 @@ import java.util.ArrayList ; import java.util.List ; +import java.util.Objects; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; import org.apache.jena.riot.system.StreamRDF ; @@ -64,7 +64,7 @@ public void triple(Triple triple) // Node p = triple.getPredicate() ; // Node o = triple.getObject() ; - if ( ! Lib.equal(s, currentSubject) ) + if ( ! Objects.equals(s, currentSubject) ) { if ( currentSubject != null ) finishBatchTriple(currentSubject) ; @@ -110,7 +110,7 @@ public void quad(Quad quad) // Node p = triple.getPredicate() ; // Node o = triple.getObject() ; - if ( ! Lib.equal(g, currentGraph) || ! Lib.equal(s, currentSubject) ) + if ( ! Objects.equals(g, currentGraph) || ! Objects.equals(s, currentSubject) ) { if ( currentSubject != null ) finishBatchQuad(currentGraph, currentSubject) ; diff --git a/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadBracedOutput.java b/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadBracedOutput.java index 0e0c8afc789..0841c50fec6 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadBracedOutput.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/out/SinkQuadBracedOutput.java @@ -19,10 +19,10 @@ package org.apache.jena.riot.out ; import java.io.OutputStream ; +import java.util.Objects; import org.apache.jena.atlas.io.IndentedWriter ; import org.apache.jena.atlas.lib.Closeable ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.lib.Sink ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -83,7 +83,7 @@ public void send(Node graphName, Triple triple) { graphName = null ; } - if ( !Lib.equal(currentGraph, graphName) ) { + if ( !Objects.equals(currentGraph, graphName) ) { if ( null != currentGraph ) { out.decIndent(BLOCK_INDENT) ; out.println("}") ; diff --git a/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java b/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java index 4f39429b4cc..704654595d2 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/tokens/Token.java @@ -27,7 +27,6 @@ import static org.apache.jena.atlas.lib.Chars.CH_RBRACKET ; import static org.apache.jena.atlas.lib.Chars.CH_RPAREN ; import static org.apache.jena.atlas.lib.Chars.CH_SEMICOLON ; -import static org.apache.jena.atlas.lib.Lib.equal ; import static org.apache.jena.atlas.lib.Lib.hashCodeObject ; import static org.apache.jena.riot.tokens.TokenType.BNODE ; import static org.apache.jena.riot.tokens.TokenType.DECIMAL ; @@ -41,6 +40,7 @@ import java.util.ArrayList ; import java.util.List ; +import java.util.Objects; import org.apache.jena.atlas.io.PeekReader ; import org.apache.jena.atlas.iterator.Iter ; @@ -498,10 +498,10 @@ public boolean equals(Object other) { if ( ! ( other instanceof Token ) ) return false ; Token t = (Token)other ; - return equal(tokenType, t.tokenType) && - equal(tokenImage, t.tokenImage) && - equal(tokenImage2, t.tokenImage2) && - equal(cntrlCode, t.cntrlCode) ; + return Objects.equals(tokenType, t.tokenType) && + Objects.equals(tokenImage, t.tokenImage) && + Objects.equals(tokenImage2, t.tokenImage2) && + Objects.equals(cntrlCode, t.cntrlCode) ; } public static Token tokenForChar(char character) diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleShell.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleShell.java index e3acd101a3b..9b1bb21e213 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleShell.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/TurtleShell.java @@ -38,7 +38,6 @@ import org.apache.jena.atlas.io.IndentedWriter ; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.lib.InternalErrorException ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.lib.Pair ; import org.apache.jena.atlas.lib.SetUtils ; import org.apache.jena.graph.Graph ; @@ -299,14 +298,14 @@ private boolean quadsThisGraph(Iterator iter) { if ( ! isDefaultGraph(graphName) ) return false ; } else { - if ( ! Lib.equal(gn, graphName) ) + if ( ! Objects.equals(gn, graphName) ) // Not both same named graph return false ; } // Check rest of iterator. for ( ; iter.hasNext() ; ) { Quad q2 = iter.next() ; - if ( ! Lib.equal(gn, q2.getGraph()) ) + if ( ! Objects.equals(gn, q2.getGraph()) ) return false ; } return true ; diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java index fb16ceeb62f..87573d5770b 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBatched.java @@ -22,9 +22,9 @@ import java.io.Writer ; import java.util.ArrayList ; import java.util.List ; +import java.util.Objects; import org.apache.jena.atlas.io.IndentedWriter ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; import org.apache.jena.sparql.core.Quad ; @@ -79,7 +79,7 @@ protected final void print(Quad quad) { Node g = quad.getGraph() ; Node s = quad.getSubject() ; - if ( !Lib.equal(g, currentGraph) || !Lib.equal(s, currentSubject) ) { + if ( !Objects.equals(g, currentGraph) || !Objects.equals(s, currentSubject) ) { if ( currentSubject != null ) { if ( currentGraph == null ) finishBatchTriples(currentSubject) ; @@ -96,7 +96,7 @@ protected final void print(Quad quad) { @Override protected final void print(Triple triple) { Node s = triple.getSubject() ; - if ( !Lib.equal(s, currentSubject) ) { + if ( !Objects.equals(s, currentSubject) ) { if ( currentSubject != null ) finishBatchTriples(currentSubject) ; startBatchTriple(s) ; diff --git a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java index 6173bdbf480..64b4297add4 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/writer/WriterStreamRDFBlocks.java @@ -18,15 +18,13 @@ package org.apache.jena.riot.writer; -import static org.apache.jena.atlas.lib.Lib.equal ; - import java.io.OutputStream ; import java.io.Writer ; import java.util.Collection ; import java.util.List ; +import java.util.Objects; import org.apache.jena.atlas.io.IndentedWriter ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; import org.apache.jena.riot.other.GLib ; @@ -85,7 +83,7 @@ public WriterStreamRDFBlocks(IndentedWriter output) { protected void printBatchQuads(Node g, Node s, List quads) { if ( g == null ) g = Quad.defaultGraphNodeGenerated ; - if ( Lib.equal(g, lastGraph) ) { + if ( Objects.equals(g, lastGraph) ) { // Same graph, different subject. out.println(" .") ; out.println() ; @@ -195,7 +193,7 @@ protected void endGraph(Node g) { return ; // End of graph - if ( !equal(lastGraph, g) ) { + if ( !Objects.equals(lastGraph, g) ) { boolean NL_END = (dftGraph(g) ? NL_GDFT_END : NL_GNMD_END) ; if ( lastSubject != null ) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpAssign.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpAssign.java index 290af42cfde..8eafaca9e98 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpAssign.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpAssign.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.algebra.op ; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.algebra.OpVisitor ; import org.apache.jena.sparql.algebra.Transform ; @@ -108,7 +109,7 @@ public boolean equalTo(Op other, NodeIsomorphismMap labelMap) { return false ; OpAssign assign = (OpAssign)other ; - if ( !Lib.equal(assignments, assign.assignments) ) + if ( !Objects.equals(assignments, assign.assignments) ) return false ; return getSubOp().equalTo(assign.getSubOp(), labelMap) ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpExtend.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpExtend.java index 32c4daf3cd8..88c1cbe835f 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpExtend.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpExtend.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.algebra.op ; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.algebra.OpVisitor ; import org.apache.jena.sparql.algebra.Transform ; @@ -112,7 +113,7 @@ public boolean equalTo(Op other, NodeIsomorphismMap labelMap) { return false ; OpExtend assign = (OpExtend)other ; - if ( !Lib.equal(assignments, assign.assignments) ) + if ( !Objects.equals(assignments, assign.assignments) ) return false ; return getSubOp().equalTo(assign.getSubOp(), labelMap) ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpGroup.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpGroup.java index b80c0f1702b..73b2a9c9ffe 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpGroup.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpGroup.java @@ -19,8 +19,8 @@ package org.apache.jena.sparql.algebra.op; import java.util.List ; +import java.util.Objects; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.algebra.OpVisitor ; import org.apache.jena.sparql.algebra.Transform ; @@ -71,9 +71,9 @@ public boolean equalTo(Op other, NodeIsomorphismMap labelMap) { if ( ! (other instanceof OpGroup) ) return false ; OpGroup opGroup = (OpGroup)other ; - if ( ! Lib.equal(groupVars, opGroup.groupVars) ) + if ( ! Objects.equals(groupVars, opGroup.groupVars) ) return false ; - if ( ! Lib.equal(aggregators, opGroup.aggregators) ) + if ( ! Objects.equals(aggregators, opGroup.aggregators) ) return false ; return getSubOp().equalTo(opGroup.getSubOp(), labelMap) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpLabel.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpLabel.java index 2d9449f2a0d..d2f47641dcd 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpLabel.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpLabel.java @@ -18,6 +18,8 @@ package org.apache.jena.sparql.algebra.op; +import java.util.Objects; + import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.algebra.OpVisitor ; @@ -51,10 +53,10 @@ public boolean equalTo(Op other, NodeIsomorphismMap labelMap) { if ( !(other instanceof OpLabel) ) return false ; OpLabel opLabel = (OpLabel)other ; - if ( !Lib.equal(object, opLabel.object) ) + if ( !Objects.equals(object, opLabel.object) ) return false ; - return Lib.equal(getSubOp(), opLabel.getSubOp()) ; + return Objects.equals(getSubOp(), opLabel.getSubOp()) ; } @Override diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpProject.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpProject.java index 978a48f09c6..8b8eda2945c 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpProject.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/op/OpProject.java @@ -20,8 +20,8 @@ import java.util.ArrayList ; import java.util.List ; +import java.util.Objects; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.algebra.OpVisitor ; import org.apache.jena.sparql.algebra.Transform ; @@ -63,7 +63,7 @@ public boolean equalTo(Op other, NodeIsomorphismMap labelMap) { if ( ! (other instanceof OpProject) ) return false ; OpProject opProject = (OpProject)other ; - if ( ! Lib.equal(vars, opProject.vars ) ) + if ( ! Objects.equals(vars, opProject.vars ) ) return false ; return getSubOp().equalTo(opProject.getSubOp(), labelMap) ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterPlacement.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterPlacement.java index 9dff9963aa1..fb904123361 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterPlacement.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterPlacement.java @@ -21,6 +21,7 @@ import java.util.Collection ; import java.util.Iterator ; import java.util.List ; +import java.util.Objects; import java.util.Set ; import org.apache.jena.atlas.lib.CollectionUtils ; @@ -68,7 +69,7 @@ public boolean equals(Object obj) { if ( obj == null ) return false ; if ( getClass() != obj.getClass() ) return false ; Placement other = (Placement)obj ; - return Lib.equal(op, other.op) && Lib.equal(unplaced, other.unplaced) ; + return Objects.equals(op, other.op) && Objects.equals(unplaced, other.unplaced) ; } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetChangesBatched.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetChangesBatched.java index af1ad1f679a..5e71afd7f42 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetChangesBatched.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetChangesBatched.java @@ -20,8 +20,8 @@ import java.util.ArrayList ; import java.util.List ; +import java.util.Objects; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Node ; /** Collect a stream of DatasetChanges into batches. @@ -69,9 +69,9 @@ public void change(QuadAction qaction, Node g, Node s, Node p, Node o) startBatch() ; // Drop and through and include in the current batch. } - else if ( ! Lib.equal(currentAction, qaction) || - ! Lib.equal(currentGraph, g) || - ! Lib.equal(currentSubject, s) ) + else if ( ! Objects.equals(currentAction, qaction) || + ! Objects.equals(currentGraph, g) || + ! Objects.equals(currentSubject, s) ) { finishBatch() ; startBatch() ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphCollection.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphCollection.java index b48769b7b62..7b66d64d7eb 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphCollection.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphCollection.java @@ -19,10 +19,10 @@ package org.apache.jena.sparql.core; import java.util.Iterator ; +import java.util.Objects; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.iterator.IteratorConcat; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Node ; import org.apache.jena.shared.JenaException ; @@ -100,7 +100,7 @@ public void clear() { protected Graph fetchGraph(Node gn) { - if ( Quad.isDefaultGraph(gn) || Lib.equal(gn,Quad.tripleInQuad)) // Not preferred style + if ( Quad.isDefaultGraph(gn) || Objects.equals(gn,Quad.tripleInQuad)) // Not preferred style return getDefaultGraph() ; else return getGraph(gn) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/Prologue.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/Prologue.java index c2a839b8db0..ca4ff735d08 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/Prologue.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/Prologue.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.core; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.atlas.logging.Log ; import org.apache.jena.riot.system.IRIResolver ; import org.apache.jena.shared.PrefixMapping ; @@ -137,7 +138,7 @@ public void setPrefix(String prefix, String expansion) // Removal may involve regeneration of the reverse mapping // so only do if needed. String oldExpansion = prefixMap.getNsPrefixURI(prefix) ; - if ( Lib.equal(oldExpansion, expansion) ) + if ( Objects.equals(oldExpansion, expansion) ) return ; if ( oldExpansion != null ) prefixMap.removeNsPrefix(prefix) ; @@ -199,7 +200,7 @@ public boolean samePrologue(Prologue other) { // Prologue are mutable and superclasses so .equals is left as the default. String base1 = explicitlySetBaseURI() ? getBaseURI() : null ; String base2 = other.explicitlySetBaseURI() ? other.getBaseURI() : null ; - if (! Lib.equal(base1, base2) ) + if (! Objects.equals(base1, base2) ) return false ; if ( getPrefixMapping() == null && other.getPrefixMapping() == null ) return true ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java index 8720fc670cb..f21266d2688 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/Quad.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.core; -import static org.apache.jena.atlas.lib.Lib.equal ; +import java.util.Objects; + import org.apache.jena.graph.Node ; import org.apache.jena.graph.NodeFactory ; import org.apache.jena.graph.Triple ; @@ -138,7 +139,7 @@ public boolean isDefaultGraph() public boolean isUnionGraph() { return isUnionGraph(graph) ; } /** Is it really a triple? */ - public boolean isTriple() { return equal(graph, tripleInQuad) ; } + public boolean isTriple() { return Objects.equals(graph, tripleInQuad) ; } /** Is this quad a legal data quad (legal data triple, IRI for graph) */ public boolean isLegalAsData() @@ -190,7 +191,7 @@ public boolean equals(Object other) return false ; Quad quad = (Quad)other ; - if ( ! equal(graph, quad.graph) ) return false ; + if ( ! Objects.equals(graph, quad.graph) ) return false ; if ( ! subject.equals(quad.subject) ) return false ; if ( ! predicate.equals(quad.predicate) ) return false ; if ( ! object.equals(quad.object) ) return false ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/QueryCompare.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/QueryCompare.java index b64209edd7c..a2c2ea95024 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/QueryCompare.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/QueryCompare.java @@ -18,6 +18,8 @@ package org.apache.jena.sparql.core ; +import java.util.Objects; + import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.query.Query ; import org.apache.jena.query.QueryVisitor ; @@ -171,7 +173,7 @@ public void finishVisit(Query query1) private void check(String msg, Object obj1, Object obj2) { - check(msg, Lib.equal(obj1,obj2)) ; + check(msg, Objects.equals(obj1,obj2)) ; } private void check(String msg, boolean b) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/VarExprList.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/VarExprList.java index a45e154c37c..3e641f74a6c 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/VarExprList.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/VarExprList.java @@ -22,8 +22,8 @@ import java.util.HashMap ; import java.util.List ; import java.util.Map ; +import java.util.Objects; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Node ; import org.apache.jena.sparql.ARQInternalErrorException ; import org.apache.jena.sparql.engine.binding.Binding ; @@ -141,7 +141,7 @@ public boolean equals(Object other) if ( ! ( other instanceof VarExprList ) ) return false ; VarExprList x = (VarExprList)other ; - return Lib.equal(vars, x.vars) && Lib.equal(exprs, x.exprs) ; + return Objects.equals(vars, x.vars) && Objects.equals(exprs, x.exprs) ; } @Override diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java index e16e786822f..cc024b86a29 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java @@ -19,9 +19,9 @@ package org.apache.jena.sparql.engine.binding; import java.util.Iterator ; +import java.util.Objects; import org.apache.jena.atlas.iterator.IteratorConcat ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Node ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.util.FmtUtils ; @@ -219,7 +219,7 @@ public static boolean equals(Binding bind1, Binding bind2) Var var = iter1.next() ; Node node1 = bind1.get(var) ; Node node2 = bind2.get(var) ; - if ( ! Lib.equal(node1, node2) ) + if ( ! Objects.equals(node1, node2) ) return false ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java index 5f1794ecdeb..24a2fa5724a 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java @@ -18,8 +18,7 @@ package org.apache.jena.sparql.expr; -import static org.apache.jena.atlas.lib.Lib.equal ; - +import java.util.Objects; import java.util.function.Function; import org.apache.jena.atlas.lib.Lib ; @@ -80,9 +79,9 @@ public boolean equals(Object other) if ( ! ( other instanceof ExprAggregator ) ) return false ; ExprAggregator agg = (ExprAggregator)other ; - if ( ! equal(var, agg.var) ) + if ( ! Objects.equals(var, agg.var) ) return false ; - return equal(aggregator, agg.aggregator) ; + return Objects.equals(aggregator, agg.aggregator) ; } // Ensure no confusion - in an old design, an ExprAggregator was a subclass of ExprVar. diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java index a9a8f599c0c..f568d89a7d7 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java @@ -20,8 +20,8 @@ import java.util.ArrayList ; import java.util.List ; +import java.util.Objects; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.sparql.serializer.SerializationContext ; /** A function in the expression hierarchy. @@ -98,7 +98,7 @@ public boolean equals(Object other) { Expr a1 = this.getArg(i) ; Expr a2 = ex.getArg(i) ; - if ( ! Lib.equal(a1, a2) ) + if ( ! Objects.equals(a1, a2) ) return false ; } return true ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java index cc093015944..db3c0f9c791 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggCustom.java @@ -19,9 +19,9 @@ package org.apache.jena.sparql.expr.aggregate; import java.util.Locale ; +import java.util.Objects; import org.apache.jena.atlas.io.IndentedLineBuffer ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Node ; import org.apache.jena.query.QueryExecException ; import org.apache.jena.sparql.engine.binding.Binding ; @@ -142,9 +142,9 @@ public boolean equals(Object other) return false ; AggCustom agg = (AggCustom)other ; return - Lib.equal(this.iri, agg.iri) && + Objects.equals(this.iri, agg.iri) && this.isDistinct == agg.isDistinct && - Lib.equal(this.getExprList(), agg.getExprList()) ; + Objects.equals(this.getExprList(), agg.getExprList()) ; } public static Accumulator createAccNull() { return new AccCustom() ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java index 9d076d1fc31..700b18c53f5 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcat.java @@ -18,8 +18,9 @@ package org.apache.jena.sparql.expr.aggregate; +import java.util.Objects; + import org.apache.jena.atlas.io.IndentedLineBuffer ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.lib.StrUtils ; import org.apache.jena.graph.Node ; import org.apache.jena.sparql.engine.binding.Binding ; @@ -129,7 +130,7 @@ public boolean equals(Object other) if ( ! ( other instanceof AggGroupConcat ) ) return false ; AggGroupConcat agg = (AggGroupConcat)other ; - return Lib.equal(agg.getSeparator(),getSeparator()) && agg.getExpr().equals(getExpr()) ; + return Objects.equals(agg.getSeparator(),getSeparator()) && agg.getExpr().equals(getExpr()) ; } // ---- Accumulator diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java index 9f995944e34..ad3b4223cc4 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggGroupConcatDistinct.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.expr.aggregate; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.graph.Node ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.expr.Expr ; @@ -80,7 +81,7 @@ public boolean equals(Object other) if ( ! ( other instanceof AggGroupConcatDistinct ) ) return false ; AggGroupConcatDistinct agg = (AggGroupConcatDistinct)other ; - return Lib.equal(agg.getSeparator(),getSeparator()) && agg.getExpr().equals(getExpr()) ; + return Objects.equals(agg.getSeparator(),getSeparator()) && agg.getExpr().equals(getExpr()) ; } // ---- Accumulator diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMax.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMax.java index acf31a5b14d..539a1ab1771 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMax.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMax.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.expr.aggregate; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; @@ -39,6 +40,6 @@ public boolean equals(Object other) if ( ! ( other instanceof AggMax ) ) return false ; AggMax agg = (AggMax)other ; - return Lib.equal(exprList, agg.exprList) ; + return Objects.equals(exprList, agg.exprList) ; } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxDistinct.java index f3c576ae8ec..c994c2c0a80 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxDistinct.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMaxDistinct.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.expr.aggregate; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; @@ -39,7 +40,7 @@ public boolean equals(Object other) if ( ! ( other instanceof AggMaxDistinct ) ) return false ; AggMaxDistinct agg = (AggMaxDistinct)other ; - return Lib.equal(exprList, agg.exprList) ; + return Objects.equals(exprList, agg.exprList) ; } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMin.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMin.java index f5a567f81ea..79e634a52b2 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMin.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMin.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.expr.aggregate; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; @@ -39,6 +40,6 @@ public boolean equals(Object other) if ( ! ( other instanceof AggMin ) ) return false ; AggMin agg = (AggMin)other ; - return Lib.equal(exprList, agg.exprList) ; + return Objects.equals(exprList, agg.exprList) ; } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinDistinct.java index c7c388c29da..be774d756fa 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinDistinct.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggMinDistinct.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.expr.aggregate; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; @@ -38,6 +39,6 @@ public boolean equals(Object other) if ( ! ( other instanceof AggMinDistinct ) ) return false ; AggMinDistinct agg = (AggMinDistinct)other ; - return Lib.equal(exprList, agg.exprList) ; + return Objects.equals(exprList, agg.exprList) ; } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java index 912ff39dc4b..c153af0e122 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggSample.java @@ -18,7 +18,8 @@ package org.apache.jena.sparql.expr.aggregate; -import org.apache.jena.atlas.lib.Lib ; +import java.util.Objects; + import org.apache.jena.graph.Node ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.expr.Expr ; @@ -52,7 +53,7 @@ public boolean equals(Object other) if ( ! ( other instanceof AggSample ) ) return false ; AggSample agg = (AggSample)other ; - return Lib.equal(this.exprList, agg.exprList) ; + return Objects.equals(this.exprList, agg.exprList) ; } // ---- Accumulator diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java index 94314c26781..34ba4fb23bb 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java @@ -21,6 +21,7 @@ import java.util.ArrayList ; import java.util.Iterator ; import java.util.List ; +import java.util.Objects; import java.util.function.Function; import org.apache.jena.atlas.iterator.Iter ; @@ -39,8 +40,6 @@ import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; -import static org.apache.jena.atlas.lib.Lib.equal ; - public class NodeTransformLib { /** Do a node->node conversion of an Op - return original BGP for "no change" */ @@ -180,7 +179,7 @@ public static VarExprList transform(Function nodeTransform, VarExprL Var v2 = (Var)nodeTransform.apply(v) ; Expr expr2 = ( expr != null ) ? transform(nodeTransform, expr) : null ; - if ( ! equal(v, v2) || ! equal(expr, expr2) ) + if ( ! Objects.equals(v, v2) || ! Objects.equals(expr, expr2) ) changed = true ; varExprList2.add(v2, expr2) ; } @@ -197,7 +196,7 @@ public static List transformVars(Function nodeTransform, List iter = PathEval.eval(graph, subject, path, execCxt.getContext()) ; - Predicate filter = node -> Lib.equal(node, object); + Predicate filter = node -> Objects.equals(node, object); // See if we got to the node we're interested in finishing at. iter = Iter.filter(iter, filter) ; long x = Iter.count(iter) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java index 99413a58178..d0dfa27a92b 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java @@ -19,8 +19,8 @@ package org.apache.jena.sparql.resultset; import java.util.* ; + import org.apache.jena.atlas.iterator.Iter ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.graph.Node ; import org.apache.jena.query.* ; import org.apache.jena.rdf.model.Model ; @@ -333,7 +333,7 @@ public boolean equal(Node n1, Node n2) { private static class EqualityTestExact implements EqualityTest { @Override public boolean equal(Node n1, Node n2) { - return Lib.equal(n1, n2) ; + return Objects.equals(n1, n2) ; } } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java index d9c14ab0d25..73756dcc45b 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Action.java @@ -21,6 +21,7 @@ import java.util.function.Consumer; /** + * @deprecated * Prefer {@link Consumer} */ @Deprecated diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java index 689f5bc8707..8545eabe54d 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Filter.java @@ -21,6 +21,7 @@ import java.util.function.Predicate; /** + * @deprecated * Prefer {@link Predicate}. */ @FunctionalInterface diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java index e2bc4b49d44..f4c0ddf48f1 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/FilterDistinctAdjacent.java @@ -18,10 +18,9 @@ package org.apache.jena.atlas.iterator; +import java.util.Objects; import java.util.function.Predicate; -import org.apache.jena.atlas.lib.Lib ; - public class FilterDistinctAdjacent implements Predicate { private boolean isSet = false ; @@ -30,7 +29,7 @@ public class FilterDistinctAdjacent implements Predicate @Override public boolean test(T item) { - if ( isSet && Lib.equal(last, item) ) + if ( isSet && Objects.equals(last, item) ) return false ; last = item ; isSet = true ; diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java index 70a8f26b36e..2c97ca73f40 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/IteratorArray.java @@ -21,10 +21,10 @@ import java.util.Arrays; import java.util.Iterator ; import java.util.NoSuchElementException ; -import java.util.Spliterator; /** Iterator over a Java base array */ /** + * @deprecated * Prefer {@link Arrays#asList(Object...)} with {@link Iterable#iterator()} or * {@link Arrays#spliterator(Object[])} or {@link Arrays#stream(Object[])} */ diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java index 67fc3afe702..2a070ab2957 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Transform.java @@ -21,6 +21,7 @@ import java.util.function.Function; /** + * @deprecated * Prefer {@link Function}. */ @Deprecated diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java index e2f6dfdef99..2b6002a0171 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Closeable.java @@ -21,7 +21,7 @@ /** Close this object. * This form does not allow Exceptions (it does allow RuntimeExceptions). */ -public interface Closeable extends java.io.Closeable +public interface Closeable { public void close() ; } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java index a866d5935a9..181fe885fa8 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java @@ -37,6 +37,7 @@ public static final void sync(Object object) } /** Return true if obj1 and obj are both null or are .equals, else return false + * @deprecated * Prefer {@link Objects#equal(Object, Object)} */ @Deprecated diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Pair.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Pair.java index 4f3b0558284..b472f3d2498 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Pair.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Pair.java @@ -21,6 +21,8 @@ import static org.apache.jena.atlas.lib.Lib.hashCodeObject ; import static org.apache.jena.atlas.lib.StrUtils.str ; +import java.util.Objects; + public class Pair { public static Pair create(L x, R y) { return new Pair<>(x,y) ; } @@ -54,7 +56,7 @@ public boolean equals(Object other) if( ! ( other instanceof Pair ) ) return false ; Pair p2 = (Pair)other ; - return Lib.equal(car(), p2.car()) && Lib.equal(cdr(), p2.cdr()) ; + return Objects.equals(car(), p2.car()) && Objects.equals(cdr(), p2.cdr()) ; } @Override diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java index ffa6e0aa85e..31436b1bc7b 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/cache/Cache1.java @@ -19,12 +19,12 @@ package org.apache.jena.atlas.lib.cache; import java.util.Iterator ; +import java.util.Objects; import java.util.concurrent.Callable ; import java.util.function.BiConsumer; import org.apache.jena.atlas.iterator.SingletonIterator ; import org.apache.jena.atlas.lib.Cache ; -import org.apache.jena.atlas.lib.Lib ; /** A one-slot cache.*/ public class Cache1 implements Cache @@ -85,7 +85,7 @@ public Iterator keys() @Override public void put(K key, V thing) { - if ( Lib.equal(cacheKey, key) && Lib.equal(cacheValue, thing) ) + if ( Objects.equals(cacheKey, key) && Objects.equals(cacheValue, thing) ) // No change. return ; diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java index 2ee8248b89c..995c5d7bc71 100644 --- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java +++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/FusekiCmd.java @@ -23,10 +23,10 @@ import java.io.File ; import java.io.InputStream ; import java.util.List ; +import java.util.Objects; import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.lib.FileOps ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.lib.StrUtils ; import org.apache.jena.atlas.logging.LogCtl ; import org.apache.jena.fuseki.mgt.ManagementServer ; @@ -47,6 +47,7 @@ import org.apache.jena.tdb.transaction.TransactionManager ; import org.eclipse.jetty.server.Server ; import org.slf4j.Logger ; + import arq.cmd.ArgDecl ; import arq.cmd.CmdException ; import arq.cmdline.CmdARQ ; @@ -289,7 +290,7 @@ protected void processModulesAndArgs() { String dir = getValue(argTDB) ; - if ( Lib.equal(dir, Names.memName) ) { + if ( Objects.equals(dir, Names.memName) ) { log.info("TDB dataset: in-memory") ; } else { if ( ! FileOps.exists(dir) ) diff --git a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java index 4278426d7c8..35daf7065ce 100644 --- a/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java +++ b/jena-fuseki1/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java @@ -19,7 +19,6 @@ package org.apache.jena.fuseki.servlets; import static java.lang.String.format ; -import static org.apache.jena.atlas.lib.Lib.equal ; import static org.apache.jena.fuseki.servlets.ServletBase.errorBadRequest ; import static org.apache.jena.fuseki.servlets.ServletBase.errorOccurred ; import static org.apache.jena.fuseki.servlets.ServletBase.log ; @@ -27,6 +26,7 @@ import java.io.IOException ; import java.util.HashMap ; import java.util.Map ; +import java.util.Objects; import javax.servlet.ServletOutputStream ; import javax.servlet.http.HttpServletRequest ; @@ -129,7 +129,7 @@ public static void doResponseResultSet(HttpAction action, ResultSet resultSet, P // Stylesheet - change to application/xml. final String stylesheetURL = ResponseOps.paramStylesheet(request) ; - if ( stylesheetURL != null && equal(serializationType,WebContent.contentTypeResultsXML) ) + if ( stylesheetURL != null && Objects.equals(serializationType,WebContent.contentTypeResultsXML) ) contentType = WebContent.contentTypeXML ; // Force to text/plain? @@ -139,17 +139,17 @@ public static void doResponseResultSet(HttpAction action, ResultSet resultSet, P // Better : dispatch on MediaType // Fuseki2 uses the SPARQL parser/write registry. - if ( equal(serializationType, WebContent.contentTypeResultsXML) ) + if ( Objects.equals(serializationType, WebContent.contentTypeResultsXML) ) sparqlXMLOutput(action, contentType, resultSet, stylesheetURL, booleanResult) ; - else if ( equal(serializationType, WebContent.contentTypeResultsJSON) ) + else if ( Objects.equals(serializationType, WebContent.contentTypeResultsJSON) ) jsonOutput(action, contentType, resultSet, booleanResult) ; - else if ( equal(serializationType, WebContent.contentTypeTextPlain) ) + else if ( Objects.equals(serializationType, WebContent.contentTypeTextPlain) ) textOutput(action, contentType, resultSet, qPrologue, booleanResult) ; - else if ( equal(serializationType, WebContent.contentTypeTextCSV) ) + else if ( Objects.equals(serializationType, WebContent.contentTypeTextCSV) ) csvOutput(action, contentType, resultSet, booleanResult) ; - else if (equal(serializationType, WebContent.contentTypeTextTSV) ) + else if (Objects.equals(serializationType, WebContent.contentTypeTextTSV) ) tsvOutput(action, contentType, resultSet, booleanResult) ; - else if (equal(serializationType, WebContent.contentTypeResultsThrift) ) + else if (Objects.equals(serializationType, WebContent.contentTypeResultsThrift) ) thriftOutput(action, contentType, resultSet, booleanResult) ; else errorBadRequest("Can't determine output serialization: "+serializationType) ; diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java index 70a02e0a1eb..f6488c5a30b 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java @@ -29,13 +29,14 @@ import java.util.HashMap ; import java.util.List ; import java.util.Map ; +import java.util.Objects; import arq.cmd.CmdException ; + import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.lib.DS ; import org.apache.jena.atlas.lib.FileOps ; import org.apache.jena.atlas.lib.InternalErrorException ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.fuseki.Fuseki ; import org.apache.jena.fuseki.FusekiConfigException ; import org.apache.jena.fuseki.build.Builder ; @@ -256,7 +257,7 @@ private static List initServerConfiguration(ServerInitialConfig Fuseki.configLog.info("Template file: " + params.templateFile) ; String dir = params.params.get(Template.DIR) ; if ( dir != null ) { - if ( Lib.equal(dir, Names.memName) ) { + if ( Objects.equals(dir, Names.memName) ) { Fuseki.configLog.info("TDB dataset: in-memory") ; } else { if ( !FileOps.exists(dir) ) diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java index 2ab529bcc97..e22ab139793 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java +++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java @@ -19,7 +19,6 @@ package org.apache.jena.fuseki.servlets; import static java.lang.String.format ; -import static org.apache.jena.atlas.lib.Lib.equal ; import static org.apache.jena.riot.WebContent.charsetUTF8 ; import static org.apache.jena.riot.WebContent.contentTypeRDFXML ; import static org.apache.jena.riot.WebContent.contentTypeResultsJSON ; @@ -33,6 +32,7 @@ import java.io.IOException ; import java.util.HashMap ; import java.util.Map ; +import java.util.Objects; import javax.servlet.ServletOutputStream ; import javax.servlet.http.HttpServletRequest ; @@ -134,7 +134,7 @@ public static void doResponseResultSet(HttpAction action, ResultSet resultSet, P // Stylesheet - change to application/xml. final String stylesheetURL = ResponseOps.paramStylesheet(request) ; - if ( stylesheetURL != null && equal(serializationType,contentTypeResultsXML) ) + if ( stylesheetURL != null && Objects.equals(serializationType,contentTypeResultsXML) ) contentType = contentTypeXML ; // Force to text/plain? @@ -143,17 +143,17 @@ public static void doResponseResultSet(HttpAction action, ResultSet resultSet, P contentType = contentTypeTextPlain ; // Better : dispatch on MediaType - if ( equal(serializationType, contentTypeResultsXML) ) + if ( Objects.equals(serializationType, contentTypeResultsXML) ) sparqlXMLOutput(action, contentType, resultSet, stylesheetURL, booleanResult) ; - else if ( equal(serializationType, contentTypeResultsJSON) ) + else if ( Objects.equals(serializationType, contentTypeResultsJSON) ) jsonOutput(action, contentType, resultSet, booleanResult) ; - else if ( equal(serializationType, contentTypeTextPlain) ) + else if ( Objects.equals(serializationType, contentTypeTextPlain) ) textOutput(action, contentType, resultSet, qPrologue, booleanResult) ; - else if ( equal(serializationType, contentTypeTextCSV) ) + else if ( Objects.equals(serializationType, contentTypeTextCSV) ) csvOutput(action, contentType, resultSet, booleanResult) ; - else if (equal(serializationType, contentTypeTextTSV) ) + else if (Objects.equals(serializationType, contentTypeTextTSV) ) tsvOutput(action, contentType, resultSet, booleanResult) ; - else if (equal(serializationType, WebContent.contentTypeResultsThrift) ) + else if (Objects.equals(serializationType, WebContent.contentTypeResultsThrift) ) thriftOutput(action, contentType, resultSet, booleanResult) ; else ServletOps.errorBadRequest("Can't determine output serialization: "+serializationType) ; diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/util/Pair.java b/jena-sdb/src/main/java/org/apache/jena/sdb/util/Pair.java index 5228e98bba0..acd5abec50c 100644 --- a/jena-sdb/src/main/java/org/apache/jena/sdb/util/Pair.java +++ b/jena-sdb/src/main/java/org/apache/jena/sdb/util/Pair.java @@ -20,7 +20,8 @@ import static org.apache.jena.atlas.lib.Lib.hashCodeObject ; import static org.apache.jena.atlas.lib.StrUtils.str ; -import org.apache.jena.atlas.lib.Lib ; + +import java.util.Objects; public class Pair { @@ -53,7 +54,7 @@ public boolean equals(Object other) if( ! ( other instanceof Pair ) ) return false ; Pair p2 = (Pair)other ; - return Lib.equal(car(), p2.car()) && Lib.equal(cdr(), p2.cdr()) ; + return Objects.equals(car(), p2.car()) && Objects.equals(cdr(), p2.cdr()) ; } @Override diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/Location.java b/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/Location.java index 780ec0dc89b..a012a5cd539 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/Location.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/Location.java @@ -20,8 +20,8 @@ import java.io.File ; import java.io.IOException ; +import java.util.Objects; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.tdb.sys.Names ; /** @@ -256,7 +256,7 @@ public boolean equals(Object obj) { if ( isMemUnique ) return false ; - return Lib.equal(pathname, other.pathname) ; + return Objects.equals(pathname, other.pathname) ; } @Override diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/MetaFile.java b/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/MetaFile.java index 66d979a778c..4062f0163a0 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/MetaFile.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/base/file/MetaFile.java @@ -25,6 +25,7 @@ import java.io.InputStream ; import java.io.PrintStream ; import java.util.Comparator ; +import java.util.Objects; import java.util.Properties ; import java.util.SortedSet ; import java.util.TreeSet ; @@ -160,7 +161,7 @@ public void setProperty(String key, int value) /** Test whether a property has a value. Null tests equal to not present. */ public boolean propertyEquals(String key, String value) { - return Lib.equal(getProperty(key), value) ; + return Objects.equals(getProperty(key), value) ; } /** Set property if not already set. */ @@ -201,7 +202,7 @@ public void checkMetadata(String key, String expected) { String value = getProperty(key) ; - if ( ! Lib.equal(value, value) ) + if ( ! Objects.equals(value, value) ) inconsistent(key, value, expected) ; } diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java b/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java index 3196182aaab..9662c035456 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java @@ -23,12 +23,12 @@ import java.io.OutputStream ; import java.util.Arrays ; import java.util.List ; +import java.util.Objects; import org.apache.jena.atlas.AtlasException ; import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.lib.DateTimeUtils ; import org.apache.jena.atlas.lib.FileOps ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.logging.LogCtl ; import org.apache.jena.atlas.logging.ProgressLogger ; import org.apache.jena.graph.Node ; @@ -50,6 +50,7 @@ import org.apache.jena.tdb.store.nodetupletable.NodeTupleTable ; import org.apache.jena.tdb.sys.Names ; import org.slf4j.Logger ; + import tdb.cmdline.CmdTDB ; import arq.cmd.ArgDecl ; import arq.cmd.CmdException ; @@ -107,7 +108,7 @@ protected void processModulesAndArgs() if ( dataFileQuads == null ) dataFileQuads = location.getPath("quads", "tmp") ; - if ( Lib.equal(dataFileTriples, dataFileQuads) ) + if ( Objects.equals(dataFileTriples, dataFileQuads) ) cmdError("Triples and Quads work files are the same") ; if ( super.contains(argNoStats) ) diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/sys/FileRef.java b/jena-tdb/src/main/java/org/apache/jena/tdb/sys/FileRef.java index c16180c76fe..af7046755c1 100644 --- a/jena-tdb/src/main/java/org/apache/jena/tdb/sys/FileRef.java +++ b/jena-tdb/src/main/java/org/apache/jena/tdb/sys/FileRef.java @@ -20,10 +20,10 @@ import java.util.HashMap ; import java.util.Map ; +import java.util.Objects; import java.util.TreeMap ; import org.apache.jena.atlas.lib.FileOps ; -import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.lib.Tuple ; import org.apache.jena.atlas.logging.Log ; import org.apache.jena.tdb.TDBException ; @@ -182,7 +182,7 @@ public boolean equals(Object obj) if ( id != other.id ) return false ; // Should not be needed. - if ( ! Lib.equal(filename, other.filename) ) return false ; + if ( ! Objects.equals(filename, other.filename) ) return false ; return true ; } } From 20b83596d43cad086a5fdcc1659dad06746cb3b5 Mon Sep 17 00:00:00 2001 From: ajs6f Date: Tue, 5 May 2015 12:50:11 -0400 Subject: [PATCH 4/4] Bringing back NodeTransform --- .../org/apache/jena/sparql/engine/Rename.java | 19 ++++++------- .../org/apache/jena/sparql/expr/E_Exists.java | 6 ++-- .../apache/jena/sparql/expr/E_NotExists.java | 6 ++-- .../org/apache/jena/sparql/expr/Expr.java | 6 ++-- .../jena/sparql/expr/ExprAggregator.java | 5 ++-- .../jena/sparql/expr/ExprFunction0.java | 6 ++-- .../jena/sparql/expr/ExprFunction1.java | 6 ++-- .../jena/sparql/expr/ExprFunction2.java | 6 ++-- .../jena/sparql/expr/ExprFunction3.java | 6 ++-- .../jena/sparql/expr/ExprFunctionN.java | 6 ++-- .../org/apache/jena/sparql/expr/ExprList.java | 6 ++-- .../org/apache/jena/sparql/expr/ExprNode.java | 6 ++-- .../org/apache/jena/sparql/expr/ExprVar.java | 5 ++-- .../apache/jena/sparql/expr/NodeValue.java | 5 ++-- .../sparql/expr/aggregate/Aggregator.java | 5 ++-- .../sparql/expr/aggregate/AggregatorBase.java | 5 ++-- .../jena/sparql/graph/NodeTransform.java | 6 +--- .../jena/sparql/graph/NodeTransformLib.java | 28 +++++++++---------- .../jena/sparql/graph/NodeTransformOp.java | 6 ++-- .../NodeTransformBNodesToVariables.java | 5 ++-- .../sparql/modify/UpdateEngineWorker.java | 5 ++-- .../sparql/resultset/ResultSetCompare.java | 13 ++------- .../apache/jena/sparql/util/NodeUtils.java | 5 +++- .../jena/riot/thrift/TestResultSetThrift.java | 11 -------- .../query/rewriter/SecuredFunction.java | 5 ++-- 25 files changed, 67 insertions(+), 121 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java index bc1d4ea40e9..966941d23a3 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/Rename.java @@ -22,14 +22,13 @@ import java.util.HashMap ; import java.util.Map ; import java.util.Set ; -import java.util.function.Function; - import org.apache.jena.graph.Node ; import org.apache.jena.sparql.ARQConstants ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.graph.NodeTransformLib ; /** Support for renaming all the variables in an algebra expession @@ -49,14 +48,14 @@ public static Var chooseVarName(Var var, Collection inUse, String prefix) /** Rename one node to another */ public static Op renameNode(Op op, Node oldName, Node newName) { - Function renamer = new RenameNode(oldName, newName) ; + NodeTransform renamer = new RenameNode(oldName, newName) ; return NodeTransformLib.transform(renamer, op) ; } /** Rename one variable to another */ public static Op renameVar(Op op, Var oldName, Var newName) { - Function renamer = new RenameNode(oldName, newName) ; + NodeTransform renamer = new RenameNode(oldName, newName) ; return NodeTransformLib.transform(renamer, op) ; } @@ -76,13 +75,13 @@ public static Op renameVars(Op op, Collection constants) /** Rename all variables in an expression, EXCEPT for those named as constant */ public static ExprList renameVars(ExprList exprList, Set constants) { - Function renamer = new RenameAnyVars(constants, prefix) ; + NodeTransform renamer = new RenameAnyVars(constants, prefix) ; return NodeTransformLib.transform(renamer, exprList) ; } public static Expr renameVars(Expr expr, Set constants) { - Function renamer = new RenameAnyVars(constants, prefix) ; + NodeTransform renamer = new RenameAnyVars(constants, prefix) ; return NodeTransformLib.transform(renamer, expr) ; } @@ -90,13 +89,13 @@ public static Expr renameVars(Expr expr, Set constants) * This assumes the op was renamed by VarRename.rename */ public static Op reverseVarRename(Op op, boolean repeatedly) { - Function renamer = new UnrenameAnyVars(prefix, repeatedly) ; + NodeTransform renamer = new UnrenameAnyVars(prefix, repeatedly) ; return NodeTransformLib.transform(renamer, op) ; } // ---- Transforms that do the renaming and unrenaming. - static class RenameNode implements Function + static class RenameNode implements NodeTransform { private final Node oldName ; private final Node newName ; @@ -116,7 +115,7 @@ public Node apply(Node node) } - static class RenameAnyVars implements Function + static class RenameAnyVars implements NodeTransform { private final Map aliases = new HashMap<>() ; private final Collection constants ; @@ -151,7 +150,7 @@ public final Node apply(Node node) } /** Reverse a renaming (assuming renaming was done by prefixing variable names) */ - static class UnrenameAnyVars implements Function + static class UnrenameAnyVars implements NodeTransform { private final String varPrefix ; private final boolean repeatedly ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java index 04453504544..c33839ef7e8 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Exists.java @@ -18,15 +18,13 @@ package org.apache.jena.sparql.expr; -import java.util.function.Function; - -import org.apache.jena.graph.Node; import org.apache.jena.sparql.algebra.Algebra ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.core.Substitute ; import org.apache.jena.sparql.engine.QueryIterator ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.graph.NodeTransformLib ; import org.apache.jena.sparql.sse.Tags ; import org.apache.jena.sparql.syntax.Element ; @@ -58,7 +56,7 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(Function nodeTransform) + public Expr applyNodeTransform(NodeTransform nodeTransform) { Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ; return new E_Exists(getElement(), op2) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java index 250d105db33..e236970aeaf 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_NotExists.java @@ -18,15 +18,13 @@ package org.apache.jena.sparql.expr; -import java.util.function.Function; - -import org.apache.jena.graph.Node; import org.apache.jena.sparql.algebra.Algebra ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.core.Substitute ; import org.apache.jena.sparql.engine.QueryIterator ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.graph.NodeTransformLib ; import org.apache.jena.sparql.sse.Tags ; import org.apache.jena.sparql.syntax.Element ; @@ -59,7 +57,7 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(Function nodeTransform) + public Expr applyNodeTransform(NodeTransform nodeTransform) { Op op2 = NodeTransformLib.transform(nodeTransform, getGraphPattern()) ; return new E_NotExists(getElement(), op2) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java index 124a8422bc7..33585752546 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java @@ -20,14 +20,12 @@ import java.util.Collection ; import java.util.Set ; -import java.util.function.Function; - import javax.xml.datatype.DatatypeConstants ; -import org.apache.jena.graph.Node; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; public interface Expr { @@ -64,7 +62,7 @@ public interface Expr /** * Rewrite, applying a node->node transformation */ - public Expr applyNodeTransform(Function transform) ; + public Expr applyNodeTransform(NodeTransform transform) ; /** Deep copy */ public Expr deepCopy() ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java index 24a2fa5724a..ed79cafd01a 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprAggregator.java @@ -19,8 +19,6 @@ package org.apache.jena.sparql.expr; import java.util.Objects; -import java.util.function.Function; - import org.apache.jena.atlas.lib.Lib ; import org.apache.jena.atlas.logging.Log ; import org.apache.jena.graph.Node ; @@ -29,6 +27,7 @@ import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.expr.aggregate.Aggregator ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.serializer.SerializationContext ; /** Group aggregation functions calculated a value during grouping and @@ -108,7 +107,7 @@ public ExprAggregator copySubstitute(Binding binding) } @Override - public ExprAggregator applyNodeTransform(Function transform) + public ExprAggregator applyNodeTransform(NodeTransform transform) { // Can't rewrite this to a non-variable. Node node = transform.apply(var) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java index 696393ccde1..8175b1279b5 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction0.java @@ -18,11 +18,9 @@ package org.apache.jena.sparql.expr; -import java.util.function.Function; - -import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; /** An expression that is constant (does not depend on evaluating a sub expression). */ @@ -55,7 +53,7 @@ final public NodeValue eval(Binding binding, FunctionEnv env) public abstract NodeValue eval(FunctionEnv env) ; @Override - final public Expr applyNodeTransform(Function transform) + final public Expr applyNodeTransform(NodeTransform transform) { // Nothing to transform. return copy() ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java index e55548da9db..8c91cb34e6f 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction1.java @@ -18,12 +18,10 @@ package org.apache.jena.sparql.expr; -import java.util.function.Function; - import org.apache.jena.atlas.lib.Lib ; -import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; /** A function that has a single argument */ @@ -86,7 +84,7 @@ final public Expr copySubstitute(Binding binding) } @Override - final public Expr applyNodeTransform(Function transform) + final public Expr applyNodeTransform(NodeTransform transform) { Expr e = (expr == null ? null : expr.applyNodeTransform(transform)) ; return copy(e) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java index 79a824f9cf2..06cb6ea40f8 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction2.java @@ -18,12 +18,10 @@ package org.apache.jena.sparql.expr; -import java.util.function.Function; - import org.apache.jena.atlas.lib.Lib ; -import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; /** A function of two arguments */ @@ -97,7 +95,7 @@ final public Expr copySubstitute(Binding binding) @Override - final public Expr applyNodeTransform(Function transform) + final public Expr applyNodeTransform(NodeTransform transform) { Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ; Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java index f6d9a4196e8..d003ed25664 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction3.java @@ -18,12 +18,10 @@ package org.apache.jena.sparql.expr; -import java.util.function.Function; - import org.apache.jena.atlas.lib.Lib ; -import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; /** A function of three arguments */ @@ -107,7 +105,7 @@ final public Expr copySubstitute(Binding binding) @Override - final public Expr applyNodeTransform(Function transform) + final public Expr applyNodeTransform(NodeTransform transform) { Expr e1 = (expr1 == null ? null : expr1.applyNodeTransform(transform)) ; Expr e2 = (expr2 == null ? null : expr2.applyNodeTransform(transform)) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java index d2cf1100774..76300ad1151 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java @@ -20,11 +20,9 @@ import java.util.ArrayList ; import java.util.List ; -import java.util.function.Function; - -import org.apache.jena.graph.Node; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; /** A function which takes N arguments (N may be variable e.g. regex) */ @@ -82,7 +80,7 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(Function transform) + public Expr applyNodeTransform(NodeTransform transform) { ExprList newArgs = new ExprList() ; for ( int i = 1 ; i <= numArgs() ; i++ ) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java index d526bbae6e7..9e568517440 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java @@ -19,12 +19,10 @@ package org.apache.jena.sparql.expr; import java.util.* ; -import java.util.function.Function; - -import org.apache.jena.graph.Node; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.ExecutionContext ; import org.apache.jena.sparql.engine.binding.Binding ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.util.Context ; public class ExprList implements Iterable @@ -77,7 +75,7 @@ public void varsMentioned(Collection acc) { /** * Rewrite, applying a node->node transformation */ - public ExprList applyNodeTransform(Function transform) { + public ExprList applyNodeTransform(NodeTransform transform) { ExprList x = new ExprList() ; for ( Expr e : expressions) x.add(e.applyNodeTransform(transform)); diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java index 87eec7f70c2..9b8c45f3545 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNode.java @@ -20,14 +20,12 @@ import java.util.Collection ; import java.util.Set ; -import java.util.function.Function; - -import org.apache.jena.graph.Node; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.expr.nodevalue.XSDFuncOp ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.util.ExprUtils ; @@ -86,7 +84,7 @@ final public Expr deepCopy() public abstract Expr copySubstitute(Binding binding) ; @Override - public abstract Expr applyNodeTransform(Function transform) ; + public abstract Expr applyNodeTransform(NodeTransform transform) ; // ---- Default implementations diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java index a1a589f4176..df07897d745 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVar.java @@ -18,8 +18,6 @@ package org.apache.jena.sparql.expr; -import java.util.function.Function; - import org.apache.jena.atlas.io.IndentedWriter ; import org.apache.jena.graph.Node ; import org.apache.jena.query.Query ; @@ -27,6 +25,7 @@ import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; /** An expression that is a variable in an expression. */ @@ -76,7 +75,7 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(Function transform) + public Expr applyNodeTransform(NodeTransform transform) { Node node = transform.apply(varNode) ; if ( Var.isVar(node)) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java index d960de19915..8cff836e570 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java @@ -51,8 +51,6 @@ import java.util.Iterator ; import java.util.Properties ; import java.util.ServiceLoader ; -import java.util.function.Function; - import javax.xml.datatype.DatatypeConfigurationException ; import javax.xml.datatype.DatatypeFactory ; import javax.xml.datatype.Duration ; @@ -76,6 +74,7 @@ import org.apache.jena.sparql.expr.nodevalue.* ; import org.apache.jena.sparql.function.FunctionEnv ; import org.apache.jena.sparql.graph.NodeConst ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.serializer.SerializationContext ; import org.apache.jena.sparql.util.* ; import org.apache.jena.vocabulary.RDF ; @@ -468,7 +467,7 @@ public Expr copySubstitute(Binding binding) } @Override - public Expr applyNodeTransform(Function transform) + public Expr applyNodeTransform(NodeTransform transform) { Node n = asNode() ; n = transform.apply(n) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java index 553202cf5bb..a3d6a6f4d0f 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/Aggregator.java @@ -18,10 +18,9 @@ package org.apache.jena.sparql.expr.aggregate; -import java.util.function.Function; - import org.apache.jena.graph.Node ; import org.apache.jena.sparql.expr.ExprList ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.serializer.SerializationContext ; /** An Aggregator is the processor for the whole result stream. @@ -47,7 +46,7 @@ public interface Aggregator public ExprList getExprList() ; public Aggregator copy(ExprList exprs) ; - public Aggregator copyTransform(Function transform) ; + public Aggregator copyTransform(NodeTransform transform) ; @Override public int hashCode() ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java index 7fb321b3972..23c5ccd01a5 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/aggregate/AggregatorBase.java @@ -21,8 +21,6 @@ import java.util.HashMap ; import java.util.Locale ; import java.util.Map ; -import java.util.function.Function; - import org.apache.jena.atlas.io.IndentedLineBuffer ; import org.apache.jena.graph.Node ; import org.apache.jena.sparql.ARQInternalErrorException ; @@ -30,6 +28,7 @@ import org.apache.jena.sparql.expr.Expr ; import org.apache.jena.sparql.expr.ExprList ; import org.apache.jena.sparql.expr.NodeValue ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.serializer.SerializationContext ; import org.apache.jena.sparql.sse.writers.WriterExpr ; import org.apache.jena.sparql.util.ExprUtils ; @@ -86,7 +85,7 @@ public Node getValue(Binding key) public String key() { return toPrefixString() ; } @Override - public final Aggregator copyTransform(Function transform) + public final Aggregator copyTransform(NodeTransform transform) { ExprList e = getExprList() ; if ( e != null ) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java index a22da5f9b35..90de6fe3538 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransform.java @@ -23,11 +23,7 @@ import org.apache.jena.graph.Node ; /** Convert nodes to nodes - Vars may need to be translated into Vars. */ -/** - * Prefer {@link Function}. - * - */ -@Deprecated +@FunctionalInterface public interface NodeTransform extends Function { } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java index 34ba4fb23bb..ce0c5172ece 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformLib.java @@ -22,8 +22,6 @@ import java.util.Iterator ; import java.util.List ; import java.util.Objects; -import java.util.function.Function; - import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; @@ -43,14 +41,14 @@ public class NodeTransformLib { /** Do a node->node conversion of an Op - return original BGP for "no change" */ - public static Op transform(Function nodeTransform, Op op) + public static Op transform(NodeTransform nodeTransform, Op op) { Transform opTransform = new NodeTransformOp(nodeTransform) ; return Transformer.transform(opTransform, null, op) ; // No expr transform - we do it ourselves. } /** Do a node->node conversion of a BGP - return original BGP for "no change" */ - public static BasicPattern transform(Function nodeTransform, BasicPattern pattern) + public static BasicPattern transform(NodeTransform nodeTransform, BasicPattern pattern) { BasicPattern bgp2 = new BasicPattern() ; boolean changed = false ; @@ -67,7 +65,7 @@ public static BasicPattern transform(Function nodeTransform, BasicPa } /** Do a node->node conversion of a QuadPattern - return original QuadPattern for "no change" */ - public static QuadPattern transform(Function nodeTransform, QuadPattern pattern) + public static QuadPattern transform(NodeTransform nodeTransform, QuadPattern pattern) { QuadPattern qp2 = new QuadPattern() ; boolean changed = false ; @@ -84,7 +82,7 @@ public static QuadPattern transform(Function nodeTransform, QuadPatt } /** Do a node->node conversion of a Triple - return original Triple for "no change" */ - public static Triple transform(Function nodeTransform, Triple triple) + public static Triple transform(NodeTransform nodeTransform, Triple triple) { boolean change = false ; Node s = triple.getSubject() ; @@ -104,7 +102,7 @@ public static Triple transform(Function nodeTransform, Triple triple } /** Do a node->node conversion of a Quad - return original Quad for "no change" */ - public static Quad transform(Function nodeTransform, Quad quad) + public static Quad transform(NodeTransform nodeTransform, Quad quad) { boolean change = false ; Node s = quad.getSubject() ; @@ -126,7 +124,7 @@ public static Quad transform(Function nodeTransform, Quad quad) return new Quad(g,s,p,o) ; } - public static Table transform(Table table, Function transform) { + public static Table transform(Table table, NodeTransform transform) { // Non-streaming rewrite List vars = transformVars(transform, table.getVars()) ; Iterator iter = table.rows() ; @@ -139,7 +137,7 @@ public static Table transform(Table table, Function transform) { return new TableData(vars, newRows) ; } - public static Binding transform(Binding b, Function transform) { + public static Binding transform(Binding b, NodeTransform transform) { BindingMap b2 = BindingFactory.create() ; List vars = Iter.toList(b.vars()) ; for ( Var v : vars ) { @@ -152,7 +150,7 @@ public static Binding transform(Binding b, Function transform) { /** Do a node->node conversion of a List<Quad> - return original List<Quad> for "no change" */ - public static List transformQuads(Function nodeTransform, List quads) + public static List transformQuads(NodeTransform nodeTransform, List quads) { List x = new ArrayList<>() ; boolean changed = false ; @@ -169,7 +167,7 @@ public static List transformQuads(Function nodeTransform, List } /** Do a node->node conversion of a VarExprList - return original VarExprList for "no change" */ - public static VarExprList transform(Function nodeTransform, VarExprList varExprList) + public static VarExprList transform(NodeTransform nodeTransform, VarExprList varExprList) { VarExprList varExprList2 = new VarExprList() ; boolean changed = false ; @@ -188,7 +186,7 @@ public static VarExprList transform(Function nodeTransform, VarExprL return varExprList2 ; } - public static List transformVars(Function nodeTransform, List varList) + public static List transformVars(NodeTransform nodeTransform, List varList) { List varList2 = new ArrayList<>(varList.size()) ; boolean changed = false ; @@ -204,7 +202,7 @@ public static List transformVars(Function nodeTransform, List nodeTransform, ExprList exprList) + public static ExprList transform(NodeTransform nodeTransform, ExprList exprList) { ExprList exprList2 = new ExprList() ; boolean changed = false ; @@ -219,12 +217,12 @@ public static ExprList transform(Function nodeTransform, ExprList ex return exprList2 ; } - public static Expr transform(Function nodeTransform, Expr expr) + public static Expr transform(NodeTransform nodeTransform, Expr expr) { return expr.applyNodeTransform(nodeTransform) ; } - public static List transform(Function nodeTransform, List conditions) + public static List transform(NodeTransform nodeTransform, List conditions) { List conditions2 = new ArrayList<>() ; boolean same = true ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java index d62d17624c2..c6c60af468c 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/NodeTransformOp.java @@ -20,8 +20,6 @@ import java.util.ArrayList ; import java.util.List ; -import java.util.function.Function; - import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; import org.apache.jena.query.SortCondition ; @@ -51,8 +49,8 @@ class NodeTransformOp extends TransformCopy // Not: // Conditional (no expression) - private final Function transform ; - NodeTransformOp(Function transform) + private final NodeTransform transform ; + NodeTransformOp(NodeTransform transform) { this.transform = transform ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java index 85ab1163b92..0ae775f0650 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/NodeTransformBNodesToVariables.java @@ -20,14 +20,13 @@ import java.util.HashMap ; import java.util.Map ; -import java.util.function.Function; - import org.apache.jena.graph.Node ; import org.apache.jena.sparql.ARQConstants ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.core.VarAlloc ; +import org.apache.jena.sparql.graph.NodeTransform; -public class NodeTransformBNodesToVariables implements Function +public class NodeTransformBNodesToVariables implements NodeTransform { private VarAlloc varAlloc = new VarAlloc(ARQConstants.allocVarBNodeToVar) ; private Map mapping ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java index e97a7968cfd..46b2ef9bba9 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineWorker.java @@ -22,8 +22,6 @@ import java.util.Iterator ; import java.util.List ; -import java.util.function.Function; - import org.apache.jena.atlas.data.BagFactory ; import org.apache.jena.atlas.data.DataBag ; import org.apache.jena.atlas.data.ThresholdPolicy ; @@ -51,6 +49,7 @@ import org.apache.jena.sparql.engine.binding.BindingRoot ; import org.apache.jena.sparql.graph.GraphFactory ; import org.apache.jena.sparql.graph.GraphOps ; +import org.apache.jena.sparql.graph.NodeTransform; import org.apache.jena.sparql.graph.NodeTransformLib ; import org.apache.jena.sparql.modify.request.* ; import org.apache.jena.sparql.syntax.Element ; @@ -474,7 +473,7 @@ private Graph graphOrDummy(DatasetGraph dsg, Node gn) protected static List unused_convertBNodesToVariables(List quads) { - Function bnodesToVariables = new NodeTransformBNodesToVariables() ; + NodeTransform bnodesToVariables = new NodeTransformBNodesToVariables() ; return NodeTransformLib.transformQuads(bnodesToVariables, quads) ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java index d0dfa27a92b..34e793a753a 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultSetCompare.java @@ -174,9 +174,7 @@ public static boolean equalsByTermAndOrder(ResultSet rs1, ResultSet rs2) { if ( ! compareHeader(rs1, rs2) ) return false ; return equivalentByOrder(convert(rs1) , convert(rs2), new BNodeIso(NodeUtils.sameTerm)) ; } - - private static EqualityTest nodeExactTest = new EqualityTestExact() ; - + /** compare two result sets for exact equality equivalence. * Exact equalitymeans: * Each row in rs1 matches the same index row in rs2. @@ -192,7 +190,7 @@ public static boolean equalsExact(ResultSet rs1, ResultSet rs2) { if ( ! compareHeader(rs1, rs2) ) return false ; - return equivalentByOrder(convert(rs1) , convert(rs2), nodeExactTest) ; + return equivalentByOrder(convert(rs1) , convert(rs2), new EqualityTest(){}) ; } /** Compare two result sets for bNode isomorphism equivalence. @@ -329,11 +327,4 @@ public boolean equal(Node n1, Node n2) { return false ; } } - - private static class EqualityTestExact implements EqualityTest { - @Override - public boolean equal(Node n1, Node n2) { - return Objects.equals(n1, n2) ; - } - } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java index b2a124a82cd..09a4467943b 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/NodeUtils.java @@ -21,6 +21,7 @@ import java.util.Collection ; import java.util.HashSet ; import java.util.Iterator ; +import java.util.Objects; import java.util.Set ; import org.apache.jena.atlas.lib.StrUtils ; @@ -44,7 +45,9 @@ public class NodeUtils { public interface EqualityTest { - boolean equal(Node n1, Node n2) ; + default boolean equal(Node n1, Node n2) { + return Objects.equals(n1, n2) ; + } } /** IRI to Node */ diff --git a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java index 1d4874a2073..72e77a2653f 100644 --- a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java +++ b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java @@ -26,7 +26,6 @@ import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.atlas.lib.StrUtils ; -import org.apache.jena.graph.Node ; import org.apache.jena.query.ResultSet ; import org.apache.jena.query.ResultSetFactory ; import org.apache.jena.query.ResultSetRewindable ; @@ -35,7 +34,6 @@ import org.apache.jena.sparql.sse.Item ; import org.apache.jena.sparql.sse.SSE ; import org.apache.jena.sparql.sse.builders.BuilderResultSet ; -import org.apache.jena.sparql.util.NodeUtils.EqualityTest ; import org.junit.Test ; public class TestResultSetThrift extends BaseTest { @@ -64,15 +62,6 @@ public class TestResultSetThrift extends BaseTest { , ")" ) ; - - static class EqualityTestExact implements EqualityTest { - @Override - public boolean equal(Node n1, Node n2) { - return n1.equals(n2) ; - } - } - private static EqualityTest exactTest = new EqualityTestExact() ; - @Test public void resultSet_01() { test(rs0) ; } @Test public void resultSet_02() { diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java index 6f262a56ad9..6690d6254b2 100644 --- a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java @@ -18,8 +18,6 @@ package org.apache.jena.permissions.query.rewriter; import java.util.List; -import java.util.function.Function; - import org.apache.jena.graph.Node ; import org.apache.jena.graph.Triple ; import org.apache.jena.permissions.SecurityEvaluator; @@ -31,6 +29,7 @@ import org.apache.jena.sparql.engine.binding.Binding ; import org.apache.jena.sparql.expr.* ; import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.graph.NodeTransform; public class SecuredFunction extends ExprFunctionN { @@ -103,7 +102,7 @@ public Expr copySubstitute( Binding binding ) } @Override - public Expr applyNodeTransform( Function transform ) + public Expr applyNodeTransform( NodeTransform transform ) { return this; }