org.apache.commons.beanutils.converters

Class ArrayConverter

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 ObjectconvertArray(Object value)
Returns the value unchanged.
protected CollectionconvertToCollection(Class type, Object value)
Converts non-array values to a Collection prior to being converted either to an array or a String.
protected StringconvertToString(Object value)
Handles conversion to a String.
protected ObjectconvertToType(Class type, Object value)
Handles conversion to an array of the specified type.
protected ObjectgetDefault(Class type)
Return the default value for conversions to the specified type.
protected ClassgetDefaultType()
Return the default type this Converter handles.
voidsetAllowedChars(char[] allowedChars)
Set the allowed characters to be used for parsing a delimited String.
voidsetDelimiter(char delimiter)
Set the delimiter to be used for parsing a delimited String.
voidsetOnlyFirstToString(boolean onlyFirstToString)
Indicates whether converting to a String should create a delimited list or just convert the first value.
StringtoString()
Provide a String representation of this array converter.

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

convertArray

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

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 ArrayConverter and convertToString methods for non-array types.

Parameters: type The type to convert the value to value value to be converted

Returns: Collection elements.

convertToString

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

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)
Handles conversion to an array of the specified type.

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

getDefault

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

Parameters: type Data type to which this value should be converted.

Returns: The default value for the specified type.

getDefaultType

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

Returns: The default type this Converter handles.

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 '-']

setDelimiter

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

Parameters: delimiter The delimiter [default ',']

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

toString

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

Returns: A String representation of this array converter

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