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());
+	}
+
 }