Author: niallp Date: Sun May 20 00:59:06 2007 New Revision: 539842 URL: http://svn.apache.org/viewvc?view=rev&rev=539842 Log: BEANUTILS-242 - register new generic array converter implementation in place of previous versions
Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java?view=diff&rev=539842&r1=539841&r2=539842 ============================================================================== --- jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java (original) +++ jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java Sun May 20 00:59:06 2007 @@ -30,31 +30,24 @@ import java.util.Collection; import java.util.Map; import java.util.HashMap; +import org.apache.commons.beanutils.converters.ArrayConverter; import org.apache.commons.beanutils.converters.BigDecimalConverter; import org.apache.commons.beanutils.converters.BigIntegerConverter; import org.apache.commons.beanutils.converters.BooleanConverter; -import org.apache.commons.beanutils.converters.BooleanArrayConverter; import org.apache.commons.beanutils.converters.ByteConverter; -import org.apache.commons.beanutils.converters.ByteArrayConverter; import org.apache.commons.beanutils.converters.CharacterConverter; -import org.apache.commons.beanutils.converters.CharacterArrayConverter; import org.apache.commons.beanutils.converters.ClassConverter; +import org.apache.commons.beanutils.converters.DateConverter; import org.apache.commons.beanutils.converters.DoubleConverter; -import org.apache.commons.beanutils.converters.DoubleArrayConverter; import org.apache.commons.beanutils.converters.FileConverter; import org.apache.commons.beanutils.converters.FloatConverter; -import org.apache.commons.beanutils.converters.FloatArrayConverter; import org.apache.commons.beanutils.converters.IntegerConverter; -import org.apache.commons.beanutils.converters.IntegerArrayConverter; import org.apache.commons.beanutils.converters.LongConverter; -import org.apache.commons.beanutils.converters.LongArrayConverter; import org.apache.commons.beanutils.converters.ShortConverter; -import org.apache.commons.beanutils.converters.ShortArrayConverter; import org.apache.commons.beanutils.converters.SqlDateConverter; import org.apache.commons.beanutils.converters.SqlTimeConverter; import org.apache.commons.beanutils.converters.SqlTimestampConverter; import org.apache.commons.beanutils.converters.StringConverter; -import org.apache.commons.beanutils.converters.StringArrayConverter; import org.apache.commons.beanutils.converters.URLConverter; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -160,6 +153,8 @@ */ private Log log = LogFactory.getLog(ConvertUtils.class); + private int defaultArraySize = 0; + // ------------------------------------------------------- Constructors /** Construct a bean with standard converters registered */ @@ -560,16 +555,6 @@ */ public void deregister() { - boolean booleanArray[] = new boolean[0]; - byte byteArray[] = new byte[0]; - char charArray[] = new char[0]; - double doubleArray[] = new double[0]; - float floatArray[] = new float[0]; - int intArray[] = new int[0]; - long longArray[] = new long[0]; - short shortArray[] = new short[0]; - String stringArray[] = new String[0]; - converters.clear(); // Note: these two converters have no default values. This is @@ -577,51 +562,71 @@ // be fixed without breaking backwards compatibility. register(BigDecimal.class, new BigDecimalConverter()); register(BigInteger.class, new BigIntegerConverter()); + registerArrayConverter(BigDecimal[].class, new BigDecimalConverter()); + registerArrayConverter(BigInteger[].class, new BigIntegerConverter()); register(Boolean.TYPE, new BooleanConverter(defaultBoolean)); register(Boolean.class, new BooleanConverter(defaultBoolean)); - register(booleanArray.getClass(), - new BooleanArrayConverter(booleanArray)); + registerArrayConverter(boolean[].class, new BooleanConverter()); + registerArrayConverter(Boolean[].class, new BooleanConverter()); register(Byte.TYPE, new ByteConverter(defaultByte)); register(Byte.class, new ByteConverter(defaultByte)); - register(byteArray.getClass(), - new ByteArrayConverter(byteArray)); + registerArrayConverter(byte[].class, new ByteConverter()); + registerArrayConverter(Byte[].class, new ByteConverter()); register(Character.TYPE, new CharacterConverter(defaultCharacter)); register(Character.class, new CharacterConverter(defaultCharacter)); - register(charArray.getClass(), - new CharacterArrayConverter(charArray)); + registerArrayConverter(char[].class, new CharacterConverter()); + registerArrayConverter(Character[].class, new CharacterConverter()); register(Class.class, new ClassConverter()); register(Double.TYPE, new DoubleConverter(defaultDouble)); register(Double.class, new DoubleConverter(defaultDouble)); - register(doubleArray.getClass(), - new DoubleArrayConverter(doubleArray)); + registerArrayConverter(double[].class, new DoubleConverter()); + registerArrayConverter(Double[].class, new DoubleConverter()); register(Float.TYPE, new FloatConverter(defaultFloat)); register(Float.class, new FloatConverter(defaultFloat)); - register(floatArray.getClass(), - new FloatArrayConverter(floatArray)); + registerArrayConverter(float[].class, new FloatConverter()); + registerArrayConverter(Float[].class, new FloatConverter()); register(Integer.TYPE, new IntegerConverter(defaultInteger)); register(Integer.class, new IntegerConverter(defaultInteger)); - register(intArray.getClass(), - new IntegerArrayConverter(intArray)); + registerArrayConverter(int[].class, new IntegerConverter()); + registerArrayConverter(Integer[].class, new IntegerConverter()); register(Long.TYPE, new LongConverter(defaultLong)); register(Long.class, new LongConverter(defaultLong)); - register(longArray.getClass(), - new LongArrayConverter(longArray)); + registerArrayConverter(long[].class, new LongConverter()); + registerArrayConverter(Long[].class, new LongConverter()); register(Short.TYPE, new ShortConverter(defaultShort)); register(Short.class, new ShortConverter(defaultShort)); - register(shortArray.getClass(), - new ShortArrayConverter(shortArray)); + registerArrayConverter(short[].class, new ShortConverter()); + registerArrayConverter(Short[].class, new ShortConverter()); register(String.class, new StringConverter()); - register(stringArray.getClass(), - new StringArrayConverter(stringArray)); + registerArrayConverter(String[].class, new StringConverter()); register(Date.class, new SqlDateConverter()); + registerArrayConverter(Date[].class, new SqlDateConverter()); register(Time.class, new SqlTimeConverter()); + registerArrayConverter(Time[].class, new SqlTimeConverter()); register(Timestamp.class, new SqlTimestampConverter()); + registerArrayConverter(Timestamp[].class, new SqlTimestampConverter()); register(File.class, new FileConverter()); register(URL.class, new URLConverter()); + register(java.util.Date.class, new DateConverter()); + register(java.util.Calendar.class, new DateConverter()); + registerArrayConverter(java.util.Date[].class, new DateConverter()); + registerArrayConverter(java.util.Calendar[].class, new DateConverter()); + + } + /** + * Create a new ArrayConverter with the specified element delegate converter + * and the default size. + */ + private void registerArrayConverter(Class clazz, Converter converter) { + if (defaultArraySize < 0) { + register(clazz, new ArrayConverter(clazz, converter)); + } else { + register(clazz, new ArrayConverter(clazz, converter, defaultArraySize)); + } } /** strictly for convenience since it has same parameter order as Map.put */ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]