You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by da...@apache.org on 2019/07/26 10:18:33 UTC

svn commit: r1863800 - in /felix/trunk/configadmin-plugins/interpolation/src: main/java/org/apache/felix/configadmin/plugin/interpolation/ test/java/org/apache/felix/configadmin/plugin/interpolation/

Author: davidb
Date: Fri Jul 26 10:18:33 2019
New Revision: 1863800

URL: http://svn.apache.org/viewvc?rev=1863800&view=rev
Log:
Still register the config admin plugin if no directory configuration is found.

As the plugin can also substitute environment variables, the directory is not always needed.

Modified:
    felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/Activator.java
    felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPlugin.java
    felix/trunk/configadmin-plugins/interpolation/src/test/java/org/apache/felix/configadmin/plugin/interpolation/ActivatorTest.java

Modified: felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/Activator.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/Activator.java?rev=1863800&r1=1863799&r2=1863800&view=diff
==============================================================================
--- felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/Activator.java (original)
+++ felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/Activator.java Fri Jul 26 10:18:33 2019
@@ -35,14 +35,16 @@ public class Activator implements Bundle
     public void start(BundleContext context) throws Exception {
         String directory = context.getProperty(DIR_PROPERTY);
         if (directory == null) {
-            LOG.warn("Framework property '" + DIR_PROPERTY + "' not specified. Plugin disabled.");
-            return;
+            LOG.warn("Framework property '" + DIR_PROPERTY + "' not specified. File-based substitution is disabled.");
         }
 
         ConfigurationPlugin plugin = new InterpolationConfigurationPlugin(directory);
         Dictionary<String, Object> props = new Hashtable<>();
         props.put(ConfigurationPlugin.CM_RANKING, PLUGIN_RANKING);
-        props.put(DIR_PROPERTY, directory);
+        if (directory != null)
+            props.put(DIR_PROPERTY, directory);
+        else
+            props.put(DIR_PROPERTY, "<not configured>");
         context.registerService(ConfigurationPlugin.class, plugin, props);
     }
 

Modified: felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPlugin.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPlugin.java?rev=1863800&r1=1863799&r2=1863800&view=diff
==============================================================================
--- felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPlugin.java (original)
+++ felix/trunk/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPlugin.java Fri Jul 26 10:18:33 2019
@@ -46,8 +46,12 @@ class InterpolationConfigurationPlugin i
     private final File directory;
 
     InterpolationConfigurationPlugin(String dir) {
-        directory = new File(dir);
-        getLog().info("Configured directory for secrets: {}", dir);
+        if (dir != null) {
+            directory = new File(dir);
+            getLog().info("Configured directory for secrets: {}", dir);
+        } else {
+            directory = null;
+        }
     }
 
     private Logger getLog() {
@@ -86,6 +90,12 @@ class InterpolationConfigurationPlugin i
     }
 
     Object replaceVariablesFromFile(final String key, final String value, final Object pid) {
+        if (directory == null) {
+            getLog().warn("Cannot replace property value {} for PID {}. No directory configured via framework property " +
+                    Activator.DIR_PROPERTY, key, pid);
+            return null;
+        }
+
         return replaceVariables(SECRET_PREFIX, SECRET_PATTERN, key, value, pid, n -> {
             if (n.contains("..")) {
                 getLog().error("Illegal secret location: " + n + " Going up in the directory structure is not allowed");

Modified: felix/trunk/configadmin-plugins/interpolation/src/test/java/org/apache/felix/configadmin/plugin/interpolation/ActivatorTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin-plugins/interpolation/src/test/java/org/apache/felix/configadmin/plugin/interpolation/ActivatorTest.java?rev=1863800&r1=1863799&r2=1863800&view=diff
==============================================================================
--- felix/trunk/configadmin-plugins/interpolation/src/test/java/org/apache/felix/configadmin/plugin/interpolation/ActivatorTest.java (original)
+++ felix/trunk/configadmin-plugins/interpolation/src/test/java/org/apache/felix/configadmin/plugin/interpolation/ActivatorTest.java Fri Jul 26 10:18:33 2019
@@ -16,7 +16,6 @@
  */
 package org.apache.felix.configadmin.plugin.interpolation;
 
-import org.apache.felix.configadmin.plugin.interpolation.Activator;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.mockito.invocation.InvocationOnMock;
@@ -63,6 +62,7 @@ public class ActivatorTest {
         assertEquals(expected, regProps);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void testMissingConfiguration() throws Exception {
         BundleContext bc = Mockito.mock(BundleContext.class);
@@ -72,6 +72,10 @@ public class ActivatorTest {
         a.stop(bc);
 
         Mockito.verify(bc).getProperty(Activator.DIR_PROPERTY);
-        Mockito.verifyNoMoreInteractions(bc);
+
+        // Should still register the service
+        Mockito.verify(bc).registerService(Mockito.eq(ConfigurationPlugin.class),
+            Mockito.isA(ConfigurationPlugin.class),
+            Mockito.isA(Dictionary.class));
     }
 }