NIFIREG-174 Fixing start-up to look for the system properties specifying the location of properties and bootstrap, and fallback to relative paths

This closes #124.

Signed-off-by: Kevin Doran <kdoran@apache.org>
diff --git a/nifi-registry-bootstrap/src/main/java/org/apache/nifi/registry/bootstrap/RunNiFiRegistry.java b/nifi-registry-bootstrap/src/main/java/org/apache/nifi/registry/bootstrap/RunNiFiRegistry.java
index c6d92ea..769d1c4 100644
--- a/nifi-registry-bootstrap/src/main/java/org/apache/nifi/registry/bootstrap/RunNiFiRegistry.java
+++ b/nifi-registry-bootstrap/src/main/java/org/apache/nifi/registry/bootstrap/RunNiFiRegistry.java
@@ -942,6 +942,7 @@
         cmd.add(classPath);
         cmd.addAll(javaAdditionalArgs);
         cmd.add("-Dnifi.registry.properties.file.path=" + nifiRegistryPropsFilename);
+        cmd.add("-Dnifi.registry.bootstrap.config.file.path=" + bootstrapConfigFile.getAbsolutePath());
         cmd.add("-Dnifi.registry.bootstrap.listen.port=" + listenPort);
         cmd.add("-Dapp=NiFiRegistry");
         cmd.add("-Dorg.apache.nifi.registry.bootstrap.config.log.dir=" + nifiRegistryLogDir);
diff --git a/nifi-registry-runtime/src/main/java/org/apache/nifi/registry/NiFiRegistry.java b/nifi-registry-runtime/src/main/java/org/apache/nifi/registry/NiFiRegistry.java
index 43f8ecf..65fdcf4 100644
--- a/nifi-registry-runtime/src/main/java/org/apache/nifi/registry/NiFiRegistry.java
+++ b/nifi-registry-runtime/src/main/java/org/apache/nifi/registry/NiFiRegistry.java
@@ -42,8 +42,11 @@
 
     public static final String BOOTSTRAP_PORT_PROPERTY = "nifi.registry.bootstrap.listen.port";
 
-    public static final String REGISTRY_BOOTSTRAP_FILE_LOCATION = "conf/bootstrap.conf";
-    public static final String REGISTRY_PROPERTIES_FILE_LOCATION = "conf/nifi-registry.properties";
+    public static final String NIFI_REGISTRY_PROPERTIES_FILE_PATH_PROPERTY = "nifi.registry.properties.file.path";
+    public static final String NIFI_REGISTRY_BOOTSTRAP_FILE_PATH_PROPERTY = "nifi.registry.bootstrap.config.file.path";
+
+    public static final String RELATIVE_BOOTSTRAP_FILE_LOCATION = "conf/bootstrap.conf";
+    public static final String RELATIVE_PROPERTIES_FILE_LOCATION = "conf/nifi-registry.properties";
 
     private final JettyServer server;
     private final BootstrapListener bootstrapListener;
@@ -147,8 +150,9 @@
         final CryptoKeyProvider masterKeyProvider;
         final NiFiRegistryProperties properties;
         try {
-            masterKeyProvider = new BootstrapFileCryptoKeyProvider(REGISTRY_BOOTSTRAP_FILE_LOCATION);
-            LOGGER.info("Read property protection key from {}", REGISTRY_BOOTSTRAP_FILE_LOCATION);
+            final String bootstrapConfigFilePath = System.getProperty(NIFI_REGISTRY_BOOTSTRAP_FILE_PATH_PROPERTY, RELATIVE_BOOTSTRAP_FILE_LOCATION);
+            masterKeyProvider = new BootstrapFileCryptoKeyProvider(bootstrapConfigFilePath);
+            LOGGER.info("Read property protection key from {}", bootstrapConfigFilePath);
             properties = initializeProperties(masterKeyProvider);
         } catch (final IllegalArgumentException iae) {
             throw new RuntimeException("Unable to load properties: " + iae, iae);
@@ -174,7 +178,8 @@
         try {
             try {
                 // Load properties using key. If properties are protected and key missing, throw RuntimeException
-                NiFiRegistryProperties properties = NiFiRegistryPropertiesLoader.withKey(key).load(REGISTRY_PROPERTIES_FILE_LOCATION);
+                final String nifiRegistryPropertiesFilePath = System.getProperty(NIFI_REGISTRY_PROPERTIES_FILE_PATH_PROPERTY, RELATIVE_PROPERTIES_FILE_LOCATION);
+                final NiFiRegistryProperties properties = NiFiRegistryPropertiesLoader.withKey(key).load(nifiRegistryPropertiesFilePath);
                 LOGGER.info("Loaded {} properties", properties.size());
                 return properties;
             } catch (SensitivePropertyProtectionException e) {