public record EnvironmentInfo()

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