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/03/19 18:48:52 UTC

svn commit: r1458431 - /sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java

Author: cziegeler
Date: Tue Mar 19 17:48:52 2013
New Revision: 1458431

URL: http://svn.apache.org/r1458431
Log:
SLING-2787 :  Inefficient array conversion in ValueMapDecorator.convertToArray() . Apply patch from Lukas Eder

Modified:
    sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java

Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java?rev=1458431&r1=1458430&r2=1458431&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java (original)
+++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java Tue Mar 19 17:48:52 2013
@@ -20,8 +20,6 @@ package org.apache.sling.api.wrappers;
 
 import java.lang.reflect.Array;
 import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -90,22 +88,25 @@ public class ValueMapDecorator implement
 
     /**
      * Converts the object to an array of the given type
-     * @param obj tje object or object array
+     * @param obj the object or object array
      * @param type the component type of the array
      * @return and array of type T
      */
     private <T> T[] convertToArray(Object obj, Class<T> type) {
-        List<T> values = new LinkedList<T>();
         if (obj.getClass().isArray()) {
-            for (Object o: (Object[]) obj) {
-                values.add(convert(o, type));
+            final Object[] array = (Object[]) obj;
+			@SuppressWarnings("unchecked")
+			final T[] result = (T[]) Array.newInstance(type, array.length);
+            for (int i = 0; i < array.length; i++) {
+                result[i] = convert(array[i], type);
             }
+            return result;
         } else {
-            values.add(convert(obj, type));
+            @SuppressWarnings("unchecked")
+            final T[] result = (T[]) Array.newInstance(type, 1);
+            result[0] = convert(obj, type);
+            return result;
         }
-        @SuppressWarnings("unchecked")
-        T[] result = (T[]) Array.newInstance(type, values.size());
-        return values.toArray(result);
     }
 
     /**