You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2021/09/06 06:38:35 UTC

[felix-dev] branch master updated: FELIX-6273 : Improve behaviour when delimiter is set but the type is not

This is an automated email from the ASF dual-hosted git repository.

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new b236c6b  FELIX-6273 : Improve behaviour when delimiter is set but the type is not
b236c6b is described below

commit b236c6b45af211e43eda05289467505efcd904ce
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Mon Sep 6 08:38:20 2021 +0200

    FELIX-6273 : Improve behaviour when delimiter is set but the type is not
---
 .../interpolation/InterpolationConfigurationPlugin.java     |  6 +++++-
 .../interpolation/InterpolationConfigurationPluginTest.java | 13 +++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPlugin.java b/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPlugin.java
index 2dae521..e8d456a 100644
--- a/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPlugin.java
+++ b/configadmin-plugins/interpolation/src/main/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPlugin.java
@@ -238,7 +238,11 @@ class InterpolationConfigurationPlugin implements ConfigurationPlugin {
      * @param delimiter The delimiter for array types (optional)
      * @return The converted value
      */
-    Object convertType(final String type, final String value, final String delimiter) {
+    Object convertType(String type, final String value, final String delimiter) {
+        // if delimiter is specifed but no type, assume String[]
+        if ( delimiter != null && type == null ) {
+            type = "String[]";
+        }
         if (type == null) {
             return value;
         }
diff --git a/configadmin-plugins/interpolation/src/test/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPluginTest.java b/configadmin-plugins/interpolation/src/test/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPluginTest.java
index 4b2b3ee..e078fc1 100644
--- a/configadmin-plugins/interpolation/src/test/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPluginTest.java
+++ b/configadmin-plugins/interpolation/src/test/java/org/apache/felix/configadmin/plugin/interpolation/InterpolationConfigurationPluginTest.java
@@ -260,4 +260,17 @@ public class InterpolationConfigurationPluginTest {
         assertArrayEquals(new Integer[] { 1, 2 },
                 (Integer[]) plugin.replace("key", "$[prop:bar;type=Integer[];delimiter=,;default=1,2]", "somepid"));
     }
+
+    @Test
+    public void testConvertTypeDelimiterWithoutType() throws Exception {
+        BundleContext bc = Mockito.mock(BundleContext.class);
+        Mockito.when(bc.getProperty("foo")).thenReturn("2000,3000");
+        InterpolationConfigurationPlugin plugin = new InterpolationConfigurationPlugin(bc::getProperty, null, null);
+
+        Object obj = plugin.convertType(null, "a,b", ",");
+        assertArrayEquals(new String[] {"a", "b"}, (Object[])obj);
+
+        obj = plugin.convertType("String", "a,b", ",");
+        assertEquals("a,b", obj);
+    }
 }