@Test public void mustBeAbleToUseVoidTypeInForeach() { final JavaTestKit probe = new JavaTestKit(system); final java.lang.Iterable<String> input = Arrays.asList("a", "b", "c"); Source<String, NotUsed> ints = Source.from(input); final CompletionStage<Done> completion = ints.runForeach(elem -> probe.getRef().tell(elem, ActorRef.noSender()), materializer); completion.thenAccept(elem -> probe.getRef().tell(String.valueOf(elem), ActorRef.noSender())); probe.expectMsgEquals("a"); probe.expectMsgEquals("b"); probe.expectMsgEquals("c"); probe.expectMsgEquals("Done"); }
@Test public void demonstrateFilterAndMap() { final SilenceSystemOut.System System = SilenceSystemOut.get(); // #first-sample // #authors-filter-map final Source<Author, NotUsed> authors = tweets.filter(t -> t.hashtags().contains(AKKA)).map(t -> t.author); // #first-sample // #authors-filter-map new Object() { // #authors-collect JavaPartialFunction<Tweet, Author> collectFunction = new JavaPartialFunction<Tweet, Author>() { public Author apply(Tweet t, boolean isCheck) { if (t.hashtags().contains(AKKA)) { if (isCheck) return null; // to spare the expensive or side-effecting code return t.author; } else { throw noMatch(); } } }; final Source<Author, NotUsed> authors = tweets.collect(collectFunction); // #authors-collect }; // #first-sample // #authors-foreachsink-println authors.runWith(Sink.foreach(a -> System.out.println(a)), mat); // #first-sample // #authors-foreachsink-println // #authors-foreach-println authors.runForeach(a -> System.out.println(a), mat); // #authors-foreach-println }