From 78acd974553386dec8e12525045107adc376ec7e Mon Sep 17 00:00:00 2001 From: Sokwhan Huh Date: Fri, 1 Aug 2025 13:33:15 -0700 Subject: [PATCH] Fix CelContainer's toBuilder to properly copy aliases over PiperOrigin-RevId: 789877509 --- common/src/main/java/dev/cel/common/CelContainer.java | 8 +++++++- .../test/java/dev/cel/common/CelContainerTest.java | 11 +++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/dev/cel/common/CelContainer.java b/common/src/main/java/dev/cel/common/CelContainer.java index ee33c1da0..6d9fcd612 100644 --- a/common/src/main/java/dev/cel/common/CelContainer.java +++ b/common/src/main/java/dev/cel/common/CelContainer.java @@ -252,7 +252,13 @@ public ImmutableSet resolveCandidateNames(String typeName) { return candidates.add(typeName).build(); } - public abstract Builder toBuilder(); + abstract Builder autoToBuilder(); + + public Builder toBuilder() { + Builder builder = autoToBuilder(); + builder.aliases.putAll(aliases()); + return builder; + } public static Builder newBuilder() { return new AutoValue_CelContainer.Builder().setName(""); diff --git a/common/src/test/java/dev/cel/common/CelContainerTest.java b/common/src/test/java/dev/cel/common/CelContainerTest.java index ab1b322b9..f116039c8 100644 --- a/common/src/test/java/dev/cel/common/CelContainerTest.java +++ b/common/src/test/java/dev/cel/common/CelContainerTest.java @@ -198,4 +198,15 @@ public void containerBuilder_addAbbreviationsCollidesWithContainer_throws() { "abbreviation collides with container name: name=my.alias.a, abbreviation=a," + " container=a.b.c.M.N"); } + + @Test + public void container_toBuilderRoundTrip_retainsExistingProperties() { + CelContainer container = + CelContainer.newBuilder().setName("hello").addAlias("foo", "x.y").build(); + + container = container.toBuilder().addAlias("bar", "a.b").build(); + + assertThat(container.name()).isEqualTo("hello"); + assertThat(container.aliases()).containsExactly("foo", "x.y", "bar", "a.b").inOrder(); + } }