org.apache.commons.beanutils.converters
Class ArrayConverter

java.lang.Object
  extended by org.apache.commons.beanutils.converters.AbstractConverter
      extended by org.apache.commons.beanutils.converters.ArrayConverter
All Implemented Interfaces:
Converter

public class ArrayConverter
extends AbstractConverter

Generic Converter implementaion that handles conversion to and from array objects.

Can be configured to either return a default value or throw a ConversionException if a conversion error occurs.

The main features of this implementation are:

Parsing Delimited Lists

This implementation can convert a delimited list in String format into an array of the appropriate type. By default, it uses a comma as the delimiter but the following methods can be used to configure parsing:

Multi Dimensional Arrays

It is possible to convert a String to mulit-dimensional arrays by using ArrayConverter as the element Converter within another ArrayConverter.

For example, the following code demonstrates how to construct a Converter to convert a delimited String into a two dimensional integer array:

    // Construct an Integer Converter
    IntegerConverter integerConverter = new IntegerConverter();

    // Construct an array Converter for an integer array (i.e. int[]) using
    // an IntegerConverter as the element converter.
    // N.B. Uses the default comma (i.e. ",") as the delimiter between individual numbers
    ArrayConverter arrayConverter = new ArrayConverter(int[].class, integerConverter);

    // Construct a "Matrix" Converter which converts arrays of integer arrays using
    // the pre-ceeding ArrayConverter as the element Converter.
    // N.B. Uses a semi-colon (i.e. ";") as the delimiter to separate the different sets of numbers.
    //      Also the delimiter used by the first ArrayConverter needs to be added to the
    //      "allowed characters" for this one.
    ArrayConverter matrixConverter = new ArrayConverter(int[][].class, arrayConverter);
    matrixConverter.setDelimiter(';');
    matrixConverter.setAllowedChars(new char[] {','});

    // Do the Conversion
    String matrixString = "11,12,13 ; 21,22,23 ; 31,32,33 ; 41,42,43";
    int[][] result = (int[][])matrixConverter.convert(int[][].class, matrixString);
 

Since:
1.8.0
Version:
$Revision: 640131 $ $Date: 2008-03-23 02:10:31 +0000 (Sun, 23 Mar 2008) $

Constructor Summary
ArrayConverter(Class defaultType, Converter elementConverter)
          Construct an array Converter with the specified component Converter that throws a ConversionException if an error occurs.
ArrayConverter(Class defaultType, Converter elementConverter, int defaultSize)
          Construct an array Converter with the specified component Converter that returns a default array of the specified size (or null) if an error occurs.
 
Method Summary
protected  Object convertArray(Object value)
          Returns the value unchanged.
protected  Collection convertToCollection(Class type, Object value)
          Converts non-array values to a Collection prior to being converted either to an array or a String.
protected  String convertToString(Object value)
          Handles conversion to a String.
protected  Object convertToType(Class type, Object value)
          Handles conversion to an array of the specified type.
protected  Object getDefault(Class type)
          Return the default value for conversions to the specified type.
protected  Class getDefaultType()
          Return the default type this Converter handles.
 void setAllowedChars(char[] allowedChars)
          Set the allowed characters to be used for parsing a delimited String.
 void setDelimiter(char delimiter)
          Set the delimiter to be used for parsing a delimited String.
 void setOnlyFirstToString(boolean onlyFirstToString)
          Indicates whether converting to a String should create a delimited list or just convert the first value.
 String toString()
          Provide a String representation of this array converter.
 
Methods inherited from class org.apache.commons.beanutils.converters.AbstractConverter
convert, handleError, handleMissing, isUseDefault, setDefaultValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ArrayConverter

public ArrayConverter(Class defaultType,
                      Converter elementConverter)
Construct an array Converter with the specified component Converter that throws a ConversionException if an error occurs.

Parameters:
defaultType - The default array type this Converter handles
elementConverter - Converter used to convert individual array elements.

ArrayConverter

public ArrayConverter(Class defaultType,
                      Converter elementConverter,
                      int defaultSize)
Construct an array Converter with the specified component Converter that returns a default array of the specified size (or null) if an error occurs.

Parameters:
defaultType - The default array type this Converter handles
elementConverter - Converter used to convert individual array elements.
defaultSize - Specifies the size of the default array value or if less than zero indicates that a null default value should be used.
Method Detail

setDelimiter

public void setDelimiter(char delimiter)
Set the delimiter to be used for parsing a delimited String.

Parameters:
delimiter - The delimiter [default ',']

setAllowedChars

public void setAllowedChars(char[] allowedChars)
Set the allowed characters to be used for parsing a delimited String.

Parameters:
allowedChars - Characters which are to be considered as part of the tokens when parsing a delimited String [default is '.' and '-']

setOnlyFirstToString

public void setOnlyFirstToString(boolean onlyFirstToString)
Indicates whether converting to a String should create a delimited list or just convert the first value.

Parameters:
onlyFirstToString - true converts only the first value in the array to a String, false converts all values in the array into a delimited list (default is true

getDefaultType

protected Class getDefaultType()
Return the default type this Converter handles.

Specified by:
getDefaultType in class AbstractConverter
Returns:
The default type this Converter handles.

convertToString

protected String convertToString(Object value)
                          throws Throwable
Handles conversion to a String.

Overrides:
convertToString in class AbstractConverter
Parameters:
value - The value to be converted.
Returns:
the converted String value.
Throws:
Throwable - if an error occurs converting to a String

convertToType

protected Object convertToType(Class type,
                               Object value)
                        throws Throwable
Handles conversion to an array of the specified type.

Specified by:
convertToType in class AbstractConverter
Parameters:
type - The type to which this value should be converted.
value - The input value to be converted.
Returns:
The converted value.
Throws:
Throwable - if an error occurs converting to the specified type

convertArray

protected Object convertArray(Object value)
Returns the value unchanged.

Overrides:
convertArray in class AbstractConverter
Parameters:
value - The value to convert
Returns:
The value unchanged

convertToCollection

protected Collection convertToCollection(Class type,
                                         Object value)
Converts non-array values to a Collection prior to being converted either to an array or a String.

N.B. The method is called by both the convertToType(Class, Object) and convertToString(Object) methods for non-array types.

Parameters:
type - The type to convert the value to
value - value to be converted
Returns:
Collection elements.

getDefault

protected Object getDefault(Class type)
Return the default value for conversions to the specified type.

Overrides:
getDefault in class AbstractConverter
Parameters:
type - Data type to which this value should be converted.
Returns:
The default value for the specified type.

toString

public String toString()
Provide a String representation of this array converter.

Overrides:
toString in class AbstractConverter
Returns:
A String representation of this array converter


Copyright © 2000-2010 The Apache Software Foundation. All Rights Reserved.