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