TAMAYA-350 Fixed handling of null values in yaml.

Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/ee00d2ef
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/ee00d2ef
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/ee00d2ef

Branch: refs/heads/master
Commit: ee00d2ef21d9f14fe7021a771b43eb910712a4fd
Parents: d1364a4
Author: Anatole Tresch <[email protected]>
Authored: Tue Nov 20 08:07:10 2018 +0100
Committer: Anatole Tresch <[email protected]>
Committed: Tue Nov 20 08:07:10 2018 +0100

----------------------------------------------------------------------
 .../java/org/apache/tamaya/yaml/YAMLFormat.java |  6 ++++-
 .../org/apache/tamaya/yaml/YAMLFormatTest.java  | 25 +++++++++++++++++---
 .../test/resources/configs/valid/contact.yaml   |  3 ++-
 3 files changed, 29 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ee00d2ef/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLFormat.java
----------------------------------------------------------------------
diff --git 
a/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLFormat.java 
b/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLFormat.java
index d8b59bd..4c50573 100644
--- a/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLFormat.java
+++ b/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLFormat.java
@@ -98,7 +98,11 @@ public class YAMLFormat implements ConfigurationFormat {
                 ObjectValue object = dataNode.setFieldObject(en.getKey());
                 addObject((Map) en.getValue(), object);
             } else{
-                dataNode.setField(en.getKey(), String.valueOf(en.getValue()));
+                if (en.getValue() == null) {
+                    dataNode.setField(en.getKey(), null);
+                }else {
+                    dataNode.setField(en.getKey(), 
String.valueOf(en.getValue()));
+                }
             }
         });
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ee00d2ef/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLFormatTest.java
----------------------------------------------------------------------
diff --git 
a/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLFormatTest.java 
b/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLFormatTest.java
index 52f7149..098520f 100644
--- 
a/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLFormatTest.java
+++ 
b/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLFormatTest.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.yaml;
 
 
 import org.apache.tamaya.format.ConfigurationData;
+import org.apache.tamaya.spi.PropertyValue;
 import org.junit.Test;
 
 import java.io.IOException;
@@ -27,9 +28,7 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Map;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 public class YAMLFormatTest {
     private final YAMLFormat format = new YAMLFormat();
@@ -65,4 +64,24 @@ public class YAMLFormatTest {
         }
     }
 
+    @Test
+    public void testRead_nullValues() throws IOException {
+       URL configURL = getContactYaml();
+        ConfigurationData data = loadConfigurationData(configURL);
+        for(PropertyValue val:data.getData()){
+            if(val.getKey().equals("summary")){
+                fail("Contains null yaml value");
+            }
+        }
+    }
+
+       private ConfigurationData loadConfigurationData(URL configURL) throws 
IOException {
+               return format.readConfiguration(configURL.toString(), 
configURL.openStream());
+       }
+
+       private URL getContactYaml() {
+               URL configURL = 
YAMLPropertySourceTest.class.getResource("/configs/valid/contact.yaml");
+               return configURL;
+       }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/ee00d2ef/modules/formats/yaml/src/test/resources/configs/valid/contact.yaml
----------------------------------------------------------------------
diff --git a/modules/formats/yaml/src/test/resources/configs/valid/contact.yaml 
b/modules/formats/yaml/src/test/resources/configs/valid/contact.yaml
index 0cd332c..ddba38a 100644
--- a/modules/formats/yaml/src/test/resources/configs/valid/contact.yaml
+++ b/modules/formats/yaml/src/test/resources/configs/valid/contact.yaml
@@ -46,4 +46,5 @@ total: 4443.52
 comments: >
     Late afternoon is best.
     Backup contact is Nancy
-    Billsmer @ 338-4338.
\ No newline at end of file
+    Billsmer @ 338-4338.
+summary:
\ No newline at end of file

Reply via email to