in uimafit-core/src/main/java/org/apache/uima/fit/factory/ConfigurationParameterFactory.java [288:329]
static Object convertParameterValue(ConfigurationParameter param, Object aValue) {
Object value = aValue;
if (aValue == null) {
return null;
}
if (value.getClass().isArray() && value.getClass().getComponentType().isPrimitive()) {
if ("boolean".equals(value.getClass().getComponentType().getName())) {
return ArrayUtils.toObject((boolean[]) value);
}
if ("int".equals(value.getClass().getComponentType().getName())) {
return ArrayUtils.toObject((int[]) value);
}
if ("long".equals(value.getClass().getComponentType().getName())) {
return ArrayUtils.toObject((long[]) value);
}
if ("float".equals(value.getClass().getComponentType().getName())) {
return ArrayUtils.toObject((float[]) value);
}
if ("double".equals(value.getClass().getComponentType().getName())) {
return ArrayUtils.toObject((double[]) value);
}
}
Class<?> classForParameter = getClassForParameterType(param.getType());
if (value.getClass().isArray() || value instanceof Collection) {
classForParameter = Array.newInstance(classForParameter, 0).getClass();
}
try {
SimpleTypeConverter converter = new SimpleTypeConverter();
PropertyEditorUtil.registerUimaFITEditors(converter);
value = converter.convertIfNecessary(value, classForParameter);
return value;
} catch (TypeMismatchException e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
}