Export inner classes
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/725e8d08 Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/725e8d08 Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/725e8d08 Branch: refs/heads/fluent-parser Commit: 725e8d086a0306ccdb120d117ee9c59bb7f11e3e Parents: fb9a60b Author: Stian Soiland-Reyes <st...@apache.org> Authored: Thu Feb 15 00:55:04 2018 +0000 Committer: Stian Soiland-Reyes <st...@apache.org> Committed: Thu Feb 15 00:55:04 2018 +0000 ---------------------------------------------------------------------- .../rdf/api/io/AbstractParserFactory.java | 178 ++----------------- .../org/apache/commons/rdf/api/io/IRIImpl.java | 47 +++++ .../commons/rdf/api/io/IRIParserSource.java | 47 +++++ .../commons/rdf/api/io/InputParserSource.java | 44 +++++ .../commons/rdf/api/io/ParserConfigImpl.java | 90 ++++++++++ .../commons/rdf/api/io/PathParserSource.java | 49 +++++ 6 files changed, 291 insertions(+), 164 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/725e8d08/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/AbstractParserFactory.java ---------------------------------------------------------------------- diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/AbstractParserFactory.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/AbstractParserFactory.java index 2e37b81..725a569 100644 --- a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/AbstractParserFactory.java +++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/AbstractParserFactory.java @@ -16,15 +16,9 @@ */ package org.apache.commons.rdf.api.io; -import java.io.IOException; import java.io.InputStream; import java.io.Serializable; -import java.net.URL; -import java.nio.file.Files; import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; @@ -66,170 +60,26 @@ Async { } } - static final class InputParserSource implements ParserSource { - private final InputStream is; - - private InputParserSource(InputStream is) { - this.is = is; - } - - @Override - public Object src() { - return is; - } - - @Override - public InputStream inputStream() throws IOException { - return is; - } - - @Override - public Optional iri() { - return Optional.empty(); - } - } - - private final class PathParserSource implements ParserSource<Path> { - private final Path path; - - private PathParserSource(Path path) { - this.path = path; - } - - @Override - public Path src() { - return path; - } - - @Override - public InputStream inputStream() throws IOException { - return Files.newInputStream(path); - } + private boolean mutable = false; + private ParserConfigImpl config = new ParserConfigImpl(); - @Override - public Optional<IRI> iri() { - final String uri = path.toUri().toString(); - return Optional.of(new IRIImpl(uri)); - } + @Override + public NeedTargetOrRDF syntax(RDFSyntax syntax) { + return mutate(config::withSyntax, syntax); } - private final class IRIParserSource implements ParserSource<IRI> { - private final IRI iri; - - private IRIParserSource(IRI iri) { - this.iri = iri; - } - - @Override - public IRI src() { - return iri; - } - - @Override - public InputStream inputStream() throws IOException { - return new URL(iri.getIRIString()).openStream(); - } - - @Override - public Optional<IRI> iri() { - return Optional.of(iri); - } + @FunctionalInterface + private interface WithValue<V> { + ParserConfig withValue(V value); } - - private final class IRIImpl implements IRI { - private final String uri; - - private IRIImpl(String uri) { - this.uri = uri; - } - - @Override - public String ntriplesString() { - return "<" + uri + ">"; - } - - @Override - public String getIRIString() { - return uri; - } - - @Override - public boolean equals(Object obj) { - return (obj instanceof IRI) && ((IRI) obj).getIRIString().equals(uri); - } - - @Override - public int hashCode() { - return uri.hashCode(); - } - } - - public static final class ParserConfigImpl implements Cloneable, Serializable, ParserConfig { - private static final long serialVersionUID = 1L; - private RDF rdf = null; - private RDFSyntax syntax = null; - private IRI base = null; - private ParserSource source = null; - private ParserTarget target = null; - final private Map<Option, Object> options = new HashMap<>(); - - public ParserConfigImpl() { - } - - public ParserConfigImpl(ParserConfig old) { - rdf = old.rdf().orElse(null); - syntax = old.syntax().orElse(null); - base = old.base().orElse(null); - source = old.source().orElse(null); - target = old.target().orElse(null); - options.putAll(old.options()); - } - - @Override - protected Object clone() { - return new ParserConfigImpl(this); - } - - @Override - public Optional<ParserSource> source() { - return Optional.of(source); - } - - @Override - public Optional<IRI> base() { - return Optional.of(base); - } - - @Override - public Optional<ParserTarget> target() { - return Optional.of(target); - } - - @Override - public Optional<RDFSyntax> syntax() { - return Optional.of(syntax); - } - - @Override - public Optional<RDF> rdf() { - return Optional.of(rdf); - } - - @Override - public Map<Option, Object> options() { - return options; + + private AbstractParserFactory mutate(WithValue<V> valueFunc, V value) { + if (mutable) { + return valueFunc.withValue(value); + } else { + mutable().mutate(valueFunc, value); } - - } - private boolean mutable = false; - private ParserConfigImpl config = new ParserConfigImpl(); - - @Override - public NeedTargetOrRDF syntax(RDFSyntax syntax) { - AbstractParserFactory c = mutable(); - c.config.syntax = syntax; - return c; } private AbstractParserFactory mutable(boolean mutable) { http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/725e8d08/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/IRIImpl.java ---------------------------------------------------------------------- diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/IRIImpl.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/IRIImpl.java new file mode 100644 index 0000000..fa65e98 --- /dev/null +++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/IRIImpl.java @@ -0,0 +1,47 @@ +/* + * 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 org.apache.commons.rdf.api.IRI; + +final class IRIImpl implements IRI { + private final String uri; + + IRIImpl(String uri) { + this.uri = uri; + } + + @Override + public String ntriplesString() { + return "<" + uri + ">"; + } + + @Override + public String getIRIString() { + return uri; + } + + @Override + public boolean equals(Object obj) { + return (obj instanceof IRI) && ((IRI) obj).getIRIString().equals(uri); + } + + @Override + public int hashCode() { + return uri.hashCode(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/725e8d08/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/IRIParserSource.java ---------------------------------------------------------------------- diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/IRIParserSource.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/IRIParserSource.java new file mode 100644 index 0000000..83a5ea4 --- /dev/null +++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/IRIParserSource.java @@ -0,0 +1,47 @@ +/* + * 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.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Optional; + +import org.apache.commons.rdf.api.IRI; + +final class IRIParserSource implements ParserSource<IRI> { + private final IRI iri; + + IRIParserSource(IRI iri) { + this.iri = iri; + } + + @Override + public IRI src() { + return iri; + } + + @Override + public InputStream inputStream() throws IOException { + return new URL(iri.getIRIString()).openStream(); + } + + @Override + public Optional<IRI> iri() { + return Optional.of(iri); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/725e8d08/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/InputParserSource.java ---------------------------------------------------------------------- diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/InputParserSource.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/InputParserSource.java new file mode 100644 index 0000000..5a99e4b --- /dev/null +++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/InputParserSource.java @@ -0,0 +1,44 @@ +/* + * 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.IOException; +import java.io.InputStream; +import java.util.Optional; + +final class InputParserSource implements ParserSource { + private final InputStream is; + + InputParserSource(InputStream is) { + this.is = is; + } + + @Override + public Object src() { + return is; + } + + @Override + public InputStream inputStream() throws IOException { + return is; + } + + @Override + public Optional iri() { + return Optional.empty(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/725e8d08/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfigImpl.java ---------------------------------------------------------------------- diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfigImpl.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfigImpl.java new file mode 100644 index 0000000..a61e50e --- /dev/null +++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/ParserConfigImpl.java @@ -0,0 +1,90 @@ +/* + * 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.HashMap; +import java.util.Map; +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; + +public final class ParserConfigImpl implements Cloneable, Serializable, ParserConfig { + private static final long serialVersionUID = 1L; + private RDF rdf = null; + private RDFSyntax syntax = null; + private IRI base = null; + private ParserSource source = null; + private ParserTarget target = null; + private final Map<Option, Object> options = new HashMap<>(); + + public ParserConfigImpl() { + } + + public ParserConfigImpl(ParserConfig old) { + rdf = old.rdf().orElse(null); + syntax = old.syntax().orElse(null); + base = old.base().orElse(null); + source = old.source().orElse(null); + target = old.target().orElse(null); + options.putAll(old.options()); + } + + @Override + protected Object clone() { + return new ParserConfigImpl(this); + } + + @Override + public Optional<ParserSource> source() { + return Optional.of(source); + } + + @Override + public Optional<IRI> base() { + return Optional.of(base); + } + + @Override + public Optional<ParserTarget> target() { + return Optional.of(target); + } + + @Override + public Optional<RDFSyntax> syntax() { + return Optional.of(syntax); + } + + @Override + public Optional<RDF> rdf() { + return Optional.of(rdf); + } + + @Override + public Map<Option, Object> options() { + return options; + } + + ParserConfig withSyntax(RDFSyntax syntax) { + this.syntax = syntax; + return this; + } + + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/725e8d08/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/PathParserSource.java ---------------------------------------------------------------------- diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/PathParserSource.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/PathParserSource.java new file mode 100644 index 0000000..7c6e14c --- /dev/null +++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/PathParserSource.java @@ -0,0 +1,49 @@ +/* + * 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.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Optional; + +import org.apache.commons.rdf.api.IRI; + +final class PathParserSource implements ParserSource<Path> { + private final Path path; + + PathParserSource(Path path) { + this.path = path; + } + + @Override + public Path src() { + return path; + } + + @Override + public InputStream inputStream() throws IOException { + return Files.newInputStream(path); + } + + @Override + public Optional<IRI> iri() { + final String uri = path.toUri().toString(); + return Optional.of(new IRIImpl(uri)); + } +} \ No newline at end of file