public void set()

in src/com/facebook/buck/rules/ParamInfo.java [210:247]


  public void set(BuildRuleResolver resolver, Object dto, @Nullable Object value) {
    if (value == null) {
      if (!isOptional) {
        throw new IllegalArgumentException(String.format(
            "%s cannot be null. Build file can be found in %s.",
            dto, pathRelativeToProjectRoot));
      }

      value = Optional.absent();
    } else if (isOptional && matchesDefaultValue(value)) {
      if (value instanceof Collection) {
        value = asCollection(resolver, Lists.newArrayList());
        value = Optional.of(value);
      } else {
        value = Optional.absent();
      }
    } else if (containerType == null) {
      value = coerceToExpectedType(resolver, value);
      if (isOptional) {
        value = Optional.of(value);
      }
    } else {
      value = asCollection(resolver, value);
      if (isOptional) {
        value = Optional.of(value);
      }
    }

    try {
      field.set(dto, value);
    } catch (ReflectiveOperationException e) {
      throw new RuntimeException(e);
    } catch (ClassCastException | IllegalArgumentException | NullPointerException e) {
      throw new IllegalArgumentException(String.format(
          "Unable to convert '%s' to %s in build file in %s",
          value, type, pathRelativeToProjectRoot));
    }
  }