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>.