Repository: commons-rdf Updated Branches: refs/heads/fluent-parser f9613b90a -> 996e40a29
Custom serialization of 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/f68f53d6 Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/f68f53d6 Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/f68f53d6 Branch: refs/heads/fluent-parser Commit: f68f53d69a0e71b638aa0d5451e47ac73eacf62a Parents: f9613b9 Author: Stian Soiland-Reyes <st...@apache.org> Authored: Tue Feb 20 11:25:59 2018 +0000 Committer: Stian Soiland-Reyes <st...@apache.org> Committed: Tue Feb 20 11:25:59 2018 +0000 ---------------------------------------------------------------------- .../rdf/api/io/ImmutableWriterConfigImpl.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/f68f53d6/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 index 4c238d9..2b5e5e1 100644 --- 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 @@ -16,6 +16,7 @@ */ package org.apache.commons.rdf.api.io; +import java.io.ObjectStreamException; import java.io.Serializable; import java.util.Collections; import java.util.HashMap; @@ -23,7 +24,6 @@ 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; @@ -86,6 +86,20 @@ class ImmutableWriterConfigImpl implements ImmutableWriterConfig, Serializable { static class WithParent extends ImmutableWriterConfigImpl implements ImmutableWriterConfig { private final ImmutableWriterConfig 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 SnapshotWriterConfig} + * @throws ObjectStreamException + */ + protected Object writeReplace() throws ObjectStreamException { + return new SnapshotWriterConfig(this); + } + WithParent(ImmutableWriterConfig parent) { this.parent = parent; } @@ -110,6 +124,7 @@ class ImmutableWriterConfigImpl implements ImmutableWriterConfig, Serializable { return parent.rdf(); } + @SuppressWarnings("rawtypes") @Override public Map<Option, Object> options() { return parent.options(); @@ -172,6 +187,7 @@ class ImmutableWriterConfigImpl implements ImmutableWriterConfig, Serializable { } + @SuppressWarnings("rawtypes") static class WithOption extends WithParent implements WriterConfig { private Option o; private Object v;