Repository: commons-rdf Updated Branches: refs/heads/COMMONSRDF-49 [created] 286a81f6b
Cleanup for FindBugs and PMD warnings in commons-rdf-simple and commons-rdf-jena Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/f1649e03 Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/f1649e03 Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/f1649e03 Branch: refs/heads/COMMONSRDF-49 Commit: f1649e034a2623137434fcc2810f8802d3ee9434 Parents: 4c95437 Author: ajs6f <aj...@apache.org> Authored: Thu Dec 14 12:37:25 2017 -0500 Committer: ajs6f <aj...@apache.org> Committed: Thu Dec 14 12:37:25 2017 -0500 ---------------------------------------------------------------------- .../org/apache/commons/rdf/jena/JenaGraph.java | 4 ++-- .../org/apache/commons/rdf/jena/JenaQuadLike.java | 2 +- .../org/apache/commons/rdf/jena/JenaRDFTerm.java | 2 +- .../apache/commons/rdf/jena/JenaTripleLike.java | 2 +- .../commons/rdf/jena/impl/AbstractQuadLike.java | 1 + .../rdf/jena/impl/InternalJenaFactory.java | 6 ++++-- .../commons/rdf/jena/impl/JenaGraphImpl.java | 18 ++++++++++-------- .../commons/rdf/jena/impl/JenaQuadImpl.java | 2 +- .../org/apache/commons/rdf/simple/SimpleRDF.java | 2 +- .../simple/experimental/AbstractRDFParser.java | 12 +++++++++--- 10 files changed, 31 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaGraph.java ---------------------------------------------------------------------- diff --git a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaGraph.java b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaGraph.java index 783a1f4..c96705d 100644 --- a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaGraph.java +++ b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaGraph.java @@ -38,7 +38,7 @@ public interface JenaGraph extends org.apache.commons.rdf.api.Graph { * * @return A Jena {@link org.apache.jena.graph.Graph} */ - public org.apache.jena.graph.Graph asJenaGraph(); + org.apache.jena.graph.Graph asJenaGraph(); /** * Return the graph as a Jena {@link Model}. @@ -52,5 +52,5 @@ public interface JenaGraph extends org.apache.commons.rdf.api.Graph { * * @return A Jena {@link Model} */ - public Model asJenaModel(); + Model asJenaModel(); } http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaQuadLike.java ---------------------------------------------------------------------- diff --git a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaQuadLike.java b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaQuadLike.java index 4dc9508..50dfe1f 100644 --- a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaQuadLike.java +++ b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaQuadLike.java @@ -39,5 +39,5 @@ public interface JenaQuadLike<G extends RDFTerm> extends JenaTripleLike, QuadLik * * @return Adapted Jena {@link Quad}. */ - public Quad asJenaQuad(); + Quad asJenaQuad(); } http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTerm.java ---------------------------------------------------------------------- diff --git a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTerm.java b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTerm.java index f428ae6..5fdb916 100644 --- a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTerm.java +++ b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTerm.java @@ -31,5 +31,5 @@ import org.apache.jena.graph.Node; * @see JenaBlankNode */ public interface JenaRDFTerm extends RDFTerm { - public Node asJenaNode(); + Node asJenaNode(); } http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaTripleLike.java ---------------------------------------------------------------------- diff --git a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaTripleLike.java b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaTripleLike.java index 8e73bf4..e52d8d2 100644 --- a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaTripleLike.java +++ b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/JenaTripleLike.java @@ -34,7 +34,7 @@ import org.apache.jena.graph.Triple; * @see JenaGeneralizedQuadLike * */ -public interface JenaTripleLike extends org.apache.commons.rdf.api.TripleLike { +public interface JenaTripleLike extends TripleLike { /** * Return the adapted Jena triple http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java ---------------------------------------------------------------------- diff --git a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java index b05bf5c..1550e8e 100644 --- a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java +++ b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractQuadLike.java @@ -47,6 +47,7 @@ import org.apache.jena.sparql.core.Quad; * RDFTerm) * */ +@SuppressWarnings("PMD.UnnecessaryFullyQualifiedName") // we use fully-qualified names for clarity abstract class AbstractQuadLike<S extends RDFTerm, P extends RDFTerm, O extends RDFTerm, G extends RDFTerm> implements JenaQuadLike<G> { http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java ---------------------------------------------------------------------- diff --git a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java index da58c6b..1e6ff43 100644 --- a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java +++ b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/InternalJenaFactory.java @@ -151,11 +151,13 @@ public abstract class InternalJenaFactory { } if (node.equals(Node.ANY)) { // NOTE: JenaAny no longer supported by Commons RDF - // return JenaAnyImpl.Singleton.instance; + //TODO remove this check or handle JenaAny + throw new ConversionException("Unrecognized node type: " + node); } if (node.isVariable()) { // NOTE: JenaVariable no longer supported by Commons RDF - // return new JenaVariableImpl(node); + //TODO remove this check or handle JenaVariable + throw new ConversionException("Unrecognized node type: " + node); } throw new ConversionException("Unrecognized node type: " + node); } http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGraphImpl.java ---------------------------------------------------------------------- diff --git a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGraphImpl.java b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGraphImpl.java index 90e9881..aaad1c3 100644 --- a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGraphImpl.java +++ b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGraphImpl.java @@ -41,7 +41,7 @@ class JenaGraphImpl implements JenaGraph { private final org.apache.jena.graph.Graph graph; private final UUID salt; private final transient JenaRDF factory; - private Model model; + private volatile Model model; JenaGraphImpl(final org.apache.jena.graph.Graph graph, final UUID salt) { this.graph = graph; @@ -107,7 +107,7 @@ class JenaGraphImpl implements JenaGraph { @Override public void remove(final Triple triple) { - if ((triple.getObject() instanceof Literal) && + if (triple.getObject() instanceof Literal && ((Literal) triple.getObject()).getLanguageTag().isPresent()) { // COMMONSRDF-51: graph.delete(Triple) would be too restrictive // as it won't delete triples with different lang tag - so @@ -154,17 +154,19 @@ class JenaGraphImpl implements JenaGraph { @Override public Model asJenaModel() { - if (model == null) { + // use a local holder to avoid accessing the volatile field model more than needed + Model check = model; + if (check == null) { synchronized (this) { // As Model can be used for locks, we should make sure we don't - // make - // more than one model - if (model == null) { - model = ModelFactory.createModelForGraph(graph); + // make more than one model + check = model; + if (check == null) { + model = check = ModelFactory.createModelForGraph(graph); } } } - return model; + return check; } } http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaQuadImpl.java ---------------------------------------------------------------------- diff --git a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaQuadImpl.java b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaQuadImpl.java index 4bdbf77..07f1477 100644 --- a/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaQuadImpl.java +++ b/commons-rdf-jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaQuadImpl.java @@ -38,7 +38,7 @@ class JenaQuadImpl extends AbstractQuadLike<BlankNodeOrIRI, IRI, RDFTerm, BlankN JenaQuadImpl(final org.apache.jena.sparql.core.Quad quad, final UUID salt) { super(quad, salt); // Check the conversion - if ((graphName.isPresent() && !(graphName.get() instanceof BlankNodeOrIRI)) + if (graphName.isPresent() && !(graphName.get() instanceof BlankNodeOrIRI) || !(subject instanceof BlankNodeOrIRI) || !(predicate instanceof IRI) || !(object instanceof RDFTerm)) { throw new ConversionException("Can't adapt generalized quad: " + quad); http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/SimpleRDF.java ---------------------------------------------------------------------- diff --git a/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/SimpleRDF.java b/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/SimpleRDF.java index 6f6b2a5..9ea2555 100644 --- a/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/SimpleRDF.java +++ b/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/SimpleRDF.java @@ -47,7 +47,7 @@ public class SimpleRDF implements RDF { * This method is package protected to avoid any third-party subclasses. * */ - static interface SimpleRDFTerm extends RDFTerm { + interface SimpleRDFTerm extends RDFTerm { } /** http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f1649e03/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java ---------------------------------------------------------------------- diff --git a/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java b/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java index 15e36aa..a8d2499 100644 --- a/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java +++ b/commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java @@ -17,6 +17,8 @@ */ package org.apache.commons.rdf.simple.experimental; +import static java.util.concurrent.Executors.newCachedThreadPool; + import java.io.IOException; import java.io.InputStream; import java.net.URI; @@ -24,8 +26,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Optional; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; import org.apache.commons.rdf.api.Dataset; @@ -58,8 +60,12 @@ import org.apache.commons.rdf.simple.SimpleRDF; */ public abstract class AbstractRDFParser<T extends AbstractRDFParser<T>> implements RDFParser, Cloneable { - public static final ThreadGroup threadGroup = new ThreadGroup("Commons RDF parsers"); - private static final ExecutorService threadpool = Executors.newCachedThreadPool(r -> new Thread(threadGroup, r)); + public static final AtomicInteger threadCount = new AtomicInteger(); + private static Thread newThread(Runnable r) { + return new Thread(r, "Commons RDF Parser " + threadCount.getAndIncrement()); + } + + private static final ExecutorService threadpool = newCachedThreadPool(AbstractRDFParser::newThread); // Basically only used for creating IRIs private static RDF internalRdfTermFactory = new SimpleRDF();