This is an automated email from the ASF dual-hosted git repository.

yhu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/master by this push:
     new b42c992c7d4 [ErrorProne] Fix BadInstanceof and enable check (#37753)
b42c992c7d4 is described below

commit b42c992c7d463224f1accd94753872a8c955c871
Author: RadosÅ‚aw Stankiewicz <[email protected]>
AuthorDate: Thu Mar 5 14:28:44 2026 +0100

    [ErrorProne] Fix BadInstanceof and enable check (#37753)
---
 .../main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy    | 1 -
 .../flink/translation/functions/ImpulseSourceFunctionTest.java    | 3 +--
 .../beam/runners/flink/FlinkStreamingTranslationContext.java      | 2 +-
 .../beam/runners/flink/PipelineTranslationModeOptimizer.java      | 2 +-
 .../runners/flink/translation/utils/LookupPipelineVisitor.java    | 2 +-
 .../flink/translation/functions/ImpulseSourceFunctionTest.java    | 3 +--
 runners/jet/src/main/java/org/apache/beam/runners/jet/Utils.java  | 2 +-
 .../beam/runners/samza/translation/ParDoBoundMultiTranslator.java | 4 ++--
 .../runners/samza/translation/SplittableParDoTranslators.java     | 2 +-
 .../apache/beam/runners/spark/translation/EvaluationContext.java  | 2 +-
 .../apache/beam/runners/twister2/Twister2TranslationContext.java  | 2 +-
 .../apache/beam/sdk/util/construction/PTransformReplacements.java | 4 ++--
 .../org/apache/beam/sdk/util/construction/ParDoTranslation.java   | 2 +-
 .../org/apache/beam/sdk/expansion/service/TransformProvider.java  | 2 +-
 .../org/apache/beam/sdk/io/gcp/spanner/ReadSpannerSchemaTest.java | 4 ++--
 .../org/apache/beam/sdk/io/gcp/spanner/SpannerIOWriteTest.java    | 8 ++++----
 .../java/org/apache/beam/sdk/nexmark/queries/Query4Model.java     | 2 +-
 .../java/org/apache/beam/sdk/nexmark/queries/Query6Model.java     | 2 +-
 18 files changed, 23 insertions(+), 26 deletions(-)

diff --git 
a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy 
b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
index c8b174fc9de..06c29c781bc 100644
--- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
@@ -1535,7 +1535,6 @@ class BeamModulePlugin implements Plugin<Project> {
             "AutoValueImmutableFields",
             "AutoValueSubclassLeaked",
             "BadImport",
-            "BadInstanceof",
             "BigDecimalEquals",
             "ComparableType",
             "DoNotMockAutoValue",
diff --git 
a/runners/flink/2.0/src/test/java/org/apache/beam/runners/flink/translation/functions/ImpulseSourceFunctionTest.java
 
b/runners/flink/2.0/src/test/java/org/apache/beam/runners/flink/translation/functions/ImpulseSourceFunctionTest.java
index a425b8798aa..0e60951aa0a 100644
--- 
a/runners/flink/2.0/src/test/java/org/apache/beam/runners/flink/translation/functions/ImpulseSourceFunctionTest.java
+++ 
b/runners/flink/2.0/src/test/java/org/apache/beam/runners/flink/translation/functions/ImpulseSourceFunctionTest.java
@@ -201,8 +201,7 @@ public class ImpulseSourceFunctionTest {
 
     @Override
     public boolean matches(WindowedValue<byte[]> o) {
-      return o instanceof WindowedValue
-          && Arrays.equals((byte[]) ((WindowedValue) o).getValue(), new byte[] 
{});
+      return o != null && Arrays.equals(o.getValue(), new byte[] {});
     }
   }
 }
diff --git 
a/runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkStreamingTranslationContext.java
 
b/runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkStreamingTranslationContext.java
index 24c7b4336e2..3757de5c39a 100644
--- 
a/runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkStreamingTranslationContext.java
+++ 
b/runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkStreamingTranslationContext.java
@@ -123,7 +123,7 @@ class FlinkStreamingTranslationContext {
 
   public Map<TupleTag<?>, Coder<?>> getOutputCoders() {
     return currentTransform.getOutputs().entrySet().stream()
-        .filter(e -> e.getValue() instanceof PCollection)
+        .filter(e -> e.getValue() != null)
         .collect(Collectors.toMap(e -> e.getKey(), e -> ((PCollection) 
e.getValue()).getCoder()));
   }
 
diff --git 
a/runners/flink/src/main/java/org/apache/beam/runners/flink/PipelineTranslationModeOptimizer.java
 
b/runners/flink/src/main/java/org/apache/beam/runners/flink/PipelineTranslationModeOptimizer.java
index dc55b912882..b70d86201c4 100644
--- 
a/runners/flink/src/main/java/org/apache/beam/runners/flink/PipelineTranslationModeOptimizer.java
+++ 
b/runners/flink/src/main/java/org/apache/beam/runners/flink/PipelineTranslationModeOptimizer.java
@@ -74,7 +74,7 @@ class PipelineTranslationModeOptimizer extends 
FlinkPipelineTranslator {
 
   private boolean hasUnboundedOutput(AppliedPTransform<?, ?, ?> transform) {
     return transform.getOutputs().values().stream()
-        .filter(value -> value instanceof PCollection)
+        .filter(value -> value != null)
         .map(value -> (PCollection<?>) value)
         .anyMatch(collection -> collection.isBounded() == IsBounded.UNBOUNDED);
   }
diff --git 
a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/utils/LookupPipelineVisitor.java
 
b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/utils/LookupPipelineVisitor.java
index 23e36fb653f..eadf93cfaf9 100644
--- 
a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/utils/LookupPipelineVisitor.java
+++ 
b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/utils/LookupPipelineVisitor.java
@@ -92,7 +92,7 @@ public class LookupPipelineVisitor extends 
Pipeline.PipelineVisitor.Defaults {
   @SuppressWarnings("unchecked")
   public Map<TupleTag<?>, Coder<?>> getOutputCoders(PTransform<?, ?> 
transform) {
     return getOutputs(transform).entrySet().stream()
-        .filter(e -> e.getValue() instanceof PCollection)
+        .filter(e -> e.getValue() != null)
         .collect(Collectors.toMap(Map.Entry::getKey, e -> ((PCollection) 
e.getValue()).getCoder()));
   }
 }
diff --git 
a/runners/flink/src/test/java/org/apache/beam/runners/flink/translation/functions/ImpulseSourceFunctionTest.java
 
b/runners/flink/src/test/java/org/apache/beam/runners/flink/translation/functions/ImpulseSourceFunctionTest.java
index 554c4207b4a..1a6feeebb26 100644
--- 
a/runners/flink/src/test/java/org/apache/beam/runners/flink/translation/functions/ImpulseSourceFunctionTest.java
+++ 
b/runners/flink/src/test/java/org/apache/beam/runners/flink/translation/functions/ImpulseSourceFunctionTest.java
@@ -201,8 +201,7 @@ public class ImpulseSourceFunctionTest {
 
     @Override
     public boolean matches(WindowedValue<byte[]> o) {
-      return o instanceof WindowedValue
-          && Arrays.equals((byte[]) ((WindowedValue) o).getValue(), new byte[] 
{});
+      return o != null && Arrays.equals(o.getValue(), new byte[] {});
     }
   }
 }
diff --git a/runners/jet/src/main/java/org/apache/beam/runners/jet/Utils.java 
b/runners/jet/src/main/java/org/apache/beam/runners/jet/Utils.java
index 06e07d0c6cf..55b79d70e20 100644
--- a/runners/jet/src/main/java/org/apache/beam/runners/jet/Utils.java
+++ b/runners/jet/src/main/java/org/apache/beam/runners/jet/Utils.java
@@ -147,7 +147,7 @@ public class Utils {
   static Map<TupleTag<?>, Coder<?>> getOutputValueCoders(
       AppliedPTransform<?, ?, ?> appliedTransform) {
     return appliedTransform.getOutputs().entrySet().stream()
-        .filter(e -> e.getValue() instanceof PCollection)
+        .filter(e -> e.getValue() != null)
         .collect(Collectors.toMap(Map.Entry::getKey, e -> ((PCollection) 
e.getValue()).getCoder()));
   }
 
diff --git 
a/runners/samza/src/main/java/org/apache/beam/runners/samza/translation/ParDoBoundMultiTranslator.java
 
b/runners/samza/src/main/java/org/apache/beam/runners/samza/translation/ParDoBoundMultiTranslator.java
index 6b4d464b8e7..c5fdb125ad4 100644
--- 
a/runners/samza/src/main/java/org/apache/beam/runners/samza/translation/ParDoBoundMultiTranslator.java
+++ 
b/runners/samza/src/main/java/org/apache/beam/runners/samza/translation/ParDoBoundMultiTranslator.java
@@ -113,7 +113,7 @@ class ParDoBoundMultiTranslator<InT, OutT>
     final PCollection<? extends InT> input = ctx.getInput(transform);
     final Map<TupleTag<?>, Coder<?>> outputCoders =
         ctx.getCurrentTransform().getOutputs().entrySet().stream()
-            .filter(e -> e.getValue() instanceof PCollection)
+            .filter(e -> e.getValue() != null)
             .collect(
                 Collectors.toMap(e -> e.getKey(), e -> ((PCollection<?>) 
e.getValue()).getCoder()));
 
@@ -145,7 +145,7 @@ class ParDoBoundMultiTranslator<InT, OutT>
       final Map.Entry<TupleTag<?>, PCollection<?>> taggedOutput = 
outputs.get(index);
       tagToIndexMap.put(taggedOutput.getKey(), index);
 
-      if (!(taggedOutput.getValue() instanceof PCollection)) {
+      if (taggedOutput.getValue() == null) {
         throw new IllegalArgumentException(
             "Expected side output to be PCollection, but was: " + 
taggedOutput.getValue());
       }
diff --git 
a/runners/samza/src/main/java/org/apache/beam/runners/samza/translation/SplittableParDoTranslators.java
 
b/runners/samza/src/main/java/org/apache/beam/runners/samza/translation/SplittableParDoTranslators.java
index 215c7e1fbcb..2bd6674700c 100644
--- 
a/runners/samza/src/main/java/org/apache/beam/runners/samza/translation/SplittableParDoTranslators.java
+++ 
b/runners/samza/src/main/java/org/apache/beam/runners/samza/translation/SplittableParDoTranslators.java
@@ -78,7 +78,7 @@ public class SplittableParDoTranslators {
         final Map.Entry<TupleTag<?>, PCollection<?>> taggedOutput = 
outputs.get(index);
         tagToIndexMap.put(taggedOutput.getKey(), index);
 
-        if (!(taggedOutput.getValue() instanceof PCollection)) {
+        if (taggedOutput.getValue() == null) {
           throw new IllegalArgumentException(
               "Expected side output to be PCollection, but was: " + 
taggedOutput.getValue());
         }
diff --git 
a/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/EvaluationContext.java
 
b/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/EvaluationContext.java
index 8adc78af59e..fa3f2a5cccf 100644
--- 
a/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/EvaluationContext.java
+++ 
b/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/EvaluationContext.java
@@ -144,7 +144,7 @@ public class EvaluationContext {
 
   public Map<TupleTag<?>, Coder<?>> getOutputCoders() {
     return currentTransform.getOutputs().entrySet().stream()
-        .filter(e -> e.getValue() instanceof PCollection)
+        .filter(e -> e.getValue() != null)
         .collect(Collectors.toMap(Map.Entry::getKey, e -> ((PCollection) 
e.getValue()).getCoder()));
   }
 
diff --git 
a/runners/twister2/src/main/java/org/apache/beam/runners/twister2/Twister2TranslationContext.java
 
b/runners/twister2/src/main/java/org/apache/beam/runners/twister2/Twister2TranslationContext.java
index a194d86f746..76d7a867523 100644
--- 
a/runners/twister2/src/main/java/org/apache/beam/runners/twister2/Twister2TranslationContext.java
+++ 
b/runners/twister2/src/main/java/org/apache/beam/runners/twister2/Twister2TranslationContext.java
@@ -99,7 +99,7 @@ public abstract class Twister2TranslationContext {
 
   public Map<TupleTag<?>, Coder<?>> getOutputCoders() {
     return currentTransform.getOutputs().entrySet().stream()
-        .filter(e -> e.getValue() instanceof PCollection)
+        .filter(e -> e.getValue() != null)
         .collect(Collectors.toMap(Map.Entry::getKey, e -> ((PCollection) 
e.getValue()).getCoder()));
   }
 
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 90f6afdeff8..79a7a0b1214 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
@@ -52,9 +52,9 @@ public class PTransformReplacements {
             mainInput,
             input.getValue());
         checkArgument(
-            input.getValue() instanceof PCollection,
+            input.getValue() != null,
             "Unexpected input type %s",
-            input.getValue().getClass());
+            input.getValue() == null ? "null" : input.getValue().getClass());
         mainInput = (PCollection<T>) input.getValue();
       }
     }
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/ParDoTranslation.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/ParDoTranslation.java
index d3ff5d1cc71..e8788efb62e 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/ParDoTranslation.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/ParDoTranslation.java
@@ -487,7 +487,7 @@ public class ParDoTranslation {
 
   public static Map<TupleTag<?>, Coder<?>> 
getOutputCoders(AppliedPTransform<?, ?, ?> application) {
     return application.getOutputs().entrySet().stream()
-        .filter(e -> e.getValue() instanceof PCollection)
+        .filter(e -> e.getValue() != null)
         .collect(Collectors.toMap(e -> e.getKey(), e -> ((PCollection) 
e.getValue()).getCoder()));
   }
 
diff --git 
a/sdks/java/expansion-service/src/main/java/org/apache/beam/sdk/expansion/service/TransformProvider.java
 
b/sdks/java/expansion-service/src/main/java/org/apache/beam/sdk/expansion/service/TransformProvider.java
index 2a3f3290e30..55e159d57ca 100644
--- 
a/sdks/java/expansion-service/src/main/java/org/apache/beam/sdk/expansion/service/TransformProvider.java
+++ 
b/sdks/java/expansion-service/src/main/java/org/apache/beam/sdk/expansion/service/TransformProvider.java
@@ -101,7 +101,7 @@ public interface TransformProvider<InputT extends PInput, 
OutputT extends POutpu
         i++;
       }
       return indexToPCollection.build();
-    } else if (output instanceof POutput) {
+    } else if (output != null) {
       // This is needed to support custom output types.
       Map<TupleTag<?>, PValue> values = output.expand();
       Map<String, PCollection<?>> returnMap = new HashMap<>();
diff --git 
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/ReadSpannerSchemaTest.java
 
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/ReadSpannerSchemaTest.java
index ad0dbb659d0..300c657c7f4 100644
--- 
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/ReadSpannerSchemaTest.java
+++ 
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/ReadSpannerSchemaTest.java
@@ -93,7 +93,7 @@ public class ReadSpannerSchemaTest {
 
                   @Override
                   public boolean matches(Statement argument) {
-                    if (!(argument instanceof Statement)) {
+                    if (argument == null) {
                       return false;
                     }
                     Statement st = (Statement) argument;
@@ -115,7 +115,7 @@ public class ReadSpannerSchemaTest {
 
                   @Override
                   public boolean matches(Statement argument) {
-                    if (!(argument instanceof Statement)) {
+                    if (argument == null) {
                       return false;
                     }
                     Statement st = (Statement) argument;
diff --git 
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerIOWriteTest.java
 
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerIOWriteTest.java
index 10932162d30..602ac9ae4f1 100644
--- 
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerIOWriteTest.java
+++ 
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerIOWriteTest.java
@@ -213,7 +213,7 @@ public class SpannerIOWriteTest implements Serializable {
 
                   @Override
                   public boolean matches(Statement argument) {
-                    if (!(argument instanceof Statement)) {
+                    if (argument == null) {
                       return false;
                     }
                     Statement st = (Statement) argument;
@@ -236,7 +236,7 @@ public class SpannerIOWriteTest implements Serializable {
 
                   @Override
                   public boolean matches(Statement argument) {
-                    if (!(argument instanceof Statement)) {
+                    if (argument == null) {
                       return false;
                     }
                     Statement st = (Statement) argument;
@@ -259,7 +259,7 @@ public class SpannerIOWriteTest implements Serializable {
 
                   @Override
                   public boolean matches(Statement argument) {
-                    if (!(argument instanceof Statement)) {
+                    if (argument == null) {
                       return false;
                     }
                     Statement st = (Statement) argument;
@@ -1657,7 +1657,7 @@ public class SpannerIOWriteTest implements Serializable {
 
           @Override
           public boolean matches(Iterable<Mutation> argument) {
-            if (!(argument instanceof Iterable)) {
+            if (argument == null) {
               return false;
             }
             ImmutableSet<Mutation> actual = ImmutableSet.copyOf((Iterable) 
argument);
diff --git 
a/sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/Query4Model.java
 
b/sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/Query4Model.java
index 89436293428..8fc7912d442 100644
--- 
a/sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/Query4Model.java
+++ 
b/sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/Query4Model.java
@@ -167,7 +167,7 @@ public class Query4Model extends 
NexmarkQueryModel<CategoryPrice> implements Ser
     // Find the last (in processing time) reported average price for each 
category.
     Map<Long, TimestampedValue<CategoryPrice>> finalAverages = new TreeMap<>();
     for (TimestampedValue<CategoryPrice> obj : results) {
-      Assert.assertTrue("have CategoryPrice", obj.getValue() instanceof 
CategoryPrice);
+      Assert.assertTrue("have CategoryPrice", obj.getValue() != null);
       CategoryPrice categoryPrice = (CategoryPrice) obj.getValue();
       if (categoryPrice.isLast) {
         finalAverages.put(
diff --git 
a/sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/Query6Model.java
 
b/sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/Query6Model.java
index a3fff668aa7..9d8649bcde6 100644
--- 
a/sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/Query6Model.java
+++ 
b/sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/Query6Model.java
@@ -123,7 +123,7 @@ public class Query6Model extends 
NexmarkQueryModel<SellerPrice> implements Seria
     // Find the last (in processing time) reported average price for each 
seller.
     Map<Long, TimestampedValue<SellerPrice>> finalAverages = new TreeMap<>();
     for (TimestampedValue<SellerPrice> obj : results) {
-      Assert.assertTrue("have SellerPrice", obj.getValue() instanceof 
SellerPrice);
+      Assert.assertTrue("have SellerPrice", obj.getValue() != null);
       SellerPrice sellerPrice = (SellerPrice) obj.getValue();
       finalAverages.put(sellerPrice.seller, TimestampedValue.of(sellerPrice, 
obj.getTimestamp()));
     }

Reply via email to