package p.packer.dtos; import p.packer.messages.assets.OutputCodecCatalog; import java.nio.file.Path; import java.util.List; import java.util.Map; import java.util.Objects; public record PackerAssetDetailsDTO( PackerAssetSummaryDTO summary, String outputFormat, OutputCodecCatalog outputCodec, List availableOutputCodecs, Map> codecConfigurationFieldsByCodec, Map> inputsByRole, List diagnostics) { public PackerAssetDetailsDTO { Objects.requireNonNull(summary, "summary"); outputFormat = Objects.requireNonNullElse(outputFormat, "unknown").trim(); outputCodec = Objects.requireNonNullElse(outputCodec, OutputCodecCatalog.UNKNOWN); availableOutputCodecs = List.copyOf(Objects.requireNonNull(availableOutputCodecs, "availableOutputCodecs")); codecConfigurationFieldsByCodec = Map.copyOf(Objects.requireNonNull(codecConfigurationFieldsByCodec, "codecConfigurationFieldsByCodec")); inputsByRole = Map.copyOf(Objects.requireNonNull(inputsByRole, "inputsByRole")); diagnostics = List.copyOf(Objects.requireNonNull(diagnostics, "diagnostics")); } }