|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.commons.beanutils.converters.AbstractConverter org.apache.commons.beanutils.converters.ArrayConverter
public class ArrayConverter
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:
Converter
,
appropriate for the type, to convert individual elements
of the array. This leverages the power of existing converters
without having to replicate their functionality for converting
to the element type and removes the need to create a specifc
array type converters.Converter
.String
in one of two ways: as a delimited list
or by converting the first element in the array to a String - this
is controlled by the setOnlyFirstToString(boolean)
parameter.String
to a multi-dimensional arrays, by embedding ArrayConverter
within each other - see example below.ArrayConverter(Class, Converter)
constructor to create a converter which throws a
ConversionException
if the value is missing or
invalid.ArrayConverter(Class, Converter, int)
constructor to create a converter which returns a default
value. The defaultSize parameter controls the
default value in the following way:null
defaultSize
(N.B. elements
in the array will be null
)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:
setDelimiter(char)
- allows the character used as
the delimiter to be configured [default is a comma].setAllowedChars(char[])
- adds additional characters
(to the default alphabetic/numeric) to those considered to be
valid token characters.
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);
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 |
---|
public ArrayConverter(Class defaultType, Converter elementConverter)
Converter
with the specified
component Converter
that throws a
ConversionException
if an error occurs.
defaultType
- The default array type this
Converter
handleselementConverter
- Converter used to convert
individual array elements.public ArrayConverter(Class defaultType, Converter elementConverter, int defaultSize)
Converter
with the specified
component Converter
that returns a default
array of the specified size (or null
) if an error occurs.
defaultType
- The default array type this
Converter
handleselementConverter
- 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 |
---|
public void setDelimiter(char delimiter)
delimiter
- The delimiter [default ',']public void setAllowedChars(char[] allowedChars)
allowedChars
- Characters which are to be considered as part of
the tokens when parsing a delimited String [default is '.' and '-']public void setOnlyFirstToString(boolean onlyFirstToString)
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
protected Class getDefaultType()
Converter
handles.
getDefaultType
in class AbstractConverter
Converter
handles.protected String convertToString(Object value) throws Throwable
convertToString
in class AbstractConverter
value
- The value to be converted.
Throwable
- if an error occurs converting to a Stringprotected Object convertToType(Class type, Object value) throws Throwable
convertToType
in class AbstractConverter
type
- The type to which this value should be converted.value
- The input value to be converted.
Throwable
- if an error occurs converting to the specified typeprotected Object convertArray(Object value)
convertArray
in class AbstractConverter
value
- The value to convert
protected Collection convertToCollection(Class type, Object value)
Collection
values are returned unchangedNumber
, Boolean
and Date
values returned as a the only element in a List.convertToType(Class, Object)
and
convertToString(Object)
methods for
non-array types.
type
- The type to convert the value tovalue
- value to be converted
protected Object getDefault(Class type)
getDefault
in class AbstractConverter
type
- Data type to which this value should be converted.
public String toString()
toString
in class AbstractConverter
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |