example for some sink operators #25468

Examples for takeLast, last and lastOption operators
This commit is contained in:
mohammad mehdi 2018-10-25 17:10:36 +03:30 committed by Johan Andrén
parent 91b0c387be
commit ba996f8c5f
6 changed files with 124 additions and 19 deletions

View file

@ -26,4 +26,10 @@ completes. If the stream completes with no elements the @scala[`Future`] @java[`
@@@
## Example
Scala
: @@snip [LastSinkSpec.scala](/akka-stream-tests/src/test/scala/akka/stream/scaladsl/LastSinkSpec.scala) { #last-operator-example }
Java
: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #last-operator-example }

View file

@ -27,3 +27,10 @@ completed with @scala[`None`] @java[an empty `Optional`].
@@@
## Example
Scala
: @@snip [LastSinkSpec.scala](/akka-stream-tests/src/test/scala/akka/stream/scaladsl/LastSinkSpec.scala) { #lastOption-operator-example }
Java
: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #lastOption-operator-example }

View file

@ -28,4 +28,10 @@ If there is a failure signaled in the stream the @scala[`Future`] @java[`Complet
@@@
## Example
Scala
: @@snip [TakeLastSinkSpec.scala](/akka-stream-tests/src/test/scala/akka/stream/scaladsl/TakeLastSinkSpec.scala) { #takeLast-operator-example }
Java
: @@snip [SinkDocExamples.java](/akka-docs/src/test/java/jdocs/stream/operators/SinkDocExamples.java) { #takeLast-operator-example }

View file

@ -6,30 +6,75 @@ package jdocs.stream.operators;
import akka.NotUsed;
import akka.actor.ActorSystem;
import akka.stream.ActorMaterializer;
import akka.stream.Materializer;
import akka.stream.javadsl.Sink;
import akka.stream.javadsl.Source;
import java.util.Arrays;
//#takeLast-operator-example
import akka.japi.Pair;
//#takeLast-operator-example
import java.util.*;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public class SinkDocExamples {
private final static ActorSystem system = ActorSystem.create("SourceFromExample");
private final static Materializer materializer = ActorMaterializer.create(system);
static void reduceExample() throws InterruptedException, ExecutionException, TimeoutException {
final ActorSystem system = ActorSystem.create("SourceFromExample");
final Materializer materializer = ActorMaterializer.create(system);
//#reduce-operator-example
Source<Integer, NotUsed> ints = Source.from(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
CompletionStage<Integer> sum = ints.runWith(Sink.reduce((a, b) -> a + b), materializer);
int result = sum.toCompletableFuture().get(3, TimeUnit.SECONDS);
System.out.println(result);
sum.thenAccept(System.out::println);
// 55
//#reduce-operator-example
}
}
static void takeLastExample() throws InterruptedException, ExecutionException, TimeoutException {
//#takeLast-operator-example
// pair of (Name, GPA)
List<Pair> sortedStudents = Arrays.asList(new Pair<>("Benita", 2.1), new Pair<>("Adrian", 3.1),
new Pair<>("Alexis", 4), new Pair<>("Kendra", 4.2), new Pair<>("Jerrie", 4.3), new Pair<>("Alison", 4.7));
Source<Pair, NotUsed> studentSource = Source.from(sortedStudents);
CompletionStage<List<Pair>> topThree = studentSource.runWith(Sink.takeLast(3), materializer);
topThree.thenAccept(result -> {
System.out.println("#### Top students ####");
for (int i = result.size() - 1; i >= 0; i--) {
Pair<String, Double> s = result.get(i);
System.out.println("Name: " + s.first() + ", " + "GPA: " + s.second());
}
});
/*
#### Top students ####
Name: Alison, GPA: 4.7
Name: Jerrie, GPA: 4.3
Name: Kendra, GPA: 4.2
*/
//#takeLast-operator-example
}
static void lastExample() throws InterruptedException, ExecutionException, TimeoutException {
//#last-operator-example
Source<Integer, NotUsed> source = Source.from(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
CompletionStage<Integer> result = source.runWith(Sink.last(), materializer);
result.thenAccept(System.out::println);
// 10
//#last-operator-example
}
static void lastOptionExample() throws InterruptedException, ExecutionException, TimeoutException {
//#lastOption-operator-example
Source<Integer, NotUsed> source = Source.empty();
CompletionStage<Optional<Integer>> result = source.runWith(Sink.lastOption(), materializer);
result.thenAccept(System.out::println);
// Optional.empty
//#lastOption-operator-example
}
}