From 0a9283b8da2bda3aed99b5d7fddf892a449b810d Mon Sep 17 00:00:00 2001 From: Jan Ypma Date: Wed, 1 Jun 2016 16:56:48 +0200 Subject: [PATCH] htp #20685 HttpEntity should not care about the materialized type of its Source (#20684) --- .../akka/http/javadsl/model/HttpEntities.java | 24 +++++++++++-------- .../http/javadsl/model/JavaApiTestCases.java | 7 ++++++ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/akka-http-core/src/main/java/akka/http/javadsl/model/HttpEntities.java b/akka-http-core/src/main/java/akka/http/javadsl/model/HttpEntities.java index 10eb5832c8..02d34db036 100644 --- a/akka-http-core/src/main/java/akka/http/javadsl/model/HttpEntities.java +++ b/akka-http-core/src/main/java/akka/http/javadsl/model/HttpEntities.java @@ -66,25 +66,29 @@ public final class HttpEntities { return HttpEntity$.MODULE$.fromPath((akka.http.scaladsl.model.ContentType) contentType, file, chunkSize); } - public static HttpEntity.Default create(ContentType contentType, long contentLength, Source data) { - return new akka.http.scaladsl.model.HttpEntity.Default((akka.http.scaladsl.model.ContentType) contentType, contentLength, data.asScala()); + public static HttpEntity.Default create(ContentType contentType, long contentLength, Source data) { + return new akka.http.scaladsl.model.HttpEntity.Default((akka.http.scaladsl.model.ContentType) contentType, contentLength, toScala(data)); } - public static HttpEntity.Chunked create(ContentType contentType, Source data) { - return akka.http.scaladsl.model.HttpEntity.Chunked$.MODULE$.fromData((akka.http.scaladsl.model.ContentType) contentType, data.asScala()); + public static HttpEntity.Chunked create(ContentType contentType, Source data) { + return akka.http.scaladsl.model.HttpEntity.Chunked$.MODULE$.fromData((akka.http.scaladsl.model.ContentType) contentType, toScala(data)); } - public static HttpEntity.CloseDelimited createCloseDelimited(ContentType contentType, Source data) { - return new akka.http.scaladsl.model.HttpEntity.CloseDelimited((akka.http.scaladsl.model.ContentType) contentType, data.asScala()); + public static HttpEntity.CloseDelimited createCloseDelimited(ContentType contentType, Source data) { + return new akka.http.scaladsl.model.HttpEntity.CloseDelimited((akka.http.scaladsl.model.ContentType) contentType, toScala(data)); } - public static HttpEntity.IndefiniteLength createIndefiniteLength(ContentType contentType, Source data) { - return new akka.http.scaladsl.model.HttpEntity.IndefiniteLength((akka.http.scaladsl.model.ContentType) contentType, data.asScala()); + public static HttpEntity.IndefiniteLength createIndefiniteLength(ContentType contentType, Source data) { + return new akka.http.scaladsl.model.HttpEntity.IndefiniteLength((akka.http.scaladsl.model.ContentType) contentType, toScala(data)); } - public static HttpEntity.Chunked createChunked(ContentType contentType, Source data) { + public static HttpEntity.Chunked createChunked(ContentType contentType, Source data) { return akka.http.scaladsl.model.HttpEntity.Chunked$.MODULE$.fromData( (akka.http.scaladsl.model.ContentType) contentType, - data.asScala()); + toScala(data)); + } + + private static akka.stream.scaladsl.Source toScala(Source javaSource) { + return (akka.stream.scaladsl.Source)javaSource.asScala(); } } diff --git a/akka-http-core/src/test/java/akka/http/javadsl/model/JavaApiTestCases.java b/akka-http-core/src/test/java/akka/http/javadsl/model/JavaApiTestCases.java index 250dc9d391..bc90653ba1 100644 --- a/akka-http-core/src/test/java/akka/http/javadsl/model/JavaApiTestCases.java +++ b/akka-http-core/src/test/java/akka/http/javadsl/model/JavaApiTestCases.java @@ -6,6 +6,8 @@ package akka.http.javadsl.model; import akka.http.javadsl.model.headers.*; import akka.japi.Pair; +import akka.stream.javadsl.Source; +import akka.util.ByteString; public class JavaApiTestCases { /** @@ -96,4 +98,9 @@ public class JavaApiTestCases { return anything; } + + public static void HttpEntity_should_not_care_about_materialized_value_of_its_source() { + Source src = Source.single(ByteString.fromString("hello, world")).mapMaterializedValue(m -> 42); + HttpEntity entity = HttpEntities.create(ContentTypes.TEXT_PLAIN_UTF8, src); // this needs to accept Source + } }