This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.caconfig.spi-1.2.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-caconfig-spi.git
commit 12e5b6c24ef6890b54f2d4615ba983d9a8bceb75 Author: Stefan Seifert <[email protected]> AuthorDate: Thu Dec 1 22:39:47 2016 +0000 SLING-6338 make primitive wrapper type conversion consistent git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/contextaware-config/spi@1772282 13f79535-47bb-0310-9956-ffa450edef68 --- .../caconfig/spi/metadata/PropertyMetadata.java | 32 +++++++++++++++++++--- .../spi/metadata/PropertyMetadataTest.java | 12 ++++++++ 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java index e936077..977e259 100644 --- a/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java +++ b/src/main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java @@ -79,10 +79,34 @@ public final class PropertyMetadata<T> extends AbstractMetadata<PropertyMetadata } 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; diff --git a/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java b/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java index a51b948..e93fb8b 100644 --- a/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java +++ b/src/test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java @@ -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); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
