Merge PatternsCS to Patterns (#26008)

* !act Move some Java API methods from PatternsCS to Patterns.

* Deprecate PatternCS and in favor of Patterns.
This commit is contained in:
kerr 2018-12-06 22:40:43 +08:00 committed by Patrik Nordwall
parent 4f100a1f1e
commit b7f3cbef94
16 changed files with 295 additions and 118 deletions

View file

@ -19,17 +19,16 @@ import akka.actor.Status;
import akka.actor.SupervisorStrategy;
import akka.actor.Terminated;
import akka.actor.AbstractActor;
import akka.pattern.PatternsCS;
import akka.util.Timeout;
import akka.pattern.Patterns;
public class SupervisedAsk {
private static class AskParam {
Props props;
Object message;
Timeout timeout;
Duration timeout;
AskParam(Props props, Object message, Timeout timeout) {
AskParam(Props props, Object message, Duration timeout) {
this.props = props;
this.message = message;
this.timeout = timeout;
@ -77,7 +76,7 @@ public class SupervisedAsk {
getContext().watch(targetActor);
targetActor.forward(askParam.message, getContext());
Scheduler scheduler = getContext().getSystem().scheduler();
timeoutMessage = scheduler.scheduleOnce(askParam.timeout.duration(),
timeoutMessage = scheduler.scheduleOnce(askParam.timeout,
getSelf(), new AskTimeout(), getContext().dispatcher(), null);
})
.match(Terminated.class, message -> {
@ -97,13 +96,13 @@ public class SupervisedAsk {
}
public static CompletionStage<Object> askOf(ActorRef supervisorCreator, Props props,
Object message, Timeout timeout) {
Object message, Duration timeout) {
AskParam param = new AskParam(props, message, timeout);
return PatternsCS.ask(supervisorCreator, param, timeout);
return Patterns.ask(supervisorCreator, param, timeout);
}
synchronized public static ActorRef createSupervisorCreator(
ActorRefFactory factory) {
return factory.actorOf(Props.create(AskSupervisorCreator.class));
}
}
}

View file

@ -11,12 +11,14 @@ import akka.actor.AbstractActor;
import akka.util.Timeout;
import scala.concurrent.duration.FiniteDuration;
import java.time.Duration;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.TimeUnit;
public class SupervisedAskSpec {
public Object execute(Class<? extends AbstractActor> someActor,
Object message, Timeout timeout, ActorRefFactory actorSystem)
Object message, Duration timeout, ActorRefFactory actorSystem)
throws Exception {
// example usage
try {
@ -24,8 +26,7 @@ public class SupervisedAskSpec {
.createSupervisorCreator(actorSystem);
CompletionStage<Object> finished = SupervisedAsk.askOf(supervisorCreator,
Props.create(someActor), message, timeout);
FiniteDuration d = timeout.duration();
return finished.toCompletableFuture().get(d.length(), d.unit());
return finished.toCompletableFuture().get(timeout.toMillis(), TimeUnit.MILLISECONDS);
} catch (Exception e) {
// exception propagated by supervision
throw e;