static Object convertParameterValue()

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);
    }
  }