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(); }