Author: sseifert Date: Thu Dec 1 22:39:47 2016 New Revision: 1772282 URL: http://svn.apache.org/viewvc?rev=1772282&view=rev Log: SLING-6338 make primitive wrapper type conversion consistent
Modified: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java sling/trunk/contrib/extensions/contextaware-config/spi/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java Modified: sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java?rev=1772282&r1=1772281&r2=1772282&view=diff ============================================================================== --- sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java (original) +++ sling/trunk/contrib/extensions/contextaware-config/spi/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java Thu Dec 1 22:39:47 2016 @@ -79,10 +79,34 @@ public final class PropertyMetadata<T> e } private static Class<?> typeToPrimitive(Class<?> clazz) { - if (clazz != String.class && !clazz.isPrimitive()) { - Class<?> type = ClassUtils.wrapperToPrimitive(clazz); - if (type != null) { - return type; + if (clazz.isArray()) { + if (ClassUtils.isPrimitiveWrapper(clazz.getComponentType())) { + if (clazz == Integer[].class) { + return int[].class; + } + if (clazz == Long[].class) { + return long[].class; + } + if (clazz == Double[].class) { + return double[].class; + } + if (clazz == Boolean[].class) { + return boolean[].class; + } + } + } + else if (ClassUtils.isPrimitiveWrapper(clazz)) { + if (clazz == Integer.class) { + return int.class; + } + if (clazz == Long.class) { + return long.class; + } + if (clazz == Double.class) { + return double.class; + } + if (clazz == Boolean.class) { + return boolean.class; } } return clazz; Modified: sling/trunk/contrib/extensions/contextaware-config/spi/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/spi/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java?rev=1772282&r1=1772281&r2=1772282&view=diff ============================================================================== --- sling/trunk/contrib/extensions/contextaware-config/spi/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java (original) +++ sling/trunk/contrib/extensions/contextaware-config/spi/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java Thu Dec 1 22:39:47 2016 @@ -66,6 +66,18 @@ public class PropertyMetadataTest { } @Test + public void testAllowedTypesConverted() { + assertEquals(int.class, new PropertyMetadata<>("name1", Integer.class).getType()); + assertEquals(int[].class, new PropertyMetadata<>("name1", Integer[].class).getType()); + assertEquals(long.class, new PropertyMetadata<>("name1", Long.class).getType()); + assertEquals(long[].class, new PropertyMetadata<>("name1", Long[].class).getType()); + assertEquals(double.class, new PropertyMetadata<>("name1", Double.class).getType()); + assertEquals(double[].class, new PropertyMetadata<>("name1", Double[].class).getType()); + assertEquals(boolean.class, new PropertyMetadata<>("name1", Boolean.class).getType()); + assertEquals(boolean[].class, new PropertyMetadata<>("name1", Boolean[].class).getType()); + } + + @Test public void testNestedConfiguration() { new PropertyMetadata<>("name1", ConfigurationMetadata.class); new PropertyMetadata<>("name1", ConfigurationMetadata[].class);