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

Reply via email to