You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2017/09/07 19:21:22 UTC

svn commit: r1807637 - in /felix/trunk/utils/src: main/java/org/apache/felix/utils/properties/ test/java/org/apache/felix/utils/properties/

Author: gnodet
Date: Thu Sep  7 19:21:21 2017
New Revision: 1807637

URL: http://svn.apache.org/viewvc?rev=1807637&view=rev
Log:
[FELIX-5688] TypedProperties#put method is not idempotent

Modified:
    felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/Properties.java
    felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/TypedProperties.java
    felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/PropertiesTest.java
    felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/TypedPropertiesTest.java

Modified: felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/Properties.java
URL: http://svn.apache.org/viewvc/felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/Properties.java?rev=1807637&r1=1807636&r2=1807637&view=diff
==============================================================================
--- felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/Properties.java (original)
+++ felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/Properties.java Thu Sep  7 19:21:21 2017
@@ -281,6 +281,10 @@ public class Properties extends Abstract
         return old;
     }
 
+    void putAllSubstituted(Map<? extends String, ? extends String> m) {
+        storage.putAll(m);
+    }
+
     public String put(String key, List<String> commentLines, List<String> valueLines) {
         commentLines = new ArrayList<String>(commentLines);
         valueLines = new ArrayList<String>(valueLines);

Modified: felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/TypedProperties.java
URL: http://svn.apache.org/viewvc/felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/TypedProperties.java?rev=1807637&r1=1807636&r2=1807637&view=diff
==============================================================================
--- felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/TypedProperties.java (original)
+++ felix/trunk/utils/src/main/java/org/apache/felix/utils/properties/TypedProperties.java Thu Sep  7 19:21:21 2017
@@ -336,7 +336,7 @@ public class TypedProperties extends Abs
             ((DynamicMap) map).init(callback, finalSubstitution);
         }
         for (Map.Entry<String, TypedProperties> entry : properties.entrySet()) {
-            entry.getValue().storage.putAll(dynamic.get(entry.getKey()));
+            entry.getValue().storage.putAllSubstituted(dynamic.get(entry.getKey()));
         }
     }
 

Modified: felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/PropertiesTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/PropertiesTest.java?rev=1807637&r1=1807636&r2=1807637&view=diff
==============================================================================
--- felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/PropertiesTest.java (original)
+++ felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/PropertiesTest.java Thu Sep  7 19:21:21 2017
@@ -340,4 +340,17 @@ public class PropertiesTest extends Test
         assertEquals(Arrays.asList("#", "# List of good fruits", "#"), p1.getComments("fruits"));
         assertEquals("apple, banana, pear", p1.getProperty("fruits"));
     }
+
+    public void testSubstitution() throws IOException
+    {
+        String str = "port = 4141\n" +
+                "host = localhost\n" +
+                "url = https://${host}:${port}/service\n";
+        Properties properties = new Properties();
+        properties.load(new StringReader(str));
+        properties.put("url", "https://localhost:4141/service");
+        StringWriter sw = new StringWriter();
+        properties.save(sw);
+        assertEquals(str, sw.toString());
+    }
 }

Modified: felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/TypedPropertiesTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/TypedPropertiesTest.java?rev=1807637&r1=1807636&r2=1807637&view=diff
==============================================================================
--- felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/TypedPropertiesTest.java (original)
+++ felix/trunk/utils/src/test/java/org/apache/felix/utils/properties/TypedPropertiesTest.java Thu Sep  7 19:21:21 2017
@@ -99,4 +99,16 @@ public class TypedPropertiesTest extends
         assertEquals("key = F\"1137191584\"\n", sw.toString());
     }
 
+    public void testSubstitution() throws IOException
+    {
+        String str = "port = 4141\n" +
+                     "host = localhost\n" +
+                     "url = https://${host}:${port}/service\n";
+        TypedProperties properties = new TypedProperties();
+        properties.load(new StringReader(str));
+        properties.put("url", "https://localhost:4141/service");
+        StringWriter sw = new StringWriter();
+        properties.save(sw);
+        assertEquals(str, sw.toString());
+    }
 }