package org.opendaylight.controller.cluster.common.actor;
+import akka.actor.AbstractActor;
import akka.actor.ActorRef;
-import akka.actor.UntypedActor;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.eclipse.jdt.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class AbstractUntypedActor extends UntypedActor implements ExecuteInSelfActor {
+public abstract class AbstractUntypedActor extends AbstractActor implements ExecuteInSelfActor {
// The member name should be lower case but it's referenced in many subclasses. Suppressing the CS warning for now.
+ @SuppressFBWarnings("SLF4J_LOGGER_SHOULD_BE_PRIVATE")
@SuppressWarnings("checkstyle:MemberName")
protected final Logger LOG = LoggerFactory.getLogger(getClass());
}
@Override
- public final void onReceive(final Object message) throws Exception {
- if (message instanceof ExecuteInSelfMessage) {
- ((ExecuteInSelfMessage) message).run();
- } else {
- handleReceive(message);
- }
+ public Receive createReceive() {
+ return receiveBuilder()
+ .match(ExecuteInSelfMessage.class, ExecuteInSelfMessage::run)
+ .matchAny(this::handleReceive)
+ .build();
}
/**
* it should call {@link #ignoreMessage(Object)} or {@link #unknownMessage(Object)}.
*
* @param message the incoming message
- * @throws Exception on message failure
*/
- protected abstract void handleReceive(Object message) throws Exception;
+ protected abstract void handleReceive(Object message);
protected final void ignoreMessage(final Object message) {
LOG.debug("Ignoring unhandled message {}", message);