diff --git a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java b/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java index 6f1d886cdc..9a0f16d880 100644 --- a/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java +++ b/akka-docs/src/test/java/jdocs/stream/javadsl/cookbook/RecipeDecompress.java @@ -8,19 +8,15 @@ import akka.actor.ActorSystem; import akka.stream.ActorMaterializer; import akka.stream.Materializer; import akka.stream.javadsl.Compression; -import akka.stream.javadsl.Sink; import akka.stream.javadsl.Source; import akka.testkit.javadsl.TestKit; import akka.util.ByteString; import org.junit.AfterClass; +import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.concurrent.TimeUnit; -import java.util.zip.GZIPOutputStream; public class RecipeDecompress extends RecipeTest { @@ -40,28 +36,26 @@ public class RecipeDecompress extends RecipeTest { mat = null; } - private ByteString gzip(final String s) throws IOException { - final ByteArrayOutputStream buf = new ByteArrayOutputStream(); - final GZIPOutputStream out = new GZIPOutputStream(buf); - try { - out.write(s.getBytes(StandardCharsets.UTF_8)); - } finally { - out.close(); - } - return ByteString.fromArray(buf.toByteArray()); - } - @Test public void parseLines() throws Exception { - final Source compressed = Source.single(gzip("Hello World")); + final Source dataStream = + Source.single(ByteString.fromString("Hello World")); + + final Source compressedStream = + dataStream.via(Compression.gzip()); //#decompress-gzip - final Source uncompressed = compressed - .via(Compression.gunzip(100)) - .map(b -> b.utf8String()); + final Source decompressedStream = + compressedStream.via(Compression.gunzip(100)); //#decompress-gzip - uncompressed.runWith(Sink.head(), mat).toCompletableFuture().get(1, TimeUnit.SECONDS); + ByteString decompressedData = + decompressedStream + .runFold(ByteString.empty(), ByteString::concat, mat) + .toCompletableFuture() + .get(1, TimeUnit.SECONDS); + String decompressedString = decompressedData.utf8String(); + Assert.assertEquals("Hello World", decompressedString); } } diff --git a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala b/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala index e88660b1f1..6158d5187c 100644 --- a/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala +++ b/akka-docs/src/test/scala/docs/stream/cookbook/RecipeDecompress.scala @@ -17,19 +17,17 @@ import scala.concurrent.Await import scala.concurrent.duration._ class RecipeDecompress extends RecipeSpec { - def gzip(s: String): ByteString = { - val buf = new ByteArrayOutputStream() - val out = new GZIPOutputStream(buf) - try out.write(s.getBytes(StandardCharsets.UTF_8)) finally out.close() - ByteString(buf.toByteArray) - } - "Recipe for decompressing a Gzip stream" must { "work" in { - val compressed = Source.single(gzip("Hello World")) - //#decompress-gzip import akka.stream.scaladsl.Compression + //#decompress-gzip + + val compressed = + Source.single(ByteString.fromString("Hello World")) + .via(Compression.gzip) + + //#decompress-gzip val uncompressed = compressed.via(Compression.gunzip()) .map(_.utf8String) //#decompress-gzip