X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fcommon%2Factor%2FAbstractUntypedPersistentActor.java;h=8bf657e134939dea8b9bb3284149ffd4e314bfdf;hb=HEAD;hp=5ee3c499881e5a54bc0d6a7e4858a24edad1604b;hpb=634dfac8eead60f443bf75e749c70d1f2bb29198;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 5ee3c49988..8bf657e134 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,23 +5,25 @@ * 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.actor.ActorRef; -import akka.persistence.UntypedPersistentActor; +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 implements ExecuteInSelfActor { +// FIXME: override getContext(), getSelf() and others to be final to get rid of +// SpotBugs MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR violation +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") + @SuppressFBWarnings("SLF4J_LOGGER_SHOULD_BE_PRIVATE") protected final Logger LOG = LoggerFactory.getLogger(getClass()); + @SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR", justification = "Akka class design") protected AbstractUntypedPersistentActor() { LOG.trace("Actor created {}", getSelf()); getContext().system().actorSelection("user/termination-monitor").tell(new Monitor(getSelf()), getSelf()); @@ -35,26 +37,16 @@ public abstract class AbstractUntypedPersistentActor extends UntypedPersistentAc } @Override - public final void onReceiveCommand(final Object message) throws Exception { - final String messageType = message.getClass().getSimpleName(); - LOG.trace("Received message {}", messageType); - - if (message instanceof ExecuteInSelfMessage) { - LOG.trace("Executing {}", message); - ((ExecuteInSelfMessage) message).run(); - } else { - handleCommand(message); - } - - LOG.trace("Done handling message {}", messageType); + public final Receive createReceive() { + return receiveBuilder() + .match(ExecuteInSelfMessage.class, ExecuteInSelfMessage::run) + .matchAny(this::handleCommand) + .build(); } @Override - public final void onReceiveRecover(final 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;