Пример #1
0
  private static Object getListValue(
      Class<?> beanClass,
      Type parameterType,
      Class<?> parameterClass,
      Config config,
      String configPropName) {
    Type elementType = ((ParameterizedType) parameterType).getActualTypeArguments()[0];

    if (elementType == Boolean.class) {
      return config.getBooleanList(configPropName);
    } else if (elementType == Integer.class) {
      return config.getIntList(configPropName);
    } else if (elementType == Double.class) {
      return config.getDoubleList(configPropName);
    } else if (elementType == Long.class) {
      return config.getLongList(configPropName);
    } else if (elementType == String.class) {
      return config.getStringList(configPropName);
    } else if (elementType == Duration.class) {
      return config.getDurationList(configPropName);
    } else if (elementType == ConfigMemorySize.class) {
      return config.getMemorySizeList(configPropName);
    } else if (elementType == Object.class) {
      return config.getAnyRefList(configPropName);
    } else if (elementType == Config.class) {
      return config.getConfigList(configPropName);
    } else if (elementType == ConfigObject.class) {
      return config.getObjectList(configPropName);
    } else if (elementType == ConfigValue.class) {
      return config.getList(configPropName);
    } else if (hasAtLeastOneBeanProperty((Class<?>) elementType)) {
      List<Object> beanList = new ArrayList<Object>();
      List<? extends Config> configList = config.getConfigList(configPropName);
      for (Config listMember : configList) {
        beanList.add(createInternal(listMember, (Class<?>) elementType));
      }
      return beanList;
    } else {
      throw new ConfigException.BadBean(
          "Bean property '"
              + configPropName
              + "' of class "
              + beanClass.getName()
              + " has unsupported list element type "
              + elementType);
    }
  }