diff --git a/akka-stream-tests/src/test/java/akka/stream/javadsl/SourceTest.java b/akka-stream-tests/src/test/java/akka/stream/javadsl/SourceTest.java index 20a94400d3..6501f91165 100644 --- a/akka-stream-tests/src/test/java/akka/stream/javadsl/SourceTest.java +++ b/akka-stream-tests/src/test/java/akka/stream/javadsl/SourceTest.java @@ -770,6 +770,14 @@ public class SourceTest extends StreamTest { future.toCompletableFuture().get(3, TimeUnit.SECONDS); } + @Test + public void createEmptySource() throws Exception { + List actual = Source.empty(Integer.class) + .runWith(Sink.seq(), materializer) + .toCompletableFuture().get(); + assertThat(actual, is(Collections.emptyList())); + } + @Test public void cycleSourceMustGenerateSameSequenceInRepeatedFashion() throws Exception { //#cycle @@ -781,7 +789,7 @@ public class SourceTest extends StreamTest { } @Test(expected = IllegalArgumentException.class) - public void cycleSourceMustThr() throws Throwable { + public void cycleSourceMustThrow() throws Throwable { try { //#cycle-error diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/Source.scala b/akka-stream/src/main/scala/akka/stream/javadsl/Source.scala index 25a4141240..435e7753f2 100755 --- a/akka-stream/src/main/scala/akka/stream/javadsl/Source.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/Source.scala @@ -40,6 +40,11 @@ object Source { */ def empty[O](): Source[O, NotUsed] = _empty.asInstanceOf[Source[O, NotUsed]] + /** + * Create a `Source` with no elements. The result is the same as calling `Source.empty()` + */ + def empty[T](clazz: Class[T]): Source[T, NotUsed] = empty[T]() + /** * Create a `Source` which materializes a [[java.util.concurrent.CompletableFuture]] which controls what element * will be emitted by the Source.