Route {Journal,Snapshot}Protocol messages to DataPersistenceProvider
[controller.git] / opendaylight / md-sal / sal-clustering-commons / src / main / java / org / opendaylight / controller / cluster / NonPersistentDataProvider.java
index d1af58f18b426c19d7c70ef0d0a44734948e4b72..5461689d2aebc84739b165657db6330e5feba59f 100644 (file)
@@ -7,8 +7,13 @@
  */
 package org.opendaylight.controller.cluster;
 
+import static java.util.Objects.requireNonNull;
+
 import akka.japi.Procedure;
+import akka.persistence.JournalProtocol;
+import akka.persistence.SnapshotProtocol;
 import akka.persistence.SnapshotSelectionCriteria;
+import org.opendaylight.controller.cluster.common.actor.ExecuteInSelfActor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -18,34 +23,63 @@ import org.slf4j.LoggerFactory;
 public class NonPersistentDataProvider implements DataPersistenceProvider {
     private static final Logger LOG = LoggerFactory.getLogger(NonPersistentDataProvider.class);
 
+    private final ExecuteInSelfActor actor;
+
+    public NonPersistentDataProvider(final ExecuteInSelfActor actor) {
+        this.actor = requireNonNull(actor);
+    }
+
     @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);
-        }
+    public <T> void persist(final T entry, final Procedure<T> procedure) {
+        invokeProcedure(procedure, entry);
+    }
+
+    @Override
+    public <T> void persistAsync(final T entry, final Procedure<T> procedure) {
+        actor.executeInSelf(() -> invokeProcedure(procedure, entry));
     }
 
     @Override
-    public void saveSnapshot(Object o) {
+    public void saveSnapshot(final Object snapshot) {
+        // no-op
     }
 
     @Override
-    public void deleteSnapshots(SnapshotSelectionCriteria criteria) {
+    public void deleteSnapshots(final SnapshotSelectionCriteria criteria) {
+        // no-op
     }
 
     @Override
-    public void deleteMessages(long sequenceNumber) {
+    public void deleteMessages(final long sequenceNumber) {
+        // no-op
     }
 
     @Override
     public long getLastSequenceNumber() {
         return -1;
     }
-}
\ No newline at end of file
+
+    @SuppressWarnings("checkstyle:IllegalCatch")
+    static <T> void invokeProcedure(final Procedure<T> procedure, final T argument) {
+        try {
+            procedure.apply(argument);
+        } catch (Exception e) {
+            LOG.error("An unexpected error occurred", e);
+        }
+    }
+
+    @Override
+    public boolean handleJournalResponse(final JournalProtocol.Response response) {
+        return false;
+    }
+
+    @Override
+    public boolean handleSnapshotResponse(final SnapshotProtocol.Response response) {
+        return false;
+    }
+}