From 35a26b477f05ddf7448013c4a8b7a70174772ca3 Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Tue, 29 Mar 2016 18:11:18 -0400 Subject: [PATCH] Create DatastoreSnapshotRestore instance via blueprint The DatastoreSnapshotRestore instance was created via a bundle Activator in order to make it available to both data store instances w/o having to create a config yang for it and having it advertised as a service and injected into the data store Modules. Now that the data store instances are created via blueprint, we no longer need the Activator and the DatastoreSnapshotRestore instance is now created via blueprint. Change-Id: I8299823787fff6b03934e2b0069d77b0d9981d81 Signed-off-by: Tom Pantelis --- .../md-sal/sal-distributed-datastore/pom.xml | 1 - .../datastore/DatastoreSnapshotRestore.java | 14 ++------- .../cluster/datastore/osgi/Activator.java | 31 ------------------- .../blueprint/clustered-datastore.xml | 4 ++- .../DatastoreSnapshotRestoreTest.java | 15 +++++---- 5 files changed, 13 insertions(+), 52 deletions(-) delete mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/osgi/Activator.java diff --git a/opendaylight/md-sal/sal-distributed-datastore/pom.xml b/opendaylight/md-sal/sal-distributed-datastore/pom.xml index 7eef556619..59d42a3aea 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/pom.xml +++ b/opendaylight/md-sal/sal-distributed-datastore/pom.xml @@ -186,7 +186,6 @@ ${project.groupId}.${project.artifactId} - org.opendaylight.controller.cluster.datastore.osgi.Activator org.opendaylight.controller.cluster.datastore; org.opendaylight.controller.cluster.datastore.config; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreSnapshotRestore.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreSnapshotRestore.java index 5908a86977..52ab3030bf 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreSnapshotRestore.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreSnapshotRestore.java @@ -35,24 +35,16 @@ public class DatastoreSnapshotRestore { private final String restoreDirectoryPath; private final Map datastoreSnapshots = new ConcurrentHashMap<>(); - public static void createInstance(String restoreDirectoryPath) { + public static DatastoreSnapshotRestore instance(String restoreDirectoryPath) { instance.compareAndSet(null, new DatastoreSnapshotRestore(restoreDirectoryPath)); - } - - public static void removeInstance() { - instance.set(null); - } - - public static DatastoreSnapshotRestore instance() { - DatastoreSnapshotRestore localInstance = instance.get(); - return Preconditions.checkNotNull(localInstance, "DatastoreSnapshotRestore instance was not created"); + return instance.get(); } private DatastoreSnapshotRestore(String restoreDirectoryPath) { this.restoreDirectoryPath = Preconditions.checkNotNull(restoreDirectoryPath); } - // sychronize this method so that, in case of concurrent access to getAndRemove(), + // synchronize this method so that, in case of concurrent access to getAndRemove(), // no one ends up with partially initialized data private synchronized void initialize() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/osgi/Activator.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/osgi/Activator.java deleted file mode 100644 index afbf34e8af..0000000000 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/osgi/Activator.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2015 Brocade Communications Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * 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.datastore.osgi; - -import org.opendaylight.controller.cluster.datastore.DatastoreSnapshotRestore; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -/** - * Activator for the bundle. - * - * @author Thomas Pantelis - */ -public class Activator implements BundleActivator { - private static final String RESTORE_DIRECTORY_PATH = "./clustered-datastore-restore"; - - @Override - public void start(BundleContext context) { - DatastoreSnapshotRestore.createInstance(RESTORE_DIRECTORY_PATH); - } - - @Override - public void stop(BundleContext context) { - DatastoreSnapshotRestore.removeInstance(); - } -} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/resources/org/opendaylight/blueprint/clustered-datastore.xml b/opendaylight/md-sal/sal-distributed-datastore/src/main/resources/org/opendaylight/blueprint/clustered-datastore.xml index cd2ee2def2..4fa0af1db8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/resources/org/opendaylight/blueprint/clustered-datastore.xml +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/resources/org/opendaylight/blueprint/clustered-datastore.xml @@ -24,7 +24,9 @@ + factory-method="instance"> + + diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DatastoreSnapshotRestoreTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DatastoreSnapshotRestoreTest.java index 7adc93c8f3..9f0b1b5341 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DatastoreSnapshotRestoreTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DatastoreSnapshotRestoreTest.java @@ -65,19 +65,18 @@ public class DatastoreSnapshotRestoreTest { SerializationUtils.serialize(snapshotList, fos); } - DatastoreSnapshotRestore.createInstance(restoreDirectoryPath); + DatastoreSnapshotRestore instance = DatastoreSnapshotRestore.instance(restoreDirectoryPath); - verifySnapshot(configSnapshot, DatastoreSnapshotRestore.instance().getAndRemove("config")); - verifySnapshot(operSnapshot, DatastoreSnapshotRestore.instance().getAndRemove("oper")); + verifySnapshot(configSnapshot, instance.getAndRemove("config")); + verifySnapshot(operSnapshot, instance.getAndRemove("oper")); - assertNull("DatastoreSnapshot was not removed", DatastoreSnapshotRestore.instance().getAndRemove("config")); + assertNull("DatastoreSnapshot was not removed", instance.getAndRemove("config")); assertFalse(backupFile + " was not deleted", backupFile.exists()); - DatastoreSnapshotRestore.removeInstance(); - DatastoreSnapshotRestore.createInstance("target/does-not-exist"); - assertNull("Expected null DatastoreSnapshot", DatastoreSnapshotRestore.instance().getAndRemove("config")); - assertNull("Expected null DatastoreSnapshot", DatastoreSnapshotRestore.instance().getAndRemove("oper")); + instance = DatastoreSnapshotRestore.instance(restoreDirectoryPath); + assertNull("Expected null DatastoreSnapshot", instance.getAndRemove("config")); + assertNull("Expected null DatastoreSnapshot", instance.getAndRemove("oper")); } private static void verifySnapshot(DatastoreSnapshot expected, DatastoreSnapshot actual) { -- 2.36.6