You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2013/10/22 11:51:09 UTC

svn commit: r1534576 - in /sling/trunk/contrib/extensions/resource-inventory: pom.xml src/main/java/org/apache/sling/resource/inventory/impl/JsonObjectCreator.java

Author: cziegeler
Date: Tue Oct 22 09:51:08 2013
New Revision: 1534576

URL: http://svn.apache.org/r1534576
Log:
SLING-3197 : ClassCastException when serializing arrays of scalar types

Modified:
    sling/trunk/contrib/extensions/resource-inventory/pom.xml
    sling/trunk/contrib/extensions/resource-inventory/src/main/java/org/apache/sling/resource/inventory/impl/JsonObjectCreator.java

Modified: sling/trunk/contrib/extensions/resource-inventory/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resource-inventory/pom.xml?rev=1534576&r1=1534575&r2=1534576&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resource-inventory/pom.xml (original)
+++ sling/trunk/contrib/extensions/resource-inventory/pom.xml Tue Oct 22 09:51:08 2013
@@ -95,5 +95,11 @@
         	<groupId>javax.servlet</groupId>
         	<artifactId>servlet-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.0</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 </project>

Modified: sling/trunk/contrib/extensions/resource-inventory/src/main/java/org/apache/sling/resource/inventory/impl/JsonObjectCreator.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resource-inventory/src/main/java/org/apache/sling/resource/inventory/impl/JsonObjectCreator.java?rev=1534576&r1=1534575&r2=1534576&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resource-inventory/src/main/java/org/apache/sling/resource/inventory/impl/JsonObjectCreator.java (original)
+++ sling/trunk/contrib/extensions/resource-inventory/src/main/java/org/apache/sling/resource/inventory/impl/JsonObjectCreator.java Tue Oct 22 09:51:08 2013
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
 
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.commons.json.JSONArray;
@@ -150,7 +151,27 @@ public abstract class JsonObjectCreator 
     throws JSONException {
         Object[] values = null;
         if (value.getClass().isArray()) {
-            values = (Object[])value;
+            if (value instanceof long[]) {
+                values = ArrayUtils.toObject((long[])value);
+            } else if (value instanceof int[]) {
+                values = ArrayUtils.toObject((int[])value);
+            } else if (value instanceof double[]) {
+                values = ArrayUtils.toObject((double[])value);
+            } else if (value instanceof byte[]) {
+                values = ArrayUtils.toObject((byte[])value);
+            } else if (value instanceof float[]) {
+                values = ArrayUtils.toObject((float[])value);
+            } else if (value instanceof short[]) {
+                values = ArrayUtils.toObject((short[])value);
+            } else if (value instanceof long[]) {
+                values = ArrayUtils.toObject((long[])value);
+            } else if (value instanceof boolean[]) {
+                values = ArrayUtils.toObject((boolean[])value);
+            } else if (value instanceof char[]) {
+                values = ArrayUtils.toObject((char[])value);
+            } else {
+                values = (Object[]) value;
+            }
             // write out empty array
             if ( values.length == 0 ) {
                 obj.put(key, new JSONArray());