You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:19:43 UTC

[sling-org-apache-sling-caconfig-spi] 12/23: SLING-6338 make primitive wrapper type conversion consistent

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 <ss...@apache.org>
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
"commits@sling.apache.org" <co...@sling.apache.org>.