*/
package org.opendaylight.controller.cluster;
+import static java.util.Objects.requireNonNull;
+
import akka.japi.Procedure;
import akka.persistence.SnapshotSelectionCriteria;
+import org.opendaylight.controller.cluster.common.actor.ExecuteInSelfActor;
import org.slf4j.Logger;
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 void saveSnapshot(Object o) {
+ public <T> void persistAsync(final T entry, final Procedure<T> procedure) {
+ actor.executeInSelf(() -> invokeProcedure(procedure, entry));
}
@Override
- public void deleteSnapshots(SnapshotSelectionCriteria criteria) {
+ public void saveSnapshot(final Object snapshot) {
+ // no-op
}
@Override
- public void deleteMessages(long sequenceNumber) {
+ public void deleteSnapshots(final SnapshotSelectionCriteria criteria) {
+ // no-op
+ }
+
+ @Override
+ 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);
+ }
+ }
+}