This is an automated email from the ASF dual-hosted git repository.

davidb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new b4875d1  FELIX-6242 Conversion of boolean to Long results in Integer
     new f2cc5ad  Merge pull request #18 from bosschaert/FELIX-6242
b4875d1 is described below

commit b4875d1e5163579e16f8135c300239463703dbe5
Author: David Bosschaert <dav...@apache.org>
AuthorDate: Thu Apr 16 14:04:05 2020 +0100

    FELIX-6242 Conversion of boolean to Long results in Integer
---
 .../java/org/osgi/util/converter/ConvertingImpl.java  |  6 ++++--
 .../java/org/osgi/util/converter/ConverterTest.java   | 19 +++++++++++++++----
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git 
a/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java 
b/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java
index 0733060..71e333a 100644
--- 
a/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java
+++ 
b/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java
@@ -18,8 +18,8 @@ package org.osgi.util.converter;
 
 import java.lang.annotation.Annotation;
 import java.lang.invoke.MethodHandles;
-import java.lang.invoke.MethodType;
 import java.lang.invoke.MethodHandles.Lookup;
+import java.lang.invoke.MethodType;
 import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -915,7 +915,9 @@ class ConvertingImpl extends AbstractSpecifying<Converting>
                        }
                } else if (Number.class.isAssignableFrom(targetAsClass)) {
                        if (object instanceof Boolean) {
-                               return ((Boolean) object).booleanValue() ? 1 : 
0;
+                               return c.convert(((Boolean) 
object).booleanValue() ? 1 : 0)
+                           .targetAs(targetAsClass)
+                           .to(targetType);
                        } else if (object instanceof Number) {
                                if (Byte.class.isAssignableFrom(targetAsClass)) 
{
                                        return ((Number) object).byteValue();
diff --git 
a/converter/converter/src/test/java/org/osgi/util/converter/ConverterTest.java 
b/converter/converter/src/test/java/org/osgi/util/converter/ConverterTest.java
index 166b9c9..b635edf 100644
--- 
a/converter/converter/src/test/java/org/osgi/util/converter/ConverterTest.java
+++ 
b/converter/converter/src/test/java/org/osgi/util/converter/ConverterTest.java
@@ -349,13 +349,13 @@ public class ConverterTest {
         assertArrayEquals(new char [] {'x', 'y'}, ca4b);
         assertNotSame("Should have created a new instance", ca4a, ca4b);
     }
-    
+
     /**
      * 707.4.3.1 - null becomes an empty array
      */
     @Test
     public void testNullToArrayConversion() {
-       
+
        checkArray(String[].class);
        checkArray(boolean[].class);
        checkArray(byte[].class);
@@ -376,7 +376,7 @@ public class ConverterTest {
        checkArray(long[][].class);
        checkArray(double[][].class);
 
-       
+
        checkArray(String[][][].class);
        checkArray(boolean[][][].class);
        checkArray(byte[][][].class);
@@ -390,7 +390,7 @@ public class ConverterTest {
 
        private void checkArray(Class<?> arrayType) {
                assertTrue(arrayType.isArray());
-               
+
                Object array = converter.convert(null).to(arrayType);
        assertEquals(0, Array.getLength(array));
        assertTrue(arrayType.isInstance(array));
@@ -1473,6 +1473,17 @@ public class ConverterTest {
             new HashMap<String, Object>()).to(clazz);
         assertEquals(InterfaceWithDefaultMethod.RESULT, i.defaultMethod());
     }
+
+    @Test
+    public void testConvertBooleanToNumber() {
+        assertEquals(Byte.valueOf((byte) 1), 
converter.convert(Boolean.TRUE).to(Byte.class));
+        assertEquals(Short.valueOf((short) 1), 
converter.convert(Boolean.TRUE).to(Short.class));
+        assertEquals(Integer.valueOf(1), 
converter.convert(Boolean.TRUE).to(Integer.class));
+        assertEquals(Long.valueOf(1), 
converter.convert(Boolean.TRUE).to(Long.class));
+        assertEquals(Float.valueOf(1.0f), 
converter.convert(Boolean.TRUE).to(Float.class));
+        assertEquals(Double.valueOf(1.0), 
converter.convert(Boolean.TRUE).to(Double.class));
+    }
+
     static interface MyIntf2 {
         String code();
         Integer value();

Reply via email to