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));
}
}