From b4dc40f9c876183f2496d48175e6132926d2e83a Mon Sep 17 00:00:00 2001 From: nitinware Date: Mon, 7 Sep 2026 11:04:23 -0500 Subject: [PATCH] Remove nullness suppression in PTransformReplacements Drop the class-level @SuppressWarnings({"nullness", "keyfor"}) on PTransformReplacements. The `mainInput` local is now correctly typed @Nullable, and the two return sites use Preconditions.checkArgumentNotNull (which has @EnsuresNonNull) so the Checker Framework accepts the returned value as non-null. The "keyfor" suppression was unused. Progress on #20507. --- .../util/construction/PTransformReplacements.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/PTransformReplacements.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/PTransformReplacements.java index 79a7a0b12149..8627acd98b94 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/PTransformReplacements.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/PTransformReplacements.java @@ -23,12 +23,13 @@ import java.util.Set; import org.apache.beam.sdk.runners.AppliedPTransform; import org.apache.beam.sdk.transforms.PTransform; +import org.apache.beam.sdk.util.Preconditions; import org.apache.beam.sdk.values.PCollection; import org.apache.beam.sdk.values.TupleTag; import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables; +import org.checkerframework.checker.nullness.qual.Nullable; /** Utilty class for PTransform replacements. */ -@SuppressWarnings({"nullness", "keyfor"}) // TODO(https://github.com/apache/beam/issues/20497) public class PTransformReplacements { /** * Gets the singleton input of an {@link AppliedPTransform}, ignoring any additional inputs @@ -42,7 +43,7 @@ public static PCollection getSingletonMainInput( private static PCollection getSingletonMainInput( Map, PCollection> inputs, Set> ignoredTags) { - PCollection mainInput = null; + @Nullable PCollection mainInput = null; for (Map.Entry, PCollection> input : inputs.entrySet()) { if (!ignoredTags.contains(input.getKey())) { checkArgument( @@ -58,16 +59,17 @@ private static PCollection getSingletonMainInput( mainInput = (PCollection) input.getValue(); } } - checkArgument( - mainInput != null, + return Preconditions.checkArgumentNotNull( + mainInput, "No main input found in inputs: Inputs %s, Side Input tags %s", inputs, ignoredTags); - return mainInput; } public static PCollection getSingletonMainOutput( AppliedPTransform, ? extends PTransform>> transform) { - return (PCollection) Iterables.getOnlyElement(transform.getOutputs().values()); + return (PCollection) + Preconditions.checkArgumentNotNull( + Iterables.getOnlyElement(transform.getOutputs().values())); } }