X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fcommon%2Factor%2FAbstractUntypedPersistentActor.java;h=711a43159a376a3c289271cab06cedd9409d9c06;hb=3bdf1493c0ce4218a1a3e26cdf7c5c4af1d2aeeb;hp=a48e8cd4e32904cc18bae74a67b39685db3394f3;hpb=6880b6dfa565e54557351019c1d1e6e76afdda9f;p=controller.git diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActor.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActor.java index a48e8cd4e3..711a43159a 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActor.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActor.java @@ -5,15 +5,20 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.cluster.common.actor; -import akka.persistence.UntypedPersistentActor; +import akka.actor.ActorRef; +import akka.persistence.AbstractPersistentActor; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.eclipse.jdt.annotation.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public abstract class AbstractUntypedPersistentActor extends UntypedPersistentActor { +public abstract class AbstractUntypedPersistentActor extends AbstractPersistentActor 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()); protected AbstractUntypedPersistentActor() { @@ -22,32 +27,34 @@ public abstract class AbstractUntypedPersistentActor extends UntypedPersistentAc } @Override - public void onReceiveCommand(Object message) throws Exception { - final String messageType = message.getClass().getSimpleName(); - LOG.trace("Received message {}", messageType); - - handleCommand(message); + public final void executeInSelf(@NonNull final Runnable runnable) { + final ExecuteInSelfMessage message = new ExecuteInSelfMessage(runnable); + LOG.trace("Scheduling execution of {}", message); + self().tell(message, ActorRef.noSender()); + } - LOG.trace("Done handling message {}", messageType); + @Override + public final Receive createReceive() { + return receiveBuilder() + .match(ExecuteInSelfMessage.class, ExecuteInSelfMessage::run) + .matchAny(this::handleCommand) + .build(); } @Override - public void onReceiveRecover(Object message) throws Exception { - final String messageType = message.getClass().getSimpleName(); - LOG.trace("Received message {}", messageType); - handleRecover(message); - LOG.trace("Done handling message {}", messageType); + public final Receive createReceiveRecover() { + return receiveBuilder().matchAny(this::handleRecover).build(); } protected abstract void handleRecover(Object message) throws Exception; protected abstract void handleCommand(Object message) throws Exception; - protected void ignoreMessage(Object message) { + protected void ignoreMessage(final Object message) { LOG.debug("Unhandled message {} ", message); } - protected void unknownMessage(Object message) throws Exception { + protected void unknownMessage(final Object message) { LOG.debug("Received unhandled message {}", message); unhandled(message); }