You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by st...@apache.org on 2018/02/20 10:35:38 UTC
[7/9] commons-rdf git commit: WithOption now builds map on the fly
WithOption now builds map on the fly
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/40d016bb
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/40d016bb
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/40d016bb
Branch: refs/heads/fluent-parser
Commit: 40d016bbb19b7962b603f5f898dc26c72a34cfd9
Parents: 9c1e638
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Tue Feb 20 10:34:23 2018 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Tue Feb 20 10:34:23 2018 +0000
----------------------------------------------------------------------
.../commons/rdf/api/io/NullParserConfig.java | 53 ++++++++++++--------
.../commons/rdf/api/io/ParserBuilder.java | 3 +-
.../commons/rdf/api/io/ParserConfigBuilder.java | 17 +++----
3 files changed, 41 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/40d016bb/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullParserConfig.java
----------------------------------------------------------------------
diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullParserConfig.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullParserConfig.java
index ccbb6b4..7ad78ba 100644
--- a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullParserConfig.java
+++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullParserConfig.java
@@ -61,7 +61,9 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
@Override
public Map<Option, Object> options() {
- return Collections.emptyMap();
+ // Always a fresh map, so that our children can
+ // mutate it on the fly
+ return new HashMap<>();
}
@Override
@@ -93,28 +95,35 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
@Override
public <V> ParserConfig withOption(Option<V> o, V v) {
- return new WithOptional(this, o, v);
+ return new WithOption(this, o, v);
}
@SuppressWarnings("rawtypes")
- final class WithOptional extends WithParent {
+ private static final class WithOption extends WithParent {
- private final Map<Option, Object> options;
+ private Option o;
+ private Object v;
- public <V> WithOptional(final ImmutableParserConfig parent, final Option<V> o, V v) {
+ public <V> WithOption(final ImmutableParserConfig parent, final Option<V> o, V v) {
super(parent);
- this.options = new HashMap<>(parent.options());
- options.put(o, v);
+ this.o = o;
+ this.v = v;
}
@Override
public Map<Option, Object> options() {
+ // Add to parent options
+ Map options = super.options();
+ if (v == null) {
+ options.remove(o);
+ } else {
+ options.put(o, v);
+ }
return options;
}
-
}
- final class WithBase extends WithParent {
+ private static final class WithBase extends WithParent {
private final IRI base;
WithBase(final ImmutableParserConfig parent, final IRI base) {
@@ -124,11 +133,11 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
@Override
public Optional<IRI> base() {
- return Optional.of(base);
+ return Optional.ofNullable(base);
}
}
- final class WithRDF extends WithParent {
+ private static final class WithRDF extends WithParent {
private final RDF rdf;
WithRDF(final ImmutableParserConfig parent, final RDF rdf) {
@@ -138,12 +147,12 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
@Override
public Optional<RDF> rdf() {
- return Optional.of(rdf);
+ return Optional.ofNullable(rdf);
}
}
@SuppressWarnings("rawtypes")
- final class WithTarget extends WithParent {
+ private static final class WithTarget extends WithParent {
private final ParserTarget target;
WithTarget(final ImmutableParserConfig parent, final ParserTarget target) {
@@ -153,12 +162,12 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
@Override
public Optional<ParserTarget> target() {
- return Optional.of(target);
+ return Optional.ofNullable(target);
}
}
@SuppressWarnings("rawtypes")
- public class WithSource extends WithParent {
+ private static final class WithSource extends WithParent {
private final ParserSource source;
WithSource(ImmutableParserConfig parent, ParserSource source) {
@@ -168,11 +177,11 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
@Override
public Optional<ParserSource> source() {
- return Optional.of(source);
+ return Optional.ofNullable(source);
}
}
- static class WithSyntax extends WithParent {
+ private static final class WithSyntax extends WithParent {
private final RDFSyntax syntax;
WithSyntax(ImmutableParserConfig parent, RDFSyntax syntax) {
@@ -182,7 +191,7 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
@Override
public Optional<RDFSyntax> syntax() {
- return Optional.of(syntax);
+ return Optional.ofNullable(syntax);
}
}
@@ -249,7 +258,7 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
private final IRI base;
private final ParserSource source;
private final ParserTarget target;
- private final Map<Option, Object> options = new HashMap<>();
+ private final Map<Option, Object> options;
private final ExecutorService executor;
SnapshotParserConfig(ParserConfig old) {
@@ -270,7 +279,8 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
this.base = base;
this.source = source;
this.target = target;
- this.options.putAll(options);
+ // We'll make a copy
+ this.options = Collections.unmodifiableMap(new HashMap<Option, Object>(options));
this.executor = executor;
}
@@ -301,7 +311,8 @@ class NullParserConfig implements ImmutableParserConfig, Serializable {
@Override
public Map<Option, Object> options() {
- return options;
+ // return a mutable copy so our children can build on it
+ return new HashMap<Option,Object>(options);
}
}
}
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/40d016bb/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserBuilder.java
----------------------------------------------------------------------
diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserBuilder.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserBuilder.java
index cd3eae4..ed43444 100644
--- a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserBuilder.java
+++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserBuilder.java
@@ -1,7 +1,6 @@
package org.apache.commons.rdf.api.io;
-import org.apache.commons.rdf.api.Dataset;
import org.apache.commons.rdf.api.fluentparser.OptionalTargetOrSyntax;
-public interface ParserBuilder extends OptionalTargetOrSyntax<Dataset> {
+public interface ParserBuilder<T> extends OptionalTargetOrSyntax<T> {
}
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/40d016bb/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfigBuilder.java
----------------------------------------------------------------------
diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfigBuilder.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfigBuilder.java
index 457fb6c..406c6fe 100644
--- a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfigBuilder.java
+++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfigBuilder.java
@@ -30,13 +30,12 @@ import org.apache.commons.rdf.api.fluentparser.Async;
import org.apache.commons.rdf.api.fluentparser.NeedSourceBased;
import org.apache.commons.rdf.api.fluentparser.NeedSourceOrBase;
import org.apache.commons.rdf.api.fluentparser.NeedTargetOrRDF;
-import org.apache.commons.rdf.api.fluentparser.NeedTargetOrRDFOrSyntax;
import org.apache.commons.rdf.api.fluentparser.OptionalTarget;
import org.apache.commons.rdf.api.fluentparser.Sync;
import org.apache.commons.rdf.api.io.ParserConfig.ImmutableParserConfig;
@SuppressWarnings({ "unchecked", "rawtypes" })
-public final class ParserConfigBuilder implements NeedTargetOrRDF, NeedTargetOrRDFOrSyntax,
+public final class ParserConfigBuilder implements ParserBuilder, NeedTargetOrRDF,
NeedSourceOrBase, NeedSourceBased, OptionalTarget, Sync, Async {
public ParserConfigBuilder(ParserConfig mutated) {
@@ -52,11 +51,6 @@ public final class ParserConfigBuilder implements NeedTargetOrRDF, NeedTargetOrR
}
}
- @Override
- public NeedTargetOrRDF syntax(RDFSyntax syntax) {
- return mutate(config.withSyntax(syntax));
- }
-
public ParserConfig buildConfig() {
return config.asImmutableConfig();
}
@@ -78,12 +72,12 @@ public final class ParserConfigBuilder implements NeedTargetOrRDF, NeedTargetOrR
}
@Override
- public NeedSourceBased base(IRI iri) {
+ public ParserConfigBuilder base(IRI iri) {
return mutate(config.withBase(iri));
}
@Override
- public NeedSourceBased base(String iriStr) {
+ public ParserConfigBuilder base(String iriStr) {
return base(new IRIImpl(iriStr));
}
@@ -157,4 +151,9 @@ public final class ParserConfigBuilder implements NeedTargetOrRDF, NeedTargetOrR
return mutate(config.asImmutableConfig());
}
+ @Override
+ public NeedTargetOrRDF syntax(RDFSyntax syntax) {
+ return mutate(config.withSyntax(syntax));
+ }
+
}