Author: sseifert
Date: Tue Dec  6 21:03:11 2016
New Revision: 1772957

URL: http://svn.apache.org/viewvc?rev=1772957&view=rev
Log:
SLING-6347 fix problem with primitive type arrays

Modified:
    
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java
    
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImplTest.java

Modified: 
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java?rev=1772957&r1=1772956&r2=1772957&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java
 (original)
+++ 
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java
 Tue Dec  6 21:03:11 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.caconfig.management.impl;
 
+import java.lang.reflect.Array;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -196,13 +197,16 @@ final class ConfigurationDataImpl implem
         Object value;
         Object effectiveValue;
         if (propertyMetadata != null) {
-            Class<?> type = 
ClassUtils.primitiveToWrapper(propertyMetadata.getType());
+            Class<?> type = propertyMetadata.getType();
             if (type == ConfigurationMetadata.class) {
                 type = ConfigurationData.class;
             }
             else if (type == ConfigurationMetadata[].class) {
                 type = ConfigurationData[].class;
             }
+            else {
+                type = primitiveToWrapper(type);
+            }
             value = getValues().get(propertyName, type);
             effectiveValue = getEffectiveValues().get(propertyName, type);
         }
@@ -219,6 +223,15 @@ final class ConfigurationDataImpl implem
                 configurationOverrideManager);
     }
     
+    private Class<?> primitiveToWrapper(Class<?> type) {
+        if (type.isArray()) {
+            return 
Array.newInstance(ClassUtils.primitiveToWrapper(type.getComponentType()), 
0).getClass();
+        }
+        else {
+            return ClassUtils.primitiveToWrapper(type);
+        }
+    }
+    
     private PropertyMetadata<?> getPropertyMetadata(String propertyName) {
         if (configMetadata == null) {
             return null;

Modified: 
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImplTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImplTest.java?rev=1772957&r1=1772956&r2=1772957&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImplTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImplTest.java
 Tue Dec  6 21:03:11 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.caconfig.management.impl;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -69,7 +70,8 @@ public class ConfigurationDataImplTest {
         configMetadata = new ConfigurationMetadata("testName", 
ImmutableList.<PropertyMetadata<?>>of(
                 new PropertyMetadata<>("prop1", "defValue"),
                 new PropertyMetadata<>("prop2", String.class),
-                new PropertyMetadata<>("prop3", 5)),
+                new PropertyMetadata<>("prop3", 5),
+                new PropertyMetadata<>("propIntArray", new Integer[] { 1,2,3 
})),
                 false);
     }
 
@@ -83,7 +85,7 @@ public class ConfigurationDataImplTest {
         assertEquals("item1", underTest.getCollectionItemName());
         
         assertEquals(configResource.getPath(), underTest.getResourcePath());
-        assertEquals(ImmutableSet.of("prop1", "prop2", "prop3", "prop4"), 
underTest.getPropertyNames());
+        assertEquals(ImmutableSet.of("prop1", "prop2", "prop3", "prop4", 
"propIntArray"), underTest.getPropertyNames());
         
         ValueMap values = underTest.getValues();
         assertEquals("value1", values.get("prop1", String.class));
@@ -111,6 +113,10 @@ public class ConfigurationDataImplTest {
         assertNull("prop4", prop4.getPropertyMetadata());
         assertEquals(true, prop4.getValue());
         assertEquals(true, prop4.getEffectiveValue());
+
+        ValueInfo<?> propIntArray = underTest.getValueInfo("propIntArray");
+        assertNull(propIntArray.getValue());
+        assertArrayEquals(new Integer[] {1,2,3}, 
(Integer[])propIntArray.getEffectiveValue());
     }
 
     @Test
@@ -152,7 +158,7 @@ public class ConfigurationDataImplTest {
         assertEquals("test", underTest.getConfigName());
         assertNull(underTest.getCollectionItemName());
         
-        assertEquals(ImmutableSet.of("prop1", "prop2", "prop3"), 
underTest.getPropertyNames());
+        assertEquals(ImmutableSet.of("prop1", "prop2", "prop3", 
"propIntArray"), underTest.getPropertyNames());
         
         ValueMap values = underTest.getValues();
         assertTrue(values.isEmpty());


Reply via email to