Verify resolve() don't break on binaries ... even if its strings are not very usable :)
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/94e01397 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/94e01397 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/94e01397 Branch: refs/heads/master Commit: 94e01397f98307ef37921849eb7dd9ffd279ce72 Parents: 2bd2cf9 Author: Stian Soiland-Reyes <[email protected]> Authored: Sun Aug 28 23:45:42 2016 +0100 Committer: Stian Soiland-Reyes <[email protected]> Committed: Sun Aug 28 23:45:42 2016 +0100 ---------------------------------------------------------------------- .../apache/taverna/databundle/DataBundles.java | 6 ++--- .../taverna/databundle/TestDataBundles.java | 28 +++++++++++++++++--- 2 files changed, 27 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/94e01397/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 0598e10..1c73e4e 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 @@ -443,7 +443,7 @@ public class DataBundles extends Bundles { /** * Deeply resolve a {@link Path} to JVM objects. * <p> - * This method is intended for use with a particular input/output port from + * This method is intended for used with a particular input/output port from * {@link #getPorts(Path)} or {@link #getPort(Path, String)}. * <p> * If the path is <code>null</code> or {@link #isMissing(Path)}, @@ -451,8 +451,8 @@ public class DataBundles extends Bundles { * <p> * If the path {@link #isValue(Path)}, its {@link #getStringValue(Path)} is * returned (assuming an UTF-8 encoding). NOTE: Binary formats (e.g. PNG) - * will NOT be represented correctly as such a String and should be read - * directly with + * will NOT be represented correctly read as UTF-8 String and should + * instead be read directly with * {@link Files#newInputStream(Path, java.nio.file.OpenOption...)}. * <p> * If the path {@link #isError(Path)}, the corresponding http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/94e01397/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 ed87bc7..a3afef9 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 @@ -21,7 +21,11 @@ package org.apache.taverna.databundle; */ -import static org.junit.Assert.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; @@ -29,6 +33,7 @@ import java.io.InputStream; import java.net.URI; import java.net.URL; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.DirectoryStream; import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; @@ -40,8 +45,6 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import org.apache.taverna.databundle.DataBundles; -import org.apache.taverna.databundle.ErrorDocument; import org.apache.taverna.robundle.Bundle; import org.apache.taverna.scufl2.api.container.WorkflowBundle; import org.apache.taverna.scufl2.api.io.WorkflowBundleIO; @@ -568,9 +571,26 @@ public class TestDataBundles { } @Test - public void resolveBreaksOnBinaries() throws Exception { + public void resolveBinariesKindOf() throws Exception { Path inputs = DataBundles.getInputs(dataBundle); Path list = DataBundles.getPort(inputs, "in1"); + Path item = DataBundles.newListItem(list); + + byte[] bytes = new byte[] { + // Those lovely lower bytes who don't work well in UTF-8 + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, + // and some higher ones for fun + -1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18, + -19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31 + }; + Files.write(item, bytes); + List resolved = (List)DataBundles.resolve(list); + + // The below will always fail as several of the above bytes are not parsed as valid UTF-8 + // but instead be substituted with replacement characters. + + //assertArrayEquals(bytes, ((String)resolved.get(0)).getBytes(StandardCharsets.UTF_8)); + } @Test
