utils for encoding base64 data strings

Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/ae692454
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/ae692454
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/ae692454

Branch: refs/heads/master
Commit: ae6924543241897943c8d998d57fc3cb6d964442
Parents: 068de70
Author: Alex Heneveld <[email protected]>
Authored: Wed Nov 19 15:40:01 2014 +0000
Committer: Alex Heneveld <[email protected]>
Committed: Thu Nov 20 12:47:05 2014 +0000

----------------------------------------------------------------------
 .../test/java/brooklyn/util/ResourceUtilsTest.java |  3 +++
 .../src/main/java/brooklyn/util/net/Urls.java      | 17 +++++++++++++++++
 .../src/test/java/brooklyn/util/net/UrlsTest.java  | 10 +++++++++-
 3 files changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ae692454/core/src/test/java/brooklyn/util/ResourceUtilsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/util/ResourceUtilsTest.java 
b/core/src/test/java/brooklyn/util/ResourceUtilsTest.java
index 56c51cc..0d4ddc1 100644
--- a/core/src/test/java/brooklyn/util/ResourceUtilsTest.java
+++ b/core/src/test/java/brooklyn/util/ResourceUtilsTest.java
@@ -36,6 +36,7 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import brooklyn.util.net.Urls;
 import brooklyn.util.os.Os;
 import brooklyn.util.stream.Streams;
 
@@ -168,5 +169,7 @@ public class ResourceUtilsTest {
         assertEquals(utils.getResourceAsString("data:hello"), "hello");
         assertEquals(utils.getResourceAsString("data://hello"), "hello");
         assertEquals(utils.getResourceAsString("data:hello world"), "hello 
world");
+        assertEquals(utils.getResourceAsString(Urls.asDataUrlBase64("hello 
world")), "hello world");
     }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ae692454/utils/common/src/main/java/brooklyn/util/net/Urls.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/net/Urls.java 
b/utils/common/src/main/java/brooklyn/util/net/Urls.java
index 927051a..63a60f9 100644
--- a/utils/common/src/main/java/brooklyn/util/net/Urls.java
+++ b/utils/common/src/main/java/brooklyn/util/net/Urls.java
@@ -28,10 +28,13 @@ import java.net.URLEncoder;
 
 import javax.annotation.Nullable;
 
+import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
+
 import brooklyn.util.text.Strings;
 
 import com.google.common.base.Function;
 import com.google.common.base.Throwables;
+import com.google.common.net.MediaType;
 
 public class Urls {
 
@@ -208,4 +211,18 @@ public class Urls {
         }
     }
 
+    /** as {@link #asDataUrlBase64(String)} with plain text */
+    public static String asDataUrlBase64(String data) {
+        return asDataUrlBase64(MediaType.PLAIN_TEXT_UTF_8, data.getBytes());
+    }
+    
+    /** 
+     * Creates a "data:..." scheme URL for use with supported parsers.
+     * (But note, by default Java's URL is not one of them.)
+     * It is not necessary to base64 encode it, but good practise;
+     * null type means no type included. */
+    public static String asDataUrlBase64(MediaType type, byte[] bytes) {
+        return "data:"+(type!=null ? type.withoutParameters().toString() : 
"")+";base64,"+new String(Base64Coder.encode(bytes));
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ae692454/utils/common/src/test/java/brooklyn/util/net/UrlsTest.java
----------------------------------------------------------------------
diff --git a/utils/common/src/test/java/brooklyn/util/net/UrlsTest.java 
b/utils/common/src/test/java/brooklyn/util/net/UrlsTest.java
index d0a615c..d27c3b1 100644
--- a/utils/common/src/test/java/brooklyn/util/net/UrlsTest.java
+++ b/utils/common/src/test/java/brooklyn/util/net/UrlsTest.java
@@ -66,5 +66,13 @@ public class UrlsTest {
         assertEquals(Urls.getBasename(""), "");
         assertEquals(Urls.getBasename(null), null);
     }
-    
+
+    @Test
+    public void testDataUrl() throws Exception {
+        String input = "hello world";
+        String url = Urls.asDataUrlBase64(input);
+        Assert.assertEquals(url, "data:text/plain;base64,aGVsbG8gd29ybGQ=");
+        // tests for parsing are in core in ResourceUtilsTest
+    }
+
 }

Reply via email to