Review generated archive request key

from Records
Java 25 LTS advanced 6 min 5 issues to find

Review this generated archive-request key before it reaches production.

Model an archive request as a stable value key, normalize IDs once, reject nulls, compare signature bytes by content, avoid leaking tokens, and index many large requests efficiently.

Java
import java.util.*;
public class GeneratedArchive {
    record ArchiveRequest(String id, String accessToken,
            List<String> paths, byte[] signature) {
        ArchiveRequest {
            if (id.isBlank()) throw new IllegalArgumentException("blank id");
            paths = new ArrayList<>(paths);
        }
        @Override public String id() {
            return id.toUpperCase(Locale.ROOT);
        }
    }

    static Map<ArchiveRequest, String> index(List<ArchiveRequest> requests) {
        var index = new LinkedHashMap<ArchiveRequest, String>();
        for (var request : requests) {
            index.put(request, request.id());
        }
        return index;
    }
}

generated code is illustrative, not from any one model

Open in playground
Report an error