X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fcommon%2Factor%2FAbstractUntypedPersistentActor.java;h=e9aaa65453c4b14fc40de1451a668a3091699fa9;hp=432c2d5615227d7d67f856bef6215fd550053084;hb=12fcdfe39aa26dcba7fd3bb4d4c68e3d02e65c51;hpb=3997099eb61b0f2adc47f7a85952c324e9de223f 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 432c2d5615..e9aaa65453 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 @@ -8,132 +8,63 @@ package org.opendaylight.controller.cluster.common.actor; -import akka.japi.Procedure; -import akka.persistence.SnapshotSelectionCriteria; +import akka.actor.ActorRef; import akka.persistence.UntypedPersistentActor; -import org.opendaylight.controller.cluster.DataPersistenceProvider; +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 UntypedPersistentActor implements ExecuteInSelfActor { + // The member name should be lower case but it's referenced in many subclasses. Suppressing the CS warning for now. + @SuppressWarnings("checkstyle:MemberName") protected final Logger LOG = LoggerFactory.getLogger(getClass()); - public AbstractUntypedPersistentActor() { - if(LOG.isTraceEnabled()) { - LOG.trace("Actor created {}", getSelf()); - } - getContext(). - system(). - actorSelection("user/termination-monitor"). - tell(new Monitor(getSelf()), getSelf()); - + protected AbstractUntypedPersistentActor() { + LOG.trace("Actor created {}", getSelf()); + getContext().system().actorSelection("user/termination-monitor").tell(new Monitor(getSelf()), getSelf()); } + @Override + 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()); + } - @Override public void onReceiveCommand(Object message) throws Exception { + @Override + public final void onReceiveCommand(final Object message) throws Exception { final String messageType = message.getClass().getSimpleName(); - if(LOG.isTraceEnabled()) { - LOG.trace("Received message {}", messageType); - } - handleCommand(message); - if(LOG.isTraceEnabled()) { - LOG.trace("Done handling message {}", messageType); + 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); } - @Override public void onReceiveRecover(Object message) throws Exception { + @Override + public final void onReceiveRecover(final Object message) throws Exception { final String messageType = message.getClass().getSimpleName(); - if(LOG.isTraceEnabled()) { - LOG.trace("Received message {}", messageType); - } + LOG.trace("Received message {}", messageType); handleRecover(message); - if(LOG.isTraceEnabled()) { - LOG.trace("Done handling message {}", messageType); - } - + LOG.trace("Done handling message {}", messageType); } 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 { - if(LOG.isDebugEnabled()) { - LOG.debug("Received unhandled message {}", message); - } + protected void unknownMessage(final Object message) { + LOG.debug("Received unhandled message {}", message); unhandled(message); } - - protected class PersistentDataProvider implements DataPersistenceProvider { - - public PersistentDataProvider(){ - - } - - @Override - public boolean isRecoveryApplicable() { - return true; - } - - @Override - public void persist(T o, Procedure procedure) { - AbstractUntypedPersistentActor.this.persist(o, procedure); - } - - @Override - public void saveSnapshot(Object o) { - AbstractUntypedPersistentActor.this.saveSnapshot(o); - } - - @Override - public void deleteSnapshots(SnapshotSelectionCriteria criteria) { - AbstractUntypedPersistentActor.this.deleteSnapshots(criteria); - } - - @Override - public void deleteMessages(long sequenceNumber) { - AbstractUntypedPersistentActor.this.deleteMessages(sequenceNumber); - } - } - - protected class NonPersistentDataProvider implements DataPersistenceProvider { - - public NonPersistentDataProvider(){ - - } - - @Override - public boolean isRecoveryApplicable() { - return false; - } - - @Override - public void persist(T o, Procedure procedure) { - try { - procedure.apply(o); - } catch (Exception e) { - LOG.error("An unexpected error occurred", e); - } - } - - @Override - public void saveSnapshot(Object o) { - } - - @Override - public void deleteSnapshots(SnapshotSelectionCriteria criteria) { - - } - - @Override - public void deleteMessages(long sequenceNumber) { - - } - } }