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/19 12:53:57 UTC
[3/3] commons-rdf git commit: DefaultAsyncParser is now in Parser
interface
DefaultAsyncParser is now in Parser interface
Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/9c22589a
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/9c22589a
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/9c22589a
Branch: refs/heads/fluent-parser
Commit: 9c22589a6b121646dbaeed19a9733328f61dec14
Parents: 2dfd491
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Mon Feb 19 09:23:53 2018 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Mon Feb 19 09:23:53 2018 +0000
----------------------------------------------------------------------
.../commons/rdf/api/fluentparser/Sync.java | 4 ---
.../org/apache/commons/rdf/api/io/Parser.java | 30 ++++++++++++++++++++
.../commons/rdf/api/io/ParserConfigBuilder.java | 25 ++++++++++++----
3 files changed, 50 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/9c22589a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/fluentparser/Sync.java
----------------------------------------------------------------------
diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/fluentparser/Sync.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/fluentparser/Sync.java
index 14f321d..c877180 100644
--- a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/fluentparser/Sync.java
+++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/fluentparser/Sync.java
@@ -17,8 +17,6 @@
*/
package org.apache.commons.rdf.api.fluentparser;
-import java.util.concurrent.ExecutorService;
-
import org.apache.commons.rdf.api.io.Option;
import org.apache.commons.rdf.api.io.Parsed;
@@ -26,9 +24,7 @@ public interface Sync<T, S> extends _Buildable {
Sync<T, S> build();
<V> Sync<T, S> option(Option<V> option, V value);
-
Async<T, S> async();
- Async<T, S> async(ExecutorService executor);
Parsed<T, S> parse();
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/9c22589a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/Parser.java
----------------------------------------------------------------------
diff --git a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/Parser.java b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/Parser.java
index 9e9a18a..a1040f2 100644
--- a/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/Parser.java
+++ b/commons-rdf-api/src/main/java/org/apache/commons/rdf/api/io/Parser.java
@@ -16,9 +16,39 @@
*/
package org.apache.commons.rdf.api.io;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
public interface Parser {
@SuppressWarnings("rawtypes")
Parsed parse(ParserConfig config);
+ @SuppressWarnings("rawtypes")
+ default Future<Parsed> parseAsync(ParserConfig config) {
+ return new DefaultAsyncParser(this, config).submit();
+ }
+
+ class DefaultAsyncParser {
+ private static final ThreadGroup THEAD_GROUP = new ThreadGroup("Commons RDF async parser");
+ private static final ExecutorService DEFAULT_EXECUTOR = Executors
+ .newCachedThreadPool(r -> new Thread(THEAD_GROUP, r));
+
+ private final Parser syncParser;
+ private final ParserConfig config;
+
+ DefaultAsyncParser(Parser parser, ParserConfig config) {
+ this.syncParser = parser;
+ this.config = config.asImmutableConfig();
+ }
+
+ Parsed parse() {
+ return syncParser.parse(config);
+ }
+
+ Future<Parsed> submit() {
+ return DEFAULT_EXECUTOR.submit(this::parse);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/9c22589a/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 3409173..9adc6ce 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
@@ -17,9 +17,9 @@
package org.apache.commons.rdf.api.io;
import java.io.InputStream;
-import java.io.Serializable;
import java.nio.file.Path;
import java.util.Optional;
+import java.util.concurrent.Future;
import org.apache.commons.rdf.api.Dataset;
import org.apache.commons.rdf.api.Graph;
@@ -36,11 +36,9 @@ 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 Serializable, NeedTargetOrRDF, NeedTargetOrRDFOrSyntax,
+public final class ParserConfigBuilder implements NeedTargetOrRDF, NeedTargetOrRDFOrSyntax,
NeedSourceOrBase, NeedSourceBased, OptionalTarget, Sync, Async {
- private static final long serialVersionUID = 1L;
-
public ParserConfigBuilder(ParserConfig mutated) {
this.config = mutated;
}
@@ -134,7 +132,7 @@ public final class ParserConfigBuilder implements Serializable, NeedTargetOrRDF,
Parser parser = getParserOrFail(c);
return parser.parse(c);
}
-
+
private static Parser getParserOrFail(ImmutableParserConfig c) {
if (! c.rdf().isPresent()) {
throw new IllegalStateException("ParserState has no RDF instance configured");
@@ -147,4 +145,21 @@ public final class ParserConfigBuilder implements Serializable, NeedTargetOrRDF,
return parser.get();
}
+ @Override
+ public Future parseAsync() {
+ ImmutableParserConfig c = config.asImmutableConfig();
+ Parser parser = getParserOrFail(c);
+ return parser.parseAsync(c);
+ }
+
+ @Override
+ public Async async() {
+ return this;
+ }
+
+ @Override
+ public ParserConfigBuilder build() {
+ return mutate(config.asImmutableConfig());
+ }
+
}