Use karaf/OSGi bundle data path for persistence
Change-Id: If5a4eb1fb63ca3455200c29e9981c7a0f2dd044e
diff --git a/.gitignore b/.gitignore
index 30c96d0..b300f46 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,16 +12,11 @@
dependency-reduced-pom.xml
.idea
*.DS_Store
-localDB
-localDB.*
.buckd
buck-out
.buckconfig.local
.buckjavaargs*
-core/store/trivial/data/
-core/store/apps
-core/store/data
/bin/
web/gui/src/main/webapp/tests/node_modules
diff --git a/core/store/persistence/pom.xml b/core/store/persistence/pom.xml
index 67aff7e..1b4a729 100644
--- a/core/store/persistence/pom.xml
+++ b/core/store/persistence/pom.xml
@@ -46,6 +46,11 @@
<artifactId>mapdb</artifactId>
<version>1.0.9</version>
</dependency>
+
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/core/store/persistence/src/main/java/org/onosproject/persistence/impl/PersistenceManager.java b/core/store/persistence/src/main/java/org/onosproject/persistence/impl/PersistenceManager.java
index 1a24268..366f424 100644
--- a/core/store/persistence/src/main/java/org/onosproject/persistence/impl/PersistenceManager.java
+++ b/core/store/persistence/src/main/java/org/onosproject/persistence/impl/PersistenceManager.java
@@ -25,12 +25,13 @@
import org.onosproject.persistence.PersistenceService;
import org.onosproject.persistence.PersistentMapBuilder;
import org.onosproject.persistence.PersistentSetBuilder;
+import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
+import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.Map;
import java.util.Set;
import java.util.Timer;
@@ -48,8 +49,7 @@
@Service
public class PersistenceManager implements PersistenceService {
- private static final String DATABASE_PATH = "../data/localDB";
- private static final String ENCLOSING_FOLDER = "../data";
+ private static final String DATABASE_PATH = "localDB";
static final String MAP_PREFIX = "map:";
@@ -66,15 +66,18 @@
private final CommitTask commitTask = new CommitTask();
@Activate
- public void activate() {
+ public void activate(ComponentContext context) {
timer = new Timer();
- Path dbPath = Paths.get(DATABASE_PATH);
- Path dbFolderPath = Paths.get(ENCLOSING_FOLDER);
+ // bundle's persistent storage area directory
+ File dbFolderPath = context.getBundleContext().getDataFile("");
+ Path dbPath = dbFolderPath.toPath().resolve(DATABASE_PATH);
+ log.debug("dbPath: {}", dbPath);
+
//Make sure the directory exists, if it does not, make it.
- if (!dbFolderPath.toFile().isDirectory()) {
+ if (!dbFolderPath.isDirectory()) {
log.info("The specified folder location for the database did not exist and will be created.");
try {
- Files.createDirectories(dbFolderPath);
+ Files.createDirectories(dbFolderPath.toPath());
} catch (IOException e) {
log.error("Could not create the required folder for the database.");
throw new PersistenceException("Database folder could not be created.");
@@ -123,11 +126,13 @@
log.info("Stopped");
}
+ @Override
public <K, V> PersistentMapBuilder<K, V> persistentMapBuilder() {
checkPermission(PERSISTENCE_WRITE);
return new DefaultPersistentMapBuilder<>(localDB);
}
+ @Override
public <E> PersistentSetBuilder<E> persistentSetBuilder() {
checkPermission(PERSISTENCE_WRITE);
return new DefaultPersistentSetBuilder<>(localDB);
diff --git a/tools/dev/bin/onos-setup-karaf b/tools/dev/bin/onos-setup-karaf
index bd3379c..b0e891d 100755
--- a/tools/dev/bin/onos-setup-karaf
+++ b/tools/dev/bin/onos-setup-karaf
@@ -47,7 +47,7 @@
# If clean option was specified, wipe-out existing installation
if [ "$CLEAN" = "true" ]; then
echo "Removing existing ONOS Karaf, apps, data and config directories..."
- [ -d $KARAF_ROOT ] && rm -fr $KARAF_ROOT $STAGE/apps $STAGE/data $STAGE/config
+ [ -d $KARAF_ROOT ] && rm -fr $KARAF_ROOT $KARAF_ROOT/data $STAGE/apps $STAGE/data $STAGE/config
fi
# If IP was not given, nor configured attempt to use ONOS_NIC env. variable