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


Reply via email to