From 7bdd39ab9a64b812ff3bf8834eb4c3e392717322 Mon Sep 17 00:00:00 2001 From: Dai Ha Date: Sat, 15 Aug 2026 04:54:09 +0200 Subject: [PATCH] CB-566 follow-up: say why the five-arg Fleet constructor is kept MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewing the merge I read the five-arg constructor as dead code and removed it. That was wrong: the tests call it as BridgedConfig.Fleet, which my grep for 'new Fleet(' did not match, and the build failed on eight call sites. It is restored with a javadoc that says why keeping it is safe here even though an overload that drops a new field is normally the shape to avoid — nothing reads a charter through a constructor, and Jackson binds the canonical one, so it cannot swallow an operator's YAML. Also drop a redundant java.util.Arrays qualifier (the class is already imported) and rewrap a javadoc line the change had left over-long. --- .../java/dev/ltms/bridged/config/BridgedConfig.java | 12 ++++++++++-- .../main/java/dev/ltms/bridged/config/ConfigRef.java | 6 +++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/bridged/src/main/java/dev/ltms/bridged/config/BridgedConfig.java b/bridged/src/main/java/dev/ltms/bridged/config/BridgedConfig.java index d6dfb82..a8f7086 100644 --- a/bridged/src/main/java/dev/ltms/bridged/config/BridgedConfig.java +++ b/bridged/src/main/java/dev/ltms/bridged/config/BridgedConfig.java @@ -562,7 +562,15 @@ public record BridgedConfig( tabLabel = (tabLabel == null || tabLabel.isBlank()) ? DEFAULT_TAB_LABEL : tabLabel; } - /** Convenience constructor for code that does not configure launch charters. */ + /** + * A fleet with no configured launch charters — the shape every deployment had before + * CB-566, and what most tests want. + * + *

Kept deliberately, even though an overload that drops a new field is normally the + * shape to avoid. It is safe here because nothing reads a charter through a + * constructor: the launcher reads {@code fleet.charters()} from the live config. Jackson + * binds the canonical constructor, so this one cannot swallow an operator's YAML. + */ public Fleet(Map leaders, Map architects, Map developers, Map reviewers, String tabLabel) { this(leaders, architects, developers, reviewers, null, tabLabel); @@ -1217,7 +1225,7 @@ public record BridgedConfig( if (fleet == null || fleet.charters().isEmpty()) { return; } - List valid = java.util.Arrays.stream(MemberRole.values()) + List valid = Arrays.stream(MemberRole.values()) .map(MemberRole::wireName) .toList(); List bad = new ArrayList<>(); diff --git a/bridged/src/main/java/dev/ltms/bridged/config/ConfigRef.java b/bridged/src/main/java/dev/ltms/bridged/config/ConfigRef.java index ccce915..6393994 100644 --- a/bridged/src/main/java/dev/ltms/bridged/config/ConfigRef.java +++ b/bridged/src/main/java/dev/ltms/bridged/config/ConfigRef.java @@ -28,9 +28,9 @@ import java.util.function.Supplier; *