public static Duration parseJavaDuration()

in ingestion-core/src/main/java/com/mozilla/telemetry/ingestion/core/util/Time.java [18:51]


  public static Duration parseJavaDuration(String value) {
    checkNotNull(value, "The specified duration must be a non-null value!");
    Duration duration;

    try {
      // This is already an ISO-8601 duration.
      duration = Duration.parse(value);
    } catch (DateTimeParseException outer) {
      String modifiedValue = value.toLowerCase().replaceAll("seconds", "s")
          .replaceAll("second", "s").replaceAll("sec", "s").replaceAll("minutes", "m")
          .replaceAll("minute", "m").replaceAll("mins", "m").replaceAll("min", "m")
          .replaceAll("hours", "h").replaceAll("hour", "h").replaceAll("days", "dt")
          .replaceAll("day", "dt").replaceAll("\\s+", "").toUpperCase();
      if (!modifiedValue.contains("T")) {
        modifiedValue = "T" + modifiedValue;
      }
      if (!modifiedValue.contains("P")) {
        modifiedValue = "P" + modifiedValue;
      }
      if (modifiedValue.endsWith("T")) {
        modifiedValue += "0s";
      }
      try {
        duration = Duration.parse(modifiedValue);
      } catch (java.time.format.DateTimeParseException e) {
        throw new IllegalArgumentException(
            "User-provided duration '" + value + "' was transformed to '" + modifiedValue
                + "', but java.time.Duration.parse() could not understand it.",
            e);
      }
    }

    return duration;
  }