Repository: commons-rdf
Updated Branches:
  refs/heads/fluent-parser 9c7da99c0 -> f9613b90a


ImmutableParserConfigImpl / ImmutableWriterConfigImpl


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

Branch: refs/heads/fluent-parser
Commit: f9613b90afda1049bff64f1227f9e3b3485e8171
Parents: 9c7da99
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Tue Feb 20 11:22:37 2018 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Tue Feb 20 11:23:18 2018 +0000

----------------------------------------------------------------------
 .../rdf/api/io/ImmutableParserConfigImpl.java   | 314 +++++++++++++++++++
 .../rdf/api/io/ImmutableWriterConfigImpl.java   | 252 +++++++++++++++
 .../commons/rdf/api/io/NullParserConfig.java    | 314 -------------------
 .../commons/rdf/api/io/NullWriterConfig.java    | 252 ---------------
 .../apache/commons/rdf/api/io/ParserConfig.java |   6 +-
 .../apache/commons/rdf/api/io/WriterConfig.java |   6 +-
 6 files changed, 572 insertions(+), 572 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f9613b90/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ImmutableParserConfigImpl.java
----------------------------------------------------------------------
diff --git 
a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ImmutableParserConfigImpl.java
 
b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ImmutableParserConfigImpl.java
new file mode 100644
index 0000000..5dea128
--- /dev/null
+++ 
b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ImmutableParserConfigImpl.java
@@ -0,0 +1,314 @@
+/*
+ * 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.commons.rdf.api.io;
+
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.concurrent.ExecutorService;
+
+import org.apache.commons.rdf.api.IRI;
+import org.apache.commons.rdf.api.RDF;
+import org.apache.commons.rdf.api.RDFSyntax;
+import org.apache.commons.rdf.api.io.ParserConfig.ImmutableParserConfig;
+
+class ImmutableParserConfigImpl implements ImmutableParserConfig, Serializable 
{
+       
+       private static final long serialVersionUID = 1L;
+
+       @Override
+       public Optional<ParserSource> source() {
+               return Optional.empty();
+       }
+
+       @Override
+       public Optional<IRI> base() {
+               return Optional.empty();
+       }
+
+       @Override
+       public Optional<ParserTarget> target() {
+               return Optional.empty();
+       }
+
+       @Override
+       public Optional<RDFSyntax> syntax() {
+               return Optional.empty();
+       }
+
+       @Override
+       public Optional<RDF> rdf() {
+               return Optional.empty();
+       }
+
+       @Override
+       public Map<Option, Object> options() {
+               // Always a fresh map, so that our children can
+               // mutate it on the fly
+               return new HashMap<>();
+       }
+
+       @Override
+       public ParserConfig withSyntax(RDFSyntax syntax) {
+               return new WithSyntax(this, syntax);
+       }
+
+       @SuppressWarnings("rawtypes")
+       @Override
+       public ParserConfig withSource(ParserSource source) {
+               return new WithSource(this, source);
+       }
+
+       @SuppressWarnings("rawtypes")
+       @Override
+       public ParserConfig withTarget(ParserTarget target) {
+               return new WithTarget(this, target);
+       }
+
+       @Override
+       public ParserConfig withRDF(RDF rdf) {
+               return new WithRDF(this, rdf);
+       }
+
+       @Override
+       public ParserConfig withBase(IRI base) {
+               return new WithBase(this, base);
+       }
+
+       @Override
+       public <V> ParserConfig withOption(Option<V> o, V v) {
+               return new WithOption(this, o, v);
+       }
+
+       @SuppressWarnings("rawtypes")
+       private static final class WithOption extends WithParent {
+
+               private Option o;
+               private Object v;
+
+               public <V> WithOption(final ImmutableParserConfig parent, final 
Option<V> o, V v) {
+                       super(parent);
+                       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;
+               }
+       }
+
+       private static final class WithBase extends WithParent {
+               private final IRI base;
+
+               WithBase(final ImmutableParserConfig parent, final IRI base) {
+                       super(parent);
+                       this.base = base;
+               }
+
+               @Override
+               public Optional<IRI> base() {
+                       return Optional.ofNullable(base);
+               }
+       }
+
+       private static final class WithRDF extends WithParent {
+               private final RDF rdf;
+
+               WithRDF(final ImmutableParserConfig parent, final RDF rdf) {
+                       super(parent);
+                       this.rdf = rdf;
+               }
+
+               @Override
+               public Optional<RDF> rdf() {
+                       return Optional.ofNullable(rdf);
+               }
+       }
+
+       @SuppressWarnings("rawtypes")
+       private static final class WithTarget extends WithParent {
+               private final ParserTarget target;
+
+               WithTarget(final ImmutableParserConfig parent, final 
ParserTarget target) {
+                       super(parent);
+                       this.target = target;
+               }
+
+               @Override
+               public Optional<ParserTarget> target() {
+                       return Optional.ofNullable(target);
+               }
+       }
+
+       @SuppressWarnings("rawtypes")
+       private static final class WithSource extends WithParent {
+               private final ParserSource source;
+
+               WithSource(ImmutableParserConfig parent, ParserSource source) {
+                       super(parent);
+                       this.source = source;
+               }
+
+               @Override
+               public Optional<ParserSource> source() {
+                       return Optional.ofNullable(source);
+               }
+       }
+
+       private static final class WithSyntax extends WithParent {
+               private final RDFSyntax syntax;
+
+               WithSyntax(ImmutableParserConfig parent, RDFSyntax syntax) {
+                       super(parent);
+                       this.syntax = syntax;
+               }
+
+               @Override
+               public Optional<RDFSyntax> syntax() {
+                       return Optional.ofNullable(syntax);
+               }
+       }
+
+       abstract static class WithParent extends ImmutableParserConfigImpl 
implements ImmutableParserConfig {
+               private final ImmutableParserConfig parent;
+
+               /**
+                * Override which object to use by Serializable, avoiding
+                * serialization of the whole WithParent tree. 
+                * 
+                * This method is protected so it will be invoked for all 
subclasses of
+                * WithParent.
+                * 
+                * @return a {@link SnapshotParserConfig}
+                * @throws ObjectStreamException
+                */
+               protected Object writeReplace() throws ObjectStreamException {
+                       return new SnapshotParserConfig(this);
+               }
+               
+               WithParent(ImmutableParserConfig parserConfig) {
+                       this.parent = Objects.requireNonNull(parserConfig);
+               }
+
+               @SuppressWarnings("rawtypes")
+               @Override
+               public Optional<ParserSource> source() {
+                       return parent.source();
+               }
+
+               @Override
+               public Optional<IRI> base() {
+                       return parent.base();
+               }
+
+               @SuppressWarnings("rawtypes")
+               @Override
+               public Optional<ParserTarget> target() {
+                       return parent.target();
+               }
+
+               @Override
+               public Optional<RDFSyntax> syntax() {
+                       return parent.syntax();
+               }
+
+               @Override
+               public Optional<RDF> rdf() {
+                       return parent.rdf();
+               }
+
+               @SuppressWarnings("rawtypes")
+               @Override
+               public Map<Option, Object> options() {
+                       return parent.options();
+               }
+       }
+
+       @SuppressWarnings("rawtypes")
+       final static class SnapshotParserConfig extends 
ImmutableParserConfigImpl {
+               private static final long serialVersionUID = 1L;
+               private final RDF rdf;
+               private final RDFSyntax syntax;
+               private final IRI base;
+               private final ParserSource source;
+               private final ParserTarget target;
+               private final Map<Option, Object> options;
+
+               SnapshotParserConfig(ParserConfig old) {
+                       this(
+                               old.rdf().orElse(null),
+                               old.syntax().orElse(null),
+                               old.base().orElse(null),
+                               old.source().orElse(null),
+                               old.target().orElse(null),
+                               old.options());
+               }
+               
+               SnapshotParserConfig(RDF rdf, RDFSyntax syntax, IRI base, 
ParserSource source, ParserTarget target, Map<Option, Object> options) {
+                       this.rdf = rdf;
+                       this.syntax = syntax;
+                       this.base = base;
+                       this.source = source;
+                       this.target = target;
+                       // We'll make a copy
+                       this.options = Collections.unmodifiableMap(new 
HashMap<Option, Object>(options));
+               }
+
+               @Override
+               public Optional<ParserSource> source() {
+                       return Optional.ofNullable(source);
+               }
+
+               @Override
+               public Optional<IRI> base() {
+                       return Optional.ofNullable(base);
+               }
+
+               @Override
+               public Optional<ParserTarget> target() {
+                       return Optional.ofNullable(target);
+               }
+
+               @Override
+               public Optional<RDFSyntax> syntax() {
+                       return Optional.ofNullable(syntax);
+               }
+
+               @Override
+               public Optional<RDF> rdf() {
+                       return Optional.ofNullable(rdf);
+               }
+
+               @Override
+               public Map<Option, Object> 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/f9613b90/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ImmutableWriterConfigImpl.java
----------------------------------------------------------------------
diff --git 
a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ImmutableWriterConfigImpl.java
 
b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ImmutableWriterConfigImpl.java
new file mode 100644
index 0000000..4c238d9
--- /dev/null
+++ 
b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ImmutableWriterConfigImpl.java
@@ -0,0 +1,252 @@
+/*
+ * 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.commons.rdf.api.io;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.ExecutorService;
+
+import org.apache.commons.rdf.api.IRI;
+import org.apache.commons.rdf.api.RDF;
+import org.apache.commons.rdf.api.RDFSyntax;
+import org.apache.commons.rdf.api.io.WriterConfig.ImmutableWriterConfig;
+
+class ImmutableWriterConfigImpl implements ImmutableWriterConfig, Serializable 
{
+
+       private static final long serialVersionUID = 1L;
+
+       @Override
+       public Optional<WriterSource> source() {
+               return Optional.empty();
+       }
+
+       @Override
+       public Optional<WriterTarget> target() {
+               return Optional.empty();
+       }
+
+       @Override
+       public Optional<RDFSyntax> syntax() {
+               return Optional.empty();
+       }
+
+       @Override
+       public Optional<RDF> rdf() {
+               return Optional.empty();
+       }
+
+       @SuppressWarnings("rawtypes")
+       @Override
+       public Map<Option, Object> options() {
+               return Collections.emptyMap();
+       }
+
+       @Override
+       public WriterConfig withSyntax(RDFSyntax syntax) {
+               return new WithSyntax(this, syntax);
+       }
+
+       @Override
+       public WriterConfig withSource(WriterSource source) {
+               return new WithSource(this, source);
+       }
+
+       @Override
+       public WriterConfig withTarget(WriterTarget target) {
+               return new WithTarget(this, target);
+       }
+
+       @Override
+       public WriterConfig withRDF(RDF rdf) {
+               return new WithRDF(this, rdf);
+       }
+
+       @Override
+       public <V> WriterConfig withOption(Option<V> o, V v) {
+               return new WithOption(this, o, v);
+       }
+
+       static class WithParent extends ImmutableWriterConfigImpl implements 
ImmutableWriterConfig {
+               private final ImmutableWriterConfig parent;
+
+               WithParent(ImmutableWriterConfig parent) {
+                       this.parent = parent;
+               }
+
+               @Override
+               public Optional<WriterSource> source() {
+                       return parent.source();
+               }
+
+               @Override
+               public Optional<WriterTarget> target() {
+                       return parent.target();
+               }
+
+               @Override
+               public Optional<RDFSyntax> syntax() {
+                       return parent.syntax();
+               }
+
+               @Override
+               public Optional<RDF> rdf() {
+                       return parent.rdf();
+               }
+
+               @Override
+               public Map<Option, Object> options() {
+                       return parent.options();
+               }
+       }
+
+       static final class WithSyntax extends WithParent implements 
WriterConfig {
+               private final RDFSyntax syntax;
+
+               public WithSyntax(ImmutableWriterConfig parent, RDFSyntax 
syntax) {
+                       super(parent);
+                       this.syntax = syntax;
+               }
+
+               @Override
+               public Optional<RDFSyntax> syntax() {
+                       return Optional.ofNullable(syntax);
+               }
+       }
+
+       static final class WithSource extends WithParent implements 
WriterConfig {
+               private final WriterSource source;
+
+               public WithSource(ImmutableWriterConfig parent, WriterSource 
source) {
+                       super(parent);
+                       this.source = source;
+               }
+
+               @Override
+               public Optional<WriterSource> source() {
+                       return Optional.ofNullable(source);
+               }
+       }
+
+       static class WithTarget extends WithParent implements WriterConfig {
+               private final WriterTarget target;
+
+               public WithTarget(ImmutableWriterConfig parent, WriterTarget 
target) {
+                       super(parent);
+                       this.target = target;
+               }
+
+               @Override
+               public Optional<WriterTarget> target() {
+                       return Optional.ofNullable(target);
+               }
+       }
+       
+       static class WithRDF extends WithParent implements WriterConfig {
+               private final RDF rdf;
+
+               public WithRDF(ImmutableWriterConfig parent, RDF rdf) {
+                       super(parent);
+                       this.rdf = rdf;
+               }
+               @Override
+               public Optional<RDF> rdf() {
+                       return Optional.ofNullable(rdf);
+               }
+
+       }       
+
+       static class WithOption extends WithParent implements WriterConfig {
+               private Option o;
+               private Object v;
+               public <V> WithOption(ImmutableWriterConfig parent, Option<V> 
o, V v) {
+                       super(parent);
+                       this.o = o;
+                       this.v = v;
+               }
+               @Override
+               public Map<Option, Object> options() {
+                       // Add to parent options
+                       Map<Option, Object> options = super.options();
+                       if (v == null) {
+                               options.remove(o);
+                       } else {
+                               options.put(o, v);
+                       }
+                       return options;                 
+               }
+       }
+       
+       @SuppressWarnings("rawtypes")
+       final static class SnapshotWriterConfig extends 
ImmutableWriterConfigImpl {
+               private static final long serialVersionUID = 1L;
+               private final RDF rdf;
+               private final RDFSyntax syntax;
+               private final WriterSource source;
+               private final WriterTarget target;
+               private final Map<Option, Object> options;
+
+               SnapshotWriterConfig(WriterConfig old) {
+                       this(
+                               old.rdf().orElse(null),
+                               old.syntax().orElse(null),
+                               old.source().orElse(null),
+                               old.target().orElse(null),
+                               old.options(),
+                               null);
+               }
+               
+               SnapshotWriterConfig(RDF rdf, RDFSyntax syntax, WriterSource 
source, WriterTarget target, Map<Option, Object> options, 
+                               ExecutorService executor) {
+                       this.rdf = rdf;
+                       this.syntax = syntax;
+                       this.source = source;
+                       this.target = target;
+                       // We'll make a copy
+                       this.options = Collections.unmodifiableMap(new 
HashMap<Option, Object>(options));
+               }
+
+               @Override
+               public Optional<WriterSource> source() {
+                       return Optional.ofNullable(source);
+               }
+
+               @Override
+               public Optional<WriterTarget> target() {
+                       return Optional.ofNullable(target);
+               }
+
+               @Override
+               public Optional<RDFSyntax> syntax() {
+                       return Optional.ofNullable(syntax);
+               }
+
+               @Override
+               public Optional<RDF> rdf() {
+                       return Optional.ofNullable(rdf);
+               }
+
+               @Override
+               public Map<Option, Object> options() {
+                       // return a mutable copy so our children can build on it
+                       return new HashMap<Option,Object>(options);
+               }
+       }       
+       
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f9613b90/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
deleted file mode 100644
index e83a3a6..0000000
--- 
a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullParserConfig.java
+++ /dev/null
@@ -1,314 +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.commons.rdf.api.io;
-
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-
-import org.apache.commons.rdf.api.IRI;
-import org.apache.commons.rdf.api.RDF;
-import org.apache.commons.rdf.api.RDFSyntax;
-import org.apache.commons.rdf.api.io.ParserConfig.ImmutableParserConfig;
-
-class NullParserConfig implements ImmutableParserConfig, Serializable {
-       
-       private static final long serialVersionUID = 1L;
-
-       @Override
-       public Optional<ParserSource> source() {
-               return Optional.empty();
-       }
-
-       @Override
-       public Optional<IRI> base() {
-               return Optional.empty();
-       }
-
-       @Override
-       public Optional<ParserTarget> target() {
-               return Optional.empty();
-       }
-
-       @Override
-       public Optional<RDFSyntax> syntax() {
-               return Optional.empty();
-       }
-
-       @Override
-       public Optional<RDF> rdf() {
-               return Optional.empty();
-       }
-
-       @Override
-       public Map<Option, Object> options() {
-               // Always a fresh map, so that our children can
-               // mutate it on the fly
-               return new HashMap<>();
-       }
-
-       @Override
-       public ParserConfig withSyntax(RDFSyntax syntax) {
-               return new WithSyntax(this, syntax);
-       }
-
-       @SuppressWarnings("rawtypes")
-       @Override
-       public ParserConfig withSource(ParserSource source) {
-               return new WithSource(this, source);
-       }
-
-       @SuppressWarnings("rawtypes")
-       @Override
-       public ParserConfig withTarget(ParserTarget target) {
-               return new WithTarget(this, target);
-       }
-
-       @Override
-       public ParserConfig withRDF(RDF rdf) {
-               return new WithRDF(this, rdf);
-       }
-
-       @Override
-       public ParserConfig withBase(IRI base) {
-               return new WithBase(this, base);
-       }
-
-       @Override
-       public <V> ParserConfig withOption(Option<V> o, V v) {
-               return new WithOption(this, o, v);
-       }
-
-       @SuppressWarnings("rawtypes")
-       private static final class WithOption extends WithParent {
-
-               private Option o;
-               private Object v;
-
-               public <V> WithOption(final ImmutableParserConfig parent, final 
Option<V> o, V v) {
-                       super(parent);
-                       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;
-               }
-       }
-
-       private static final class WithBase extends WithParent {
-               private final IRI base;
-
-               WithBase(final ImmutableParserConfig parent, final IRI base) {
-                       super(parent);
-                       this.base = base;
-               }
-
-               @Override
-               public Optional<IRI> base() {
-                       return Optional.ofNullable(base);
-               }
-       }
-
-       private static final class WithRDF extends WithParent {
-               private final RDF rdf;
-
-               WithRDF(final ImmutableParserConfig parent, final RDF rdf) {
-                       super(parent);
-                       this.rdf = rdf;
-               }
-
-               @Override
-               public Optional<RDF> rdf() {
-                       return Optional.ofNullable(rdf);
-               }
-       }
-
-       @SuppressWarnings("rawtypes")
-       private static final class WithTarget extends WithParent {
-               private final ParserTarget target;
-
-               WithTarget(final ImmutableParserConfig parent, final 
ParserTarget target) {
-                       super(parent);
-                       this.target = target;
-               }
-
-               @Override
-               public Optional<ParserTarget> target() {
-                       return Optional.ofNullable(target);
-               }
-       }
-
-       @SuppressWarnings("rawtypes")
-       private static final class WithSource extends WithParent {
-               private final ParserSource source;
-
-               WithSource(ImmutableParserConfig parent, ParserSource source) {
-                       super(parent);
-                       this.source = source;
-               }
-
-               @Override
-               public Optional<ParserSource> source() {
-                       return Optional.ofNullable(source);
-               }
-       }
-
-       private static final class WithSyntax extends WithParent {
-               private final RDFSyntax syntax;
-
-               WithSyntax(ImmutableParserConfig parent, RDFSyntax syntax) {
-                       super(parent);
-                       this.syntax = syntax;
-               }
-
-               @Override
-               public Optional<RDFSyntax> syntax() {
-                       return Optional.ofNullable(syntax);
-               }
-       }
-
-       abstract static class WithParent extends NullParserConfig implements 
ImmutableParserConfig {
-               private final ImmutableParserConfig parent;
-
-               /**
-                * Override which object to use by Serializable, avoiding
-                * serialization of the whole WithParent tree. 
-                * 
-                * This method is protected so it will be invoked for all 
subclasses of
-                * WithParent.
-                * 
-                * @return a {@link SnapshotParserConfig}
-                * @throws ObjectStreamException
-                */
-               protected Object writeReplace() throws ObjectStreamException {
-                       return new SnapshotParserConfig(this);
-               }
-               
-               WithParent(ImmutableParserConfig parserConfig) {
-                       this.parent = Objects.requireNonNull(parserConfig);
-               }
-
-               @SuppressWarnings("rawtypes")
-               @Override
-               public Optional<ParserSource> source() {
-                       return parent.source();
-               }
-
-               @Override
-               public Optional<IRI> base() {
-                       return parent.base();
-               }
-
-               @SuppressWarnings("rawtypes")
-               @Override
-               public Optional<ParserTarget> target() {
-                       return parent.target();
-               }
-
-               @Override
-               public Optional<RDFSyntax> syntax() {
-                       return parent.syntax();
-               }
-
-               @Override
-               public Optional<RDF> rdf() {
-                       return parent.rdf();
-               }
-
-               @SuppressWarnings("rawtypes")
-               @Override
-               public Map<Option, Object> options() {
-                       return parent.options();
-               }
-       }
-
-       @SuppressWarnings("rawtypes")
-       final static class SnapshotParserConfig extends NullParserConfig {
-               private static final long serialVersionUID = 1L;
-               private final RDF rdf;
-               private final RDFSyntax syntax;
-               private final IRI base;
-               private final ParserSource source;
-               private final ParserTarget target;
-               private final Map<Option, Object> options;
-
-               SnapshotParserConfig(ParserConfig old) {
-                       this(
-                               old.rdf().orElse(null),
-                               old.syntax().orElse(null),
-                               old.base().orElse(null),
-                               old.source().orElse(null),
-                               old.target().orElse(null),
-                               old.options());
-               }
-               
-               SnapshotParserConfig(RDF rdf, RDFSyntax syntax, IRI base, 
ParserSource source, ParserTarget target, Map<Option, Object> options) {
-                       this.rdf = rdf;
-                       this.syntax = syntax;
-                       this.base = base;
-                       this.source = source;
-                       this.target = target;
-                       // We'll make a copy
-                       this.options = Collections.unmodifiableMap(new 
HashMap<Option, Object>(options));
-               }
-
-               @Override
-               public Optional<ParserSource> source() {
-                       return Optional.ofNullable(source);
-               }
-
-               @Override
-               public Optional<IRI> base() {
-                       return Optional.ofNullable(base);
-               }
-
-               @Override
-               public Optional<ParserTarget> target() {
-                       return Optional.ofNullable(target);
-               }
-
-               @Override
-               public Optional<RDFSyntax> syntax() {
-                       return Optional.ofNullable(syntax);
-               }
-
-               @Override
-               public Optional<RDF> rdf() {
-                       return Optional.ofNullable(rdf);
-               }
-
-               @Override
-               public Map<Option, Object> 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/f9613b90/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullWriterConfig.java
----------------------------------------------------------------------
diff --git 
a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullWriterConfig.java
 
b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullWriterConfig.java
deleted file mode 100644
index e26cfaf..0000000
--- 
a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/NullWriterConfig.java
+++ /dev/null
@@ -1,252 +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.commons.rdf.api.io;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-
-import org.apache.commons.rdf.api.IRI;
-import org.apache.commons.rdf.api.RDF;
-import org.apache.commons.rdf.api.RDFSyntax;
-import org.apache.commons.rdf.api.io.WriterConfig.ImmutableWriterConfig;
-
-class NullWriterConfig implements ImmutableWriterConfig, Serializable {
-
-       private static final long serialVersionUID = 1L;
-
-       @Override
-       public Optional<WriterSource> source() {
-               return Optional.empty();
-       }
-
-       @Override
-       public Optional<WriterTarget> target() {
-               return Optional.empty();
-       }
-
-       @Override
-       public Optional<RDFSyntax> syntax() {
-               return Optional.empty();
-       }
-
-       @Override
-       public Optional<RDF> rdf() {
-               return Optional.empty();
-       }
-
-       @SuppressWarnings("rawtypes")
-       @Override
-       public Map<Option, Object> options() {
-               return Collections.emptyMap();
-       }
-
-       @Override
-       public WriterConfig withSyntax(RDFSyntax syntax) {
-               return new WithSyntax(this, syntax);
-       }
-
-       @Override
-       public WriterConfig withSource(WriterSource source) {
-               return new WithSource(this, source);
-       }
-
-       @Override
-       public WriterConfig withTarget(WriterTarget target) {
-               return new WithTarget(this, target);
-       }
-
-       @Override
-       public WriterConfig withRDF(RDF rdf) {
-               return new WithRDF(this, rdf);
-       }
-
-       @Override
-       public <V> WriterConfig withOption(Option<V> o, V v) {
-               return new WithOption(this, o, v);
-       }
-
-       static class WithParent extends NullWriterConfig implements 
ImmutableWriterConfig {
-               private final ImmutableWriterConfig parent;
-
-               WithParent(ImmutableWriterConfig parent) {
-                       this.parent = parent;
-               }
-
-               @Override
-               public Optional<WriterSource> source() {
-                       return parent.source();
-               }
-
-               @Override
-               public Optional<WriterTarget> target() {
-                       return parent.target();
-               }
-
-               @Override
-               public Optional<RDFSyntax> syntax() {
-                       return parent.syntax();
-               }
-
-               @Override
-               public Optional<RDF> rdf() {
-                       return parent.rdf();
-               }
-
-               @Override
-               public Map<Option, Object> options() {
-                       return parent.options();
-               }
-       }
-
-       static final class WithSyntax extends WithParent implements 
WriterConfig {
-               private final RDFSyntax syntax;
-
-               public WithSyntax(ImmutableWriterConfig parent, RDFSyntax 
syntax) {
-                       super(parent);
-                       this.syntax = syntax;
-               }
-
-               @Override
-               public Optional<RDFSyntax> syntax() {
-                       return Optional.ofNullable(syntax);
-               }
-       }
-
-       static final class WithSource extends WithParent implements 
WriterConfig {
-               private final WriterSource source;
-
-               public WithSource(ImmutableWriterConfig parent, WriterSource 
source) {
-                       super(parent);
-                       this.source = source;
-               }
-
-               @Override
-               public Optional<WriterSource> source() {
-                       return Optional.ofNullable(source);
-               }
-       }
-
-       static class WithTarget extends WithParent implements WriterConfig {
-               private final WriterTarget target;
-
-               public WithTarget(ImmutableWriterConfig parent, WriterTarget 
target) {
-                       super(parent);
-                       this.target = target;
-               }
-
-               @Override
-               public Optional<WriterTarget> target() {
-                       return Optional.ofNullable(target);
-               }
-       }
-       
-       static class WithRDF extends WithParent implements WriterConfig {
-               private final RDF rdf;
-
-               public WithRDF(ImmutableWriterConfig parent, RDF rdf) {
-                       super(parent);
-                       this.rdf = rdf;
-               }
-               @Override
-               public Optional<RDF> rdf() {
-                       return Optional.ofNullable(rdf);
-               }
-
-       }       
-
-       static class WithOption extends WithParent implements WriterConfig {
-               private Option o;
-               private Object v;
-               public <V> WithOption(ImmutableWriterConfig parent, Option<V> 
o, V v) {
-                       super(parent);
-                       this.o = o;
-                       this.v = v;
-               }
-               @Override
-               public Map<Option, Object> options() {
-                       // Add to parent options
-                       Map<Option, Object> options = super.options();
-                       if (v == null) {
-                               options.remove(o);
-                       } else {
-                               options.put(o, v);
-                       }
-                       return options;                 
-               }
-       }
-       
-       @SuppressWarnings("rawtypes")
-       final static class SnapshotWriterConfig extends NullWriterConfig {
-               private static final long serialVersionUID = 1L;
-               private final RDF rdf;
-               private final RDFSyntax syntax;
-               private final WriterSource source;
-               private final WriterTarget target;
-               private final Map<Option, Object> options;
-
-               SnapshotWriterConfig(WriterConfig old) {
-                       this(
-                               old.rdf().orElse(null),
-                               old.syntax().orElse(null),
-                               old.source().orElse(null),
-                               old.target().orElse(null),
-                               old.options(),
-                               null);
-               }
-               
-               SnapshotWriterConfig(RDF rdf, RDFSyntax syntax, WriterSource 
source, WriterTarget target, Map<Option, Object> options, 
-                               ExecutorService executor) {
-                       this.rdf = rdf;
-                       this.syntax = syntax;
-                       this.source = source;
-                       this.target = target;
-                       // We'll make a copy
-                       this.options = Collections.unmodifiableMap(new 
HashMap<Option, Object>(options));
-               }
-
-               @Override
-               public Optional<WriterSource> source() {
-                       return Optional.ofNullable(source);
-               }
-
-               @Override
-               public Optional<WriterTarget> target() {
-                       return Optional.ofNullable(target);
-               }
-
-               @Override
-               public Optional<RDFSyntax> syntax() {
-                       return Optional.ofNullable(syntax);
-               }
-
-               @Override
-               public Optional<RDF> rdf() {
-                       return Optional.ofNullable(rdf);
-               }
-
-               @Override
-               public Map<Option, Object> options() {
-                       // return a mutable copy so our children can build on it
-                       return new HashMap<Option,Object>(options);
-               }
-       }       
-       
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f9613b90/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfig.java
----------------------------------------------------------------------
diff --git 
a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfig.java 
b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfig.java
index ee7d65f..50aa0ae 100644
--- 
a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfig.java
+++ 
b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfig.java
@@ -23,7 +23,7 @@ import java.util.Optional;
 import org.apache.commons.rdf.api.IRI;
 import org.apache.commons.rdf.api.RDF;
 import org.apache.commons.rdf.api.RDFSyntax;
-import org.apache.commons.rdf.api.io.NullParserConfig.SnapshotParserConfig;
+import 
org.apache.commons.rdf.api.io.ImmutableParserConfigImpl.SnapshotParserConfig;
 
 @SuppressWarnings("rawtypes")
 public interface ParserConfig {
@@ -46,8 +46,8 @@ public interface ParserConfig {
 
        <V> ParserConfig withOption(Option<V> o, V v);  
        
-       static ParserConfig immutable() {
-               return new NullParserConfig();
+       static ImmutableParserConfig immutable() {
+               return new ImmutableParserConfigImpl();
        }
 
        static ParserConfig mutable() {

http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f9613b90/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/WriterConfig.java
----------------------------------------------------------------------
diff --git 
a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/WriterConfig.java 
b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/WriterConfig.java
index bbe781f..8385b4a 100644
--- 
a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/WriterConfig.java
+++ 
b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/WriterConfig.java
@@ -22,7 +22,7 @@ import java.util.Optional;
 
 import org.apache.commons.rdf.api.RDF;
 import org.apache.commons.rdf.api.RDFSyntax;
-import org.apache.commons.rdf.api.io.NullWriterConfig.SnapshotWriterConfig;
+import 
org.apache.commons.rdf.api.io.ImmutableWriterConfigImpl.SnapshotWriterConfig;
 
 @SuppressWarnings("rawtypes")
 public interface WriterConfig {
@@ -39,8 +39,8 @@ public interface WriterConfig {
 
        <V> WriterConfig withOption(Option<V> o, V v);  
        
-       static WriterConfig immutable() {
-               return new NullWriterConfig();
+       static ImmutableWriterConfig immutable() {
+               return new ImmutableWriterConfigImpl();
        }
 
        static WriterConfig mutable() {         

Reply via email to