// Deal with a null value
if (value == null) {
if (useDefault) {
return (defaultValue);
} else {
throw new ConversionException("No value specified");
}
}
// Deal with the no-conversion-needed case
if (MODEL == value.getClass()) {
return (value);
}
// Deal with input value as a String array
//
// TODO: use if (value.getClass().isArray() instead...
// this requires casting to Object[], then using values[i].toString()
if (strings.getClass() == value.getClass()) {
try {
String[] values = (String[]) value;
boolean[] results = new boolean[values.length];
for (int i = 0; i < values.length; i++) {
String stringValue = values[i];
Object result = booleanConverter.convert(Boolean.class, stringValue);
results[i] = ((Boolean) result).booleanValue();
}
return (results);
} catch (Exception e) {
if (useDefault) {
return (defaultValue);
} else {
throw new ConversionException(value.toString(), e);
}
}
}
// We only get here if the input value is not of type String[].
// In this case, we assume value.toString() returns a comma-separated
// sequence of values; see method AbstractArrayConverter.parseElements
// for more information.
try {
List list = parseElements(value.toString());
boolean[] results = new boolean[list.size()];
for (int i = 0; i < results.length; i++) {
String stringValue = (String) list.get(i);
Object result = booleanConverter.convert(Boolean.class, stringValue);
results[i] = ((Boolean) result).booleanValue();
}
return (results);
} catch (Exception e) {
if (useDefault) {
return (defaultValue);
} else {
throw new ConversionException(value.toString(), e);
}
}
}