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 + } + }
