You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2016/12/01 22:39:47 UTC
svn commit: r1772282 - in
/sling/trunk/contrib/extensions/contextaware-config/spi/src:
main/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadata.java
test/java/org/apache/sling/caconfig/spi/metadata/PropertyMetadataTest.java
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);