container/src/main/java/com/streamsets/datacollector/definition/ConfigValueExtractor.java
private Object extractAsRuntime(Field field, String valueStr) {
     if (field.getType() == Byte.TYPE || field.getType() == Byte.class ||
         field.getType() == Short.TYPE || field.getType() == Short.class ||
         field.getType() == Integer.TYPE || field.getType() == Integer.class ||
         field.getType() == Long.TYPE || field.getType() == Long.class ||
         field.getType() == Float.TYPE || field.getType() == Float.class ||
         field.getType() == Double.TYPE || field.getType() == Double.class) {
       return extractAsNumber(field, valueStr);
    } else if (String.class.isAssignableFrom(field.getType())) {
       return valueStr;
    }

    throw new IllegalArgumentException(Utils.format("Invalid type for RUNTIME type: {}", field.getType()));
  }
private Object extractAsRuntime(Field field, String valueStr) {
     if (field.getType() == Byte.TYPE || field.getType() == Byte.class ||
         field.getType() == Short.TYPE || field.getType() == Short.class ||
         field.getType() == Integer.TYPE || field.getType() == Integer.class ||
         field.getType() == Long.TYPE || field.getType() == Long.class ||
         field.getType() == Float.TYPE || field.getType() == Float.class ||
         field.getType() == Double.TYPE || field.getType() == Double.class) {
       return extractAsNumber(field, valueStr);
    } else if (String.class.isAssignableFrom(field.getType())) {
       return valueStr;
    }

    throw new IllegalArgumentException(Utils.format("Invalid type for RUNTIME type: {}", field.getType()));
  }
RUNTIME supports only Numeric types and String at the moment