in sources/src/main/java/com/google/solutions/jitaccess/web/rest/SystemsResource.java [88:132]
public record SystemInfo(
@NotNull Link self,
@NotNull String name,
@NotNull String displayName,
@NotNull String description,
@Nullable EnvironmentsResource.EnvironmentInfo environment,
@Nullable List<GroupsResource.GroupInfo> groups
) implements MediaInfo {
/**
* Create SystemInfo with summary information only.
*/
static SystemInfo createSummary(
@NotNull SystemPolicy policy
) {
return new SystemInfo(
new Link("environments/%s/systems/%s", policy.environment().name(), policy.name()),
policy.name(),
policy.displayName(),
policy.description(),
null,
null);
}
/**
* Create SystemInfo with full details.
*/
static SystemInfo create(@NotNull SystemContext system) {
var policy = system.policy();
return new SystemInfo(
new Link("environments/%s/systems/%s", policy.environment().name(), policy.name()),
policy.name(),
policy.displayName(),
policy.description(),
EnvironmentsResource.EnvironmentInfo.createSummary(policy.environment()),
system.groups()
.stream()
.sorted(Comparator.comparing(grp -> grp.policy().displayName()))
.map(grp -> GroupsResource.GroupInfo.create(
grp,
GroupsResource.JoinInfo.forJoinAnalysis(grp)))
.toList());
}
}