test resolveStream() .. and use correct path in flatMap() !
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/bc6f8a23 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/bc6f8a23 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/bc6f8a23 Branch: refs/heads/master Commit: bc6f8a23a43181c23f269ca8997d8c1c9af5dbd2 Parents: 135155e Author: Stian Soiland-Reyes <[email protected]> Authored: Mon Aug 29 19:05:33 2016 +0100 Committer: Stian Soiland-Reyes <[email protected]> Committed: Mon Aug 29 19:05:33 2016 +0100 ---------------------------------------------------------------------- .../apache/taverna/databundle/DataBundles.java | 2 +- .../taverna/databundle/TestDataBundles.java | 40 ++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/bc6f8a23/taverna-databundle/src/main/java/org/apache/taverna/databundle/DataBundles.java ---------------------------------------------------------------------- diff --git a/taverna-databundle/src/main/java/org/apache/taverna/databundle/DataBundles.java b/taverna-databundle/src/main/java/org/apache/taverna/databundle/DataBundles.java index 9db6a2c..897bc15 100644 --- a/taverna-databundle/src/main/java/org/apache/taverna/databundle/DataBundles.java +++ b/taverna-databundle/src/main/java/org/apache/taverna/databundle/DataBundles.java @@ -702,7 +702,7 @@ public class DataBundles extends Bundles { return Files.walk(path) // avoid re-recursion .filter(p -> !Files.isDirectory(p)) - .flatMap(p -> resolveItemAsStream(path, type, options)); + .flatMap(p -> resolveItemAsStream(p, type, options)); } catch (IOException e) { throw new UncheckedIOException(e); } http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/bc6f8a23/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java ---------------------------------------------------------------------- diff --git a/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java b/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java index 6c6ab4b..0a67b95 100644 --- a/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java +++ b/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java @@ -43,6 +43,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.stream.Stream; import org.apache.taverna.databundle.DataBundles.ResolveOptions; import org.apache.taverna.robundle.Bundle; @@ -603,6 +604,45 @@ public class TestDataBundles { assertEquals("test0,2", resolved.get(0).get(2)); assertEquals("test2,0", resolved.get(2).get(0)); } + + + @Test + public void resolveStream() throws Exception { + Path inputs = DataBundles.getInputs(dataBundle); + Path list = DataBundles.getPort(inputs, "in1"); + DataBundles.createList(list); + + Path nested0 = DataBundles.newListItem(list); + DataBundles.newListItem(nested0); + DataBundles.setStringValue(DataBundles.newListItem(nested0), "test0,0"); + DataBundles.setStringValue(DataBundles.newListItem(nested0), "test0,1"); + DataBundles.setStringValue(DataBundles.newListItem(nested0), "test0,2"); + DataBundles.setError(DataBundles.newListItem(nested0), "Ignore me", "This error is hidden"); + Path nested1 = DataBundles.newListItem(list); + DataBundles.newListItem(nested1); // empty + Path nested2 = DataBundles.newListItem(list); + DataBundles.newListItem(nested2); + DataBundles.setStringValue(DataBundles.newListItem(nested2), "test2,0"); + DataBundles.setReference(DataBundles.newListItem(nested2), URI.create("http://example.com/")); + + + + assertEquals(6, DataBundles.resolveAsStream(list, Object.class).count()); + assertEquals(6, DataBundles.resolveAsStream(list, Path.class).count()); + assertEquals(5, DataBundles.resolveAsStream(list, URI.class).count()); + assertEquals(1, DataBundles.resolveAsStream(list, URL.class).count()); + assertEquals(0, DataBundles.resolveAsStream(list, File.class).count()); + assertEquals(1, DataBundles.resolveAsStream(list, ErrorDocument.class).count()); + // Let's have a look at one of the types in detail + assertEquals(4, DataBundles.resolveAsStream(list, String.class).count()); + Stream<String> resolved = DataBundles.resolveAsStream(list, String.class); + Object[] strings = resolved.sorted().map(t -> t.replace("test", "X")).toArray(); + // NOTE: We can only assume the below order because we used .sorted() + assertEquals("X0,0", strings[0]); + assertEquals("X0,1", strings[1]); + assertEquals("X0,2", strings[2]); + assertEquals("X2,0", strings[3]); + } @Test public void resolveURIs() throws Exception {
