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 2017/11/14 05:23:16 UTC

svn commit: r1815187 - in /felix/trunk/converter/converter/src: main/java/org/apache/felix/converter/impl/ConvertingImpl.java test/java/org/apache/felix/converter/impl/ConverterTest.java

Author: davidb
Date: Tue Nov 14 05:23:16 2017
New Revision: 1815187

URL: http://svn.apache.org/viewvc?rev=1815187&view=rev
Log:
Fix default handling in Converter

Modified:
    felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java
    felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java

Modified: felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java?rev=1815187&r1=1815186&r2=1815187&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java (original)
+++ felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java Tue Nov 14 05:23:16 2017
@@ -239,10 +239,17 @@ class ConvertingImpl extends AbstractSpe
             return null;
 
         for (Object o : cv) {
-            if (targetElementType != null)
-                o = converter.convert(o).to(targetElementType);
+            if (targetElementType != null) {
+                InternalConverting converting = converter.convert(o);
+                if (hasDefault) {
+                    // TODO this needs to be done more generally
+                    converting.defaultValue(defaultValue);
+                }
+                o = converting.to(targetElementType);
+            }
 
-            instance.add(o);
+            if (!(o == null && cv.size() == 1))
+                instance.add(o);
         }
 
         return (T) instance;

Modified: felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java?rev=1815187&r1=1815186&r2=1815187&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java (original)
+++ felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java Tue Nov 14 05:23:16 2017
@@ -539,6 +539,7 @@ public class ConverterTest {
         long l = converter.convert(null).defaultValue("12").to(Long.class);
         assertEquals(12L, l);
         assertNull(converter.convert("haha").defaultValue(null).to(Integer.class));
+        assertEquals(0, converter.convert("test").defaultValue(null).to(new TypeReference<List<Long>>() {}).size());
     }
 
     @Test