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]>.

Reply via email to