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