public record DocumentElement()

in sources/src/main/java/com/google/solutions/jitaccess/catalog/policy/PolicyDocument.java [279:322]


  public record DocumentElement(
    @JsonProperty("schemaVersion") Integer schemaVersion,
    @JsonProperty("environment") EnvironmentElement environment
  ) {
    private static DocumentElement toYaml(
      @NotNull EnvironmentPolicy policy
    ) {
      return new DocumentElement(
        CURRENT_VERSION,
        EnvironmentElement.toYaml(policy));
    }

    private @NotNull Optional<EnvironmentPolicy> toPolicy(
      @NotNull IssueCollection issues,
      @NotNull Policy.Metadata metadata
    ) {
      boolean schemaVersionValid;
      if (this.schemaVersion == null) {
        issues.error(
          Issue.Code.FILE_INVALID_VERSION,
          "The file must specify a schema version");
        schemaVersionValid = false;
      }
      else if (this.schemaVersion != CURRENT_VERSION) {
        issues.error(
          Issue.Code.FILE_INVALID_VERSION,
          "The schema version is not supported");
        schemaVersionValid = false;
      }
      else {
        schemaVersionValid = true;
      }

      if (this.environment == null) {
        issues.error(
          Issue.Code.ENVIRONMENT_MISSING,
          "The file must contain an environment");
      }

      return NullaryOptional
        .ifTrue(schemaVersionValid && this.environment != null)
        .flatMap(() -> this.environment.toPolicy(issues, metadata));
    }
  }