Make the AbstractBehavior builder mutable (#26309)

* Make the AbstractBehavior builder mutable #26260

* Use mutable builder style in first sample, mention that fluent is an option

* A bit of rework of the Java builders:

 * onAnyMessage added
 * use the japi SAMs throughout in the APIs
 * avoid wrapping the japi functions in Scala functions for the most common cases
 * more Java test coverage

* Not just any exception

* Works on 2.11 as well as 2.12
This commit is contained in:
Johan Andrén 2019-02-12 15:38:35 +01:00 committed by Patrik Nordwall
parent ddada9a8e1
commit 8fabb73f2b
22 changed files with 391 additions and 268 deletions

View file

@ -36,7 +36,7 @@ class PrintMyActorRefActor extends AbstractBehavior<String> {
@Override
public Receive<String> createReceive() {
return receiveBuilder().onMessageEquals("printit", this::printIt).build();
return newReceiveBuilder().onMessageEquals("printit", this::printIt).build();
}
private Behavior<String> printIt() {
@ -60,7 +60,7 @@ class StartStopActor1 extends AbstractBehavior<String> {
@Override
public Receive<String> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessageEquals("stop", Behaviors::stopped)
.onSignal(PostStop.class, signal -> postStop())
.build();
@ -84,7 +84,7 @@ class StartStopActor2 extends AbstractBehavior<String> {
@Override
public Receive<String> createReceive() {
return receiveBuilder().onSignal(PostStop.class, signal -> postStop()).build();
return newReceiveBuilder().onSignal(PostStop.class, signal -> postStop()).build();
}
private Behavior<String> postStop() {
@ -113,7 +113,7 @@ class SupervisingActor extends AbstractBehavior<String> {
@Override
public Receive<String> createReceive() {
return receiveBuilder().onMessageEquals("failChild", this::failChild).build();
return newReceiveBuilder().onMessageEquals("failChild", this::failChild).build();
}
private Behavior<String> failChild() {
@ -134,7 +134,7 @@ class SupervisedActor extends AbstractBehavior<String> {
@Override
public Receive<String> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessageEquals("fail", this::fail)
.onSignal(PreRestart.class, signal -> preRestart())
.onSignal(PostStop.class, signal -> postStop())
@ -174,7 +174,7 @@ class Main extends AbstractBehavior<String> {
@Override
public Receive<String> createReceive() {
return receiveBuilder().onMessageEquals("start", this::start).build();
return newReceiveBuilder().onMessageEquals("start", this::start).build();
}
private Behavior<String> start() {

View file

@ -28,7 +28,7 @@ public class IotSupervisor extends AbstractBehavior<Void> {
// No need to handle any messages
@Override
public Receive<Void> createReceive() {
return receiveBuilder().onSignal(PostStop.class, signal -> postStop()).build();
return newReceiveBuilder().onSignal(PostStop.class, signal -> postStop()).build();
}
private IotSupervisor postStop() {

View file

@ -46,7 +46,7 @@ public class Device extends AbstractBehavior<DeviceMessage> {
@Override
public Receive<DeviceMessage> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessage(RecordTemperature.class, this::recordTemperature)
.onMessage(ReadTemperature.class, this::readTemperature)
.onSignal(PostStop.class, signal -> postStop())

View file

@ -46,7 +46,7 @@ public class Device extends AbstractBehavior<DeviceMessage> {
@Override
public Receive<DeviceMessage> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessage(ReadTemperature.class, this::readTemperature)
.onSignal(PostStop.class, signal -> postStop())
.build();

View file

@ -46,7 +46,7 @@ public class Device extends AbstractBehavior<DeviceMessage> {
@Override
public Receive<DeviceMessage> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessage(RecordTemperature.class, this::recordTemperature)
.onMessage(ReadTemperature.class, this::readTemperature)
.onMessage(Passivate.class, m -> Behaviors.stopped())

View file

@ -98,7 +98,7 @@ public class DeviceGroup extends AbstractBehavior<DeviceGroupMessage> {
@Override
public Receive<DeviceGroupMessage> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessage(RequestTrackDevice.class, this::onTrackDevice)
// #device-group-register
// #device-group-remove

View file

@ -74,7 +74,7 @@ public class DeviceManager extends AbstractBehavior<DeviceManagerMessage> {
}
public Receive<DeviceManagerMessage> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessage(RequestTrackDevice.class, this::onTrackDevice)
.onMessage(RequestDeviceList.class, this::onRequestDeviceList)
.onMessage(DeviceGroupTerminated.class, this::onTerminated)

View file

@ -37,7 +37,7 @@ public class Device extends AbstractBehavior<DeviceMessage> {
@Override
public Receive<DeviceMessage> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessage(RecordTemperature.class, this::recordTemperature)
.onMessage(ReadTemperature.class, this::readTemperature)
.onMessage(Passivate.class, m -> Behaviors.stopped())

View file

@ -113,7 +113,7 @@ public class DeviceGroup extends AbstractBehavior<DeviceGroupMessage> {
@Override
public Receive<DeviceGroupMessage> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
// #query-added
.onMessage(RequestTrackDevice.class, this::onTrackDevice)
.onMessage(RequestDeviceList.class, r -> r.groupId.equals(groupId), this::onDeviceList)

View file

@ -95,7 +95,7 @@ public class DeviceGroupQuery extends AbstractBehavior<DeviceGroupQueryMessage>
// #query-state
@Override
public Receive<DeviceGroupQueryMessage> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessage(WrappedRespondTemperature.class, this::onRespondTemperature)
.onMessage(DeviceTerminated.class, this::onDeviceTerminated)
.onMessage(CollectionTimeout.class, this::onCollectionTimeout)

View file

@ -83,7 +83,7 @@ public class DeviceManager extends AbstractBehavior<DeviceManagerMessage> {
}
public Receive<DeviceManagerMessage> createReceive() {
return receiveBuilder()
return newReceiveBuilder()
.onMessage(RequestTrackDevice.class, this::onTrackDevice)
.onMessage(RequestDeviceList.class, this::onRequestDeviceList)
.onMessage(RequestAllTemperatures.class, this::onRequestAllTemperatures)