Remove unused exceptions
[controller.git] / opendaylight / md-sal / sal-clustering-commons / src / main / java / org / opendaylight / controller / cluster / common / actor / AbstractUntypedPersistentActor.java
index 432c2d5615227d7d67f856bef6215fd550053084..e9aaa65453c4b14fc40de1451a668a3091699fa9 100644 (file)
 
 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 <T> void persist(T o, Procedure<T> 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 <T> void persist(T o, Procedure<T> 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) {
-
-        }
-    }
 }