Author: davidb
Date: Thu Oct 26 14:19:25 2017
New Revision: 1813407

URL: http://svn.apache.org/viewvc?rev=1813407&view=rev
Log:
Move some special converter cases to rules.

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

Modified: 
felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConverterImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConverterImpl.java?rev=1813407&r1=1813406&r2=1813407&view=diff
==============================================================================
--- 
felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConverterImpl.java
 (original)
+++ 
felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConverterImpl.java
 Thu Oct 26 14:19:25 2017
@@ -203,6 +203,20 @@ public class ConverterImpl implements In
             }
         }) {});
 
+        cb.rule(new Rule<Number, Boolean>(new Function<Number, Boolean>() {
+            @Override
+            public Boolean apply(Number obj) {
+                return obj.longValue() != 0;
+            }
+        }) {});
+
+        cb.rule(new Rule<Number, Character>(new Function<Number, Character>() {
+            @Override
+            public Character apply(Number obj) {
+                return Character.valueOf((char) obj.intValue());
+            }
+        }) {});
+
         reflectiveAddRule(cb, "java.time.LocalDateTime", "parse");
         reflectiveAddRule(cb, "java.time.LocalDate", "parse");
         reflectiveAddRule(cb, "java.time.LocalTime", "parse");

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=1813407&r1=1813406&r2=1813407&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
 Thu Oct 26 14:19:25 2017
@@ -533,19 +533,10 @@ public class ConvertingImpl extends Abst
     }
 
     private Object trySpecialCases() {
-        // TODO some of these can probably be implemented as an adapter
-
         if (Boolean.class.equals(targetAsClass)) {
-            if (object instanceof Number) {
-                return ((Number) object).longValue() != 0;
-            } else if (object instanceof Collection && ((Collection<?>) 
object).size() == 0) {
-                // TODO What about arrays?
+            if (object instanceof Collection && ((Collection<?>) 
object).size() == 0) {
                 return Boolean.FALSE;
             }
-        } else if (Character.class.equals(targetAsClass)) {
-            if (object instanceof Number) {
-                return Character.valueOf((char) ((Number) object).intValue());
-            }
         } else if (Number.class.isAssignableFrom(targetAsClass)) {
             if (object instanceof Boolean) {
                 return ((Boolean) object).booleanValue() ? 1 : 0;
@@ -564,10 +555,6 @@ public class ConvertingImpl extends Abst
                     return ((Number) object).doubleValue();
                 }
             }
-        } else if (Class.class.equals(targetAsClass)) {
-            if (object instanceof Collection && ((Collection<?>) 
object).size() == 0) {
-                return null;
-            }
         } else if (Enum.class.isAssignableFrom(targetAsClass)) {
             if (object instanceof Number) {
                 try {
@@ -841,7 +828,6 @@ public class ConvertingImpl extends Abst
         return Map.class.isAssignableFrom(cls) ||
                 Collection.class.isAssignableFrom(cls) ||
                 DTOUtil.isDTOType(cls) ||
-                // isJavaBean
                 cls.isArray();
     }
 


Reply via email to