in sources/src/main/java/com/google/solutions/jitaccess/web/rest/EnvironmentsResource.java [194:241]
public record EnvironmentInfo(
@NotNull Link self,
@Nullable Link policy,
@Nullable Link reconcile,
@NotNull String name,
@NotNull String displayName,
@NotNull String description,
@Nullable List<SystemsResource.SystemInfo> systems
) implements MediaInfo {
/**
* Create EnvironmentInfo with summary information only.
*/
static EnvironmentInfo createSummary(
@NotNull PolicyHeader policy
) {
return new EnvironmentInfo(
new Link("environments/%s", policy.name()),
null,
null,
policy.name(),
policy.name(),
policy.description(),
null);
}
/**
* Create EnvironmentInfo with full details.
*/
static EnvironmentInfo create(@NotNull EnvironmentContext environment) {
return new EnvironmentInfo(
new Link("environments/%s", environment.policy().name()),
environment.canExport()
? new Link("environments/%s/policy", environment.policy().name())
: null,
environment.canReconcile()
? new Link("environments/%s/compliance", environment.policy().name())
: null,
environment.policy().name(),
environment.policy().displayName(),
environment.policy().description(),
environment.systems()
.stream()
.sorted(Comparator.comparing(sys -> sys.policy().displayName()))
.map(sys -> SystemsResource.SystemInfo.createSummary(sys.policy()))
.toList());
}
}