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 2016/06/14 13:15:19 UTC

svn commit: r1748407 - in /felix/trunk/converter/src: main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java test/java/org/apache/felix/converter/impl/yaml/YamlSerializationTest.java

Author: davidb
Date: Tue Jun 14 13:15:19 2016
New Revision: 1748407

URL: http://svn.apache.org/viewvc?rev=1748407&view=rev
Log:
Felix Converter Service - Additional testing for YAML codec

Modified:
    felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java
    felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/yaml/YamlSerializationTest.java

Modified: felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java?rev=1748407&r1=1748406&r2=1748407&view=diff
==============================================================================
--- felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java (original)
+++ felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java Tue Jun 14 13:15:19 2016
@@ -108,7 +108,7 @@ public class YamlEncodingImpl implements
             sb.append("\n");
             sb.append(getIdentPrefix(level));
             sb.append("- ");
-            sb.append(encode(o));
+            sb.append(encode(o, level + 1));
         }
         return sb.toString();
     }
@@ -117,24 +117,16 @@ public class YamlEncodingImpl implements
     private String encodeMap(Map m, int level) {
         StringBuilder sb = new StringBuilder();
         for (Entry entry : (Set<Entry>) m.entrySet()) {
+            sb.append("\n");
             sb.append(getIdentPrefix(level));
             sb.append(entry.getKey().toString());
             sb.append(": ");
-            sb.append(needsNewlineBefore(entry.getValue()));
             sb.append(encode(entry.getValue(), level + 1));
-            sb.append("\n");
         }
 
         return sb.toString();
     }
 
-    private Object needsNewlineBefore(Object value) {
-        if (value instanceof Map)
-            return "\n";
-
-        return "";
-    }
-
     private String getIdentPrefix(int level) {
         int numSpaces = indentation * level;
         StringBuilder sb = new StringBuilder(numSpaces);

Modified: felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/yaml/YamlSerializationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/yaml/YamlSerializationTest.java?rev=1748407&r1=1748406&r2=1748407&view=diff
==============================================================================
--- felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/yaml/YamlSerializationTest.java (original)
+++ felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/yaml/YamlSerializationTest.java Tue Jun 14 13:15:19 2016
@@ -16,6 +16,8 @@
  */
 package org.apache.felix.converter.impl.yaml;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
@@ -51,4 +53,28 @@ public class YamlSerializationTest {
                 "  b: 'hello'";
         assertEquals(expected, new YamlCodecImpl().encode(m).toString().trim());
     }
+
+    @Test
+    public void testComplexMapSerialization2() {
+        Map<String, Object> m2 = new LinkedHashMap<>();
+        m2.put("yes", Boolean.TRUE);
+        m2.put("no", Collections.singletonMap("maybe", false));
+
+        Map<String, Object> cm = new LinkedHashMap<>();
+        cm.put("list", Arrays.asList(
+                Collections.singletonMap("x", "y"),
+                Collections.singletonMap("x", "b")));
+        cm.put("embedded", m2);
+
+        String expected = "list: \n" +
+                "  - \n" +
+                "    x: 'y'\n" +
+                "  - \n" +
+                "    x: 'b'\n" +
+                "embedded: \n" +
+                "  yes: true\n" +
+                "  no: \n" +
+                "    maybe: false";
+        assertEquals(expected, new YamlCodecImpl().encode(cm).toString().trim());
+    }
 }