From c50fefade9dda051bc248d9cf93e95524aeb8817 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 26 Mar 2016 11:07:26 +0000 Subject: Avoid using Guava's toByteArray --- .../zwobble/mammoth/internal/DocumentToHtml.java | 4 ++-- .../mammoth/internal/docx/InMemoryDocxFile.java | 4 ++-- .../org/zwobble/mammoth/internal/util/Streams.java | 27 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/zwobble/mammoth/internal/util/Streams.java (limited to 'src/main/java/org') diff --git a/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java b/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java index 5fb86b3..26c32fb 100644 --- a/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java +++ b/src/main/java/org/zwobble/mammoth/internal/DocumentToHtml.java @@ -3,7 +3,6 @@ package org.zwobble.mammoth.internal; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.common.io.ByteStreams; import org.zwobble.mammoth.internal.documents.*; import org.zwobble.mammoth.internal.html.Html; import org.zwobble.mammoth.internal.html.HtmlNode; @@ -20,6 +19,7 @@ import java.util.Map; import static org.zwobble.mammoth.internal.util.MammothLists.*; import static org.zwobble.mammoth.internal.util.MammothMaps.map; +import static org.zwobble.mammoth.internal.util.Streams.toByteArray; public class DocumentToHtml { public static InternalResult> convertToHtml(Document document, DocumentToHtmlOptions options) { @@ -214,7 +214,7 @@ public class DocumentToHtml { try { ImmutableMap.Builder attributes = ImmutableMap.builder(); - String base64 = Base64.getEncoder().encodeToString(ByteStreams.toByteArray(image.open())); + String base64 = Base64.getEncoder().encodeToString(toByteArray(image.open())); String src = "data:" + contentType + ";base64," + base64; attributes.put("src", src); diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/InMemoryDocxFile.java b/src/main/java/org/zwobble/mammoth/internal/docx/InMemoryDocxFile.java index 5db03d4..3f55f8c 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/InMemoryDocxFile.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/InMemoryDocxFile.java @@ -2,7 +2,6 @@ package org.zwobble.mammoth.internal.docx; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; -import com.google.common.io.ByteStreams; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -14,6 +13,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import static org.zwobble.mammoth.internal.util.MammothMaps.lookup; +import static org.zwobble.mammoth.internal.util.Streams.toByteArray; public class InMemoryDocxFile implements DocxFile { public static DocxFile fromStream(InputStream stream) throws IOException { @@ -21,7 +21,7 @@ public class InMemoryDocxFile implements DocxFile { ImmutableMap.Builder entries = ImmutableMap.builder(); ZipEntry entry; while ((entry = zipStream.getNextEntry()) != null) { - entries.put(entry.getName(), ByteStreams.toByteArray(zipStream)); + entries.put(entry.getName(), toByteArray(zipStream)); } return new InMemoryDocxFile(entries.build()); } diff --git a/src/main/java/org/zwobble/mammoth/internal/util/Streams.java b/src/main/java/org/zwobble/mammoth/internal/util/Streams.java new file mode 100644 index 0000000..ac0f165 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/util/Streams.java @@ -0,0 +1,27 @@ +package org.zwobble.mammoth.internal.util; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +public class Streams { + private Streams() {} + + public static void copy(InputStream source, OutputStream destination) throws IOException { + byte[] buffer = new byte[4096]; + while (true) { + int bytesRead = source.read(buffer); + if (bytesRead == -1) { + return; + } + destination.write(buffer, 0, bytesRead); + } + } + + public static byte[] toByteArray(InputStream stream) throws IOException { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + copy(stream, output); + return output.toByteArray(); + } +} -- cgit v1.2.3