You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@velocity.apache.org by cb...@apache.org on 2018/03/23 17:34:23 UTC
svn commit: r1827587 -
/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ConversionUtils.java
Author: cbrisson
Date: Fri Mar 23 17:34:23 2018
New Revision: 1827587
URL: http://svn.apache.org/viewvc?rev=1827587&view=rev
Log:
fix and improve asList() method
Modified:
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ConversionUtils.java
Modified: velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ConversionUtils.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ConversionUtils.java?rev=1827587&r1=1827586&r2=1827587&view=diff
==============================================================================
--- velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ConversionUtils.java (original)
+++ velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ConversionUtils.java Fri Mar 23 17:34:23 2018
@@ -19,8 +19,6 @@ package org.apache.velocity.tools;
* under the License.
*/
-import org.slf4j.LoggerFactory;
-
import java.io.File;
import java.lang.reflect.Array;
import java.net.URL;
@@ -43,6 +41,8 @@ import java.util.Map;
import java.util.TimeZone;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
+import org.apache.commons.lang3.ArrayUtils;
+import org.slf4j.LoggerFactory;
/**
* Utility methods for parsing or otherwise converting between types.
@@ -848,7 +848,21 @@ public class ConversionUtils
public static List asList(Object value)
{
if (value instanceof List) return (List)value;
- else if (value.getClass().isArray()) return Arrays.asList(value);
+ else if (value.getClass().isArray())
+ {
+ Class componentClass = value.getClass().getComponentType();
+ if (componentClass.isPrimitive())
+ {
+ if (componentClass.equals(char.class)) value = ArrayUtils.toObject((char[])value);
+ else if (componentClass.equals(long.class)) value = ArrayUtils.toObject((long[])value);
+ else if (componentClass.equals(int.class)) value = ArrayUtils.toObject((int[])value);
+ else if (componentClass.equals(short.class)) value = ArrayUtils.toObject((short[])value);
+ else if (componentClass.equals(byte.class)) value = ArrayUtils.toObject((byte[])value);
+ else if (componentClass.equals(double.class)) value = ArrayUtils.toObject((double[])value);
+ else if (componentClass.equals(float.class)) value = ArrayUtils.toObject((float[])value);
+ }
+ return new ArrayList(Arrays.asList((Object[])value));
+ }
else
{
List ret = new ArrayList();