You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by da...@apache.org on 2026/04/17 13:38:33 UTC
(beam) branch master updated: [ErrorProne] Enable UndefinedEquals check (#38197)
This is an automated email from the ASF dual-hosted git repository.
damccorm 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 621354f992b [ErrorProne] Enable UndefinedEquals check (#38197)
621354f992b is described below
commit 621354f992be52eef68b5ce368a851f0f7511537
Author: Radosław Stankiewicz <ra...@google.com>
AuthorDate: Fri Apr 17 15:38:25 2026 +0200
[ErrorProne] Enable UndefinedEquals check (#38197)
* Enable UndefinedEquals check
* Suppress UndefinedEquals warning in WindowedValues.java
---
.../org/apache/beam/gradle/BeamModulePlugin.groovy | 1 -
.../core/InMemoryMultimapSideInputViewTest.java | 13 +++++-----
.../beam/runners/direct/WatermarkManager.java | 5 +++-
.../beam/runners/direct/DirectRegistrarTest.java | 4 +--
.../dataflow/DataflowPipelineRegistrarTest.java | 4 +--
.../runners/dataflow/worker/ShuffleSinkTest.java | 3 ++-
.../worker/StreamingDataflowWorkerTest.java | 4 +--
.../worker/UngroupedShuffleReaderTest.java | 2 +-
.../windmill/state/WindmillStateInternalsTest.java | 5 +++-
.../artifact/ArtifactStagingServiceTest.java | 3 +--
.../beam/runners/prism/PrismRegistrarTest.java | 4 +--
.../runtime/SamzaTimerInternalsFactoryTest.java | 5 ++--
.../beam/runners/samza/util/FutureUtilsTest.java | 9 +++++--
...parkStructuredStreamingRunnerRegistrarTest.java | 6 +++--
.../runners/spark/SparkRunnerRegistrarTest.java | 4 +--
.../ValueAndCoderLazySerializableTest.java | 9 +++++--
.../org/apache/beam/sdk/testing/StaticWindows.java | 3 +--
.../apache/beam/sdk/util/construction/Timer.java | 3 ++-
.../apache/beam/sdk/values/PCollectionViews.java | 1 +
.../org/apache/beam/sdk/values/WindowedValues.java | 4 ++-
.../beam/sdk/coders/SerializableCoderTest.java | 3 ++-
.../beam/sdk/schemas/JavaBeanSchemaTest.java | 14 +++++-----
.../beam/sdk/schemas/JavaFieldSchemaTest.java | 14 +++++-----
.../beam/sdk/schemas/utils/TestJavaBeans.java | 5 ++--
.../apache/beam/sdk/schemas/utils/TestPOJOs.java | 11 ++++++--
.../sdk/transforms/display/DisplayDataTest.java | 3 ++-
.../beam/sdk/util/construction/TimerTest.java | 5 ++--
.../java/org/apache/beam/sdk/values/RowTest.java | 30 +++++++++++-----------
.../sorter/BufferedExternalSorterTest.java | 4 +--
.../beam/fn/harness/PrecombineGroupingTable.java | 4 ++-
.../beam/fn/harness/WindowMergingFnRunnerTest.java | 8 ++++--
.../state/LazyCachingIteratorToIterableTest.java | 10 +++++---
.../io/fileschematransform/XmlRowValueTest.java | 14 +++++-----
.../sdk/io/iceberg/RecordWriterManagerTest.java | 2 +-
.../beam/sdk/io/jdbc/JdbcSchemaIOProviderTest.java | 3 ++-
.../org/apache/beam/sdk/io/jdbc/JdbcUtilTest.java | 7 ++---
.../beam/sdk/io/rabbitmq/RabbitMqMessage.java | 4 ++-
.../sdk/io/solace/read/SolaceCheckpointMark.java | 6 ++++-
38 files changed, 144 insertions(+), 95 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 aed7418b5ff..9eae256120f 100644
--- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
@@ -1546,7 +1546,6 @@ class BeamModulePlugin implements Plugin<Project> {
"PreferJavaTimeOverload",
"NonCanonicalType",
"Slf4jSignOnlyFormat",
- "UndefinedEquals",
"UnescapedEntity",
"UnrecognisedJavadocTag",
// errorprone 3.2.0+ checks
diff --git a/runners/core-java/src/test/java/org/apache/beam/runners/core/InMemoryMultimapSideInputViewTest.java b/runners/core-java/src/test/java/org/apache/beam/runners/core/InMemoryMultimapSideInputViewTest.java
index 869febf5601..72e497855e6 100644
--- a/runners/core-java/src/test/java/org/apache/beam/runners/core/InMemoryMultimapSideInputViewTest.java
+++ b/runners/core-java/src/test/java/org/apache/beam/runners/core/InMemoryMultimapSideInputViewTest.java
@@ -27,6 +27,7 @@ import org.apache.beam.sdk.coders.StringUtf8Coder;
import org.apache.beam.sdk.transforms.Materializations.MultimapView;
import org.apache.beam.sdk.values.KV;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.ImmutableList;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Lists;
import org.hamcrest.Description;
import org.hamcrest.Matchers;
import org.hamcrest.TypeSafeMatcher;
@@ -43,9 +44,9 @@ public class InMemoryMultimapSideInputViewTest {
InMemoryMultimapSideInputView.fromIterable(
ByteArrayCoder.of(),
ImmutableList.of(KV.of(new byte[] {0x00}, 0), KV.of(new byte[] {0x01}, 1)));
- assertEquals(view.get(new byte[] {0x00}), ImmutableList.of(0));
- assertEquals(view.get(new byte[] {0x01}), ImmutableList.of(1));
- assertEquals(view.get(new byte[] {0x02}), ImmutableList.of());
+ assertEquals(Lists.newArrayList(view.get(new byte[] {0x00})), ImmutableList.of(0));
+ assertEquals(Lists.newArrayList(view.get(new byte[] {0x01})), ImmutableList.of(1));
+ assertEquals(Lists.newArrayList(view.get(new byte[] {0x02})), ImmutableList.of());
assertThat(
view.get(),
Matchers.containsInAnyOrder(
@@ -77,9 +78,9 @@ public class InMemoryMultimapSideInputViewTest {
InMemoryMultimapSideInputView.fromIterable(
StringUtf8Coder.of(),
ImmutableList.of(KV.of("A", "a1"), KV.of("A", "a2"), KV.of("B", "b1")));
- assertEquals(view.get("A"), ImmutableList.of("a1", "a2"));
- assertEquals(view.get("B"), ImmutableList.of("b1"));
- assertEquals(view.get("C"), ImmutableList.of());
+ assertEquals(Lists.newArrayList(view.get("A")), ImmutableList.of("a1", "a2"));
+ assertEquals(Lists.newArrayList(view.get("B")), ImmutableList.of("b1"));
+ assertEquals(Lists.newArrayList(view.get("C")), ImmutableList.of());
assertThat(view.get(), containsInAnyOrder("A", "B"));
}
}
diff --git a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/WatermarkManager.java b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/WatermarkManager.java
index e2db5550ff4..0163b46a4d2 100644
--- a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/WatermarkManager.java
+++ b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/WatermarkManager.java
@@ -1699,7 +1699,10 @@ class WatermarkManager<ExecutableT, CollectionT> {
}
TimerUpdate that = (TimerUpdate) other;
return Objects.equals(this.key, that.key)
- && Objects.equals(this.completedTimers, that.completedTimers)
+ && (this.completedTimers == that.completedTimers
+ || (this.completedTimers != null
+ && that.completedTimers != null
+ && Iterables.elementsEqual(this.completedTimers, that.completedTimers)))
&& Objects.equals(this.setTimers, that.setTimers)
&& Objects.equals(this.deletedTimers, that.deletedTimers);
}
diff --git a/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRegistrarTest.java b/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRegistrarTest.java
index 86384c7fe08..90895ffa596 100644
--- a/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRegistrarTest.java
+++ b/runners/direct-java/src/test/java/org/apache/beam/runners/direct/DirectRegistrarTest.java
@@ -38,14 +38,14 @@ public class DirectRegistrarTest {
public void testCorrectOptionsAreReturned() {
assertEquals(
ImmutableList.of(DirectOptions.class, DirectTestOptions.class),
- new Options().getPipelineOptions());
+ Lists.newArrayList(new Options().getPipelineOptions()));
}
@Test
public void testCorrectRunnersAreReturned() {
assertEquals(
ImmutableList.of(org.apache.beam.runners.direct.DirectRunner.class),
- new Runner().getPipelineRunners());
+ Lists.newArrayList(new Runner().getPipelineRunners()));
}
@Test
diff --git a/runners/google-cloud-dataflow-java/src/test/java/org/apache/beam/runners/dataflow/DataflowPipelineRegistrarTest.java b/runners/google-cloud-dataflow-java/src/test/java/org/apache/beam/runners/dataflow/DataflowPipelineRegistrarTest.java
index c91ad665cd0..44daca79297 100644
--- a/runners/google-cloud-dataflow-java/src/test/java/org/apache/beam/runners/dataflow/DataflowPipelineRegistrarTest.java
+++ b/runners/google-cloud-dataflow-java/src/test/java/org/apache/beam/runners/dataflow/DataflowPipelineRegistrarTest.java
@@ -37,14 +37,14 @@ public class DataflowPipelineRegistrarTest {
public void testCorrectOptionsAreReturned() {
assertEquals(
ImmutableList.of(DataflowPipelineOptions.class),
- new DataflowPipelineRegistrar.Options().getPipelineOptions());
+ Lists.newArrayList(new DataflowPipelineRegistrar.Options().getPipelineOptions()));
}
@Test
public void testCorrectRunnersAreReturned() {
assertEquals(
ImmutableList.of(DataflowRunner.class, TestDataflowRunner.class),
- new DataflowPipelineRegistrar.Runner().getPipelineRunners());
+ Lists.newArrayList(new DataflowPipelineRegistrar.Runner().getPipelineRunners()));
}
@Test
diff --git a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/ShuffleSinkTest.java b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/ShuffleSinkTest.java
index 025eb7c2fbb..661ff878143 100644
--- a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/ShuffleSinkTest.java
+++ b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/ShuffleSinkTest.java
@@ -117,7 +117,8 @@ public class ShuffleSinkTest {
ByteString valueBytes = record.getValue();
WindowedValue<Integer> value =
CoderUtils.decodeFromByteString(windowedValueCoder, valueBytes);
- Assert.assertEquals(Lists.newArrayList(GlobalWindow.INSTANCE), value.getWindows());
+ Assert.assertEquals(
+ Lists.newArrayList(GlobalWindow.INSTANCE), Lists.newArrayList(value.getWindows()));
actual.add(value.getValue());
}
diff --git a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/StreamingDataflowWorkerTest.java b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/StreamingDataflowWorkerTest.java
index 5b63e408d79..3a25a671ca9 100644
--- a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/StreamingDataflowWorkerTest.java
+++ b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/StreamingDataflowWorkerTest.java
@@ -1940,7 +1940,7 @@ public class StreamingDataflowWorkerTest {
PaneInfo.createPane(true, true, Timing.ON_TIME), PaneInfoCoder.INSTANCE.decode(inStream));
assertEquals(
Collections.singletonList(WINDOW_AT_ZERO),
- DEFAULT_WINDOW_COLLECTION_CODER.decode(inStream, Coder.Context.OUTER));
+ Lists.newArrayList(DEFAULT_WINDOW_COLLECTION_CODER.decode(inStream, Coder.Context.OUTER)));
// Data was deleted
assertThat(
@@ -2230,7 +2230,7 @@ public class StreamingDataflowWorkerTest {
PaneInfo.createPane(true, true, Timing.ON_TIME), PaneInfoCoder.INSTANCE.decode(inStream));
assertEquals(
Collections.singletonList(WINDOW_AT_ZERO),
- DEFAULT_WINDOW_COLLECTION_CODER.decode(inStream, Coder.Context.OUTER));
+ Lists.newArrayList(DEFAULT_WINDOW_COLLECTION_CODER.decode(inStream, Coder.Context.OUTER)));
// Data was deleted
assertThat(
diff --git a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/UngroupedShuffleReaderTest.java b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/UngroupedShuffleReaderTest.java
index 5e8fe648e7d..492fe110503 100644
--- a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/UngroupedShuffleReaderTest.java
+++ b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/UngroupedShuffleReaderTest.java
@@ -106,7 +106,7 @@ public class UngroupedShuffleReaderTest {
for (boolean more = iter.start(); more; more = iter.advance()) {
WindowedValue<Integer> elem = iter.getCurrent();
Assert.assertEquals(timestamp, elem.getTimestamp());
- Assert.assertEquals(Lists.newArrayList(window), elem.getWindows());
+ Assert.assertEquals(Lists.newArrayList(window), Lists.newArrayList(elem.getWindows()));
actual.add(elem.getValue());
}
Assert.assertFalse(iter.advance());
diff --git a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/windmill/state/WindmillStateInternalsTest.java b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/windmill/state/WindmillStateInternalsTest.java
index 7a06d3a2949..de036214b95 100644
--- a/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/windmill/state/WindmillStateInternalsTest.java
+++ b/runners/google-cloud-dataflow-java/worker/src/test/java/org/apache/beam/runners/dataflow/worker/windmill/state/WindmillStateInternalsTest.java
@@ -3540,7 +3540,10 @@ public class WindmillStateInternalsTest {
MultimapEntryUpdate that = (MultimapEntryUpdate) o;
return deleteAll == that.deleteAll
&& Objects.equals(key, that.key)
- && Objects.equals(values, that.values);
+ && (values == that.values
+ || (values != null
+ && that.values != null
+ && Iterables.elementsEqual(values, that.values)));
}
@Override
diff --git a/runners/java-fn-execution/src/test/java/org/apache/beam/runners/fnexecution/artifact/ArtifactStagingServiceTest.java b/runners/java-fn-execution/src/test/java/org/apache/beam/runners/fnexecution/artifact/ArtifactStagingServiceTest.java
index bd75b9c24db..5610e4f5bb5 100644
--- a/runners/java-fn-execution/src/test/java/org/apache/beam/runners/fnexecution/artifact/ArtifactStagingServiceTest.java
+++ b/runners/java-fn-execution/src/test/java/org/apache/beam/runners/fnexecution/artifact/ArtifactStagingServiceTest.java
@@ -20,7 +20,6 @@ package org.apache.beam.runners.fnexecution.artifact;
import static org.junit.Assert.assertEquals;
import java.nio.file.Path;
-import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -168,7 +167,7 @@ public class ArtifactStagingServiceTest {
}
private void checkArtifacts(
- Collection<String> expectedContents, List<RunnerApi.ArtifactInformation> staged) {
+ List<String> expectedContents, List<RunnerApi.ArtifactInformation> staged) {
assertEquals(
expectedContents, Lists.transform(staged, RunnerApi.ArtifactInformation::getRoleUrn));
assertEquals(expectedContents, Lists.transform(staged, this::getArtifact));
diff --git a/runners/prism/java/src/test/java/org/apache/beam/runners/prism/PrismRegistrarTest.java b/runners/prism/java/src/test/java/org/apache/beam/runners/prism/PrismRegistrarTest.java
index 4ed69b14edf..f9af9c07e0b 100644
--- a/runners/prism/java/src/test/java/org/apache/beam/runners/prism/PrismRegistrarTest.java
+++ b/runners/prism/java/src/test/java/org/apache/beam/runners/prism/PrismRegistrarTest.java
@@ -38,14 +38,14 @@ public class PrismRegistrarTest {
public void testCorrectOptionsAreReturned() {
assertEquals(
ImmutableList.of(PrismPipelineOptions.class, TestPrismPipelineOptions.class),
- new Options().getPipelineOptions());
+ Lists.newArrayList(new Options().getPipelineOptions()));
}
@Test
public void testCorrectRunnersAreReturned() {
assertEquals(
ImmutableList.of(PrismRunner.class, TestPrismRunner.class),
- new Runner().getPipelineRunners());
+ Lists.newArrayList(new Runner().getPipelineRunners()));
}
@Test
diff --git a/runners/samza/src/test/java/org/apache/beam/runners/samza/runtime/SamzaTimerInternalsFactoryTest.java b/runners/samza/src/test/java/org/apache/beam/runners/samza/runtime/SamzaTimerInternalsFactoryTest.java
index c7998a281f7..ecedd7ae79f 100644
--- a/runners/samza/src/test/java/org/apache/beam/runners/samza/runtime/SamzaTimerInternalsFactoryTest.java
+++ b/runners/samza/src/test/java/org/apache/beam/runners/samza/runtime/SamzaTimerInternalsFactoryTest.java
@@ -249,7 +249,8 @@ public class SamzaTimerInternalsFactoryTest {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
StringUtf8Coder.of().encode(key, baos);
byte[] keyBytes = baos.toByteArray();
- assertEquals(readyTimers, Arrays.asList(new KeyedTimerData<>(keyBytes, key, timer2)));
+ assertEquals(
+ new ArrayList<>(readyTimers), Arrays.asList(new KeyedTimerData<>(keyBytes, key, timer2)));
store.close();
}
@@ -301,7 +302,7 @@ public class SamzaTimerInternalsFactoryTest {
StringUtf8Coder.of().encode(key, baos);
byte[] keyBytes = baos.toByteArray();
assertEquals(
- readyTimers,
+ new ArrayList<>(readyTimers),
Arrays.asList(
new KeyedTimerData<>(keyBytes, key, timer1),
new KeyedTimerData<>(keyBytes, key, timer2)));
diff --git a/runners/samza/src/test/java/org/apache/beam/runners/samza/util/FutureUtilsTest.java b/runners/samza/src/test/java/org/apache/beam/runners/samza/util/FutureUtilsTest.java
index 2adc9f9e65e..c261fc623af 100644
--- a/runners/samza/src/test/java/org/apache/beam/runners/samza/util/FutureUtilsTest.java
+++ b/runners/samza/src/test/java/org/apache/beam/runners/samza/util/FutureUtilsTest.java
@@ -23,6 +23,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.CountDownLatch;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.ImmutableList;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Lists;
import org.junit.Assert;
import org.junit.Test;
@@ -42,7 +43,9 @@ public final class FutureUtilsTest {
resultFuture.thenAccept(
actualResults -> {
Assert.assertEquals(
- "Expected flattened results to contain {hello, world}", RESULTS, actualResults);
+ "Expected flattened results to contain {hello, world}",
+ RESULTS,
+ Lists.newArrayList(actualResults));
});
validationFuture.toCompletableFuture().join();
@@ -93,7 +96,9 @@ public final class FutureUtilsTest {
resultFuture.thenAccept(
actualResults -> {
Assert.assertEquals(
- "Expected flattened results to contain {hello, world}", RESULTS, actualResults);
+ "Expected flattened results to contain {hello, world}",
+ RESULTS,
+ Lists.newArrayList(actualResults));
});
validationFuture.toCompletableFuture().join();
diff --git a/runners/spark/3/src/test/java/org/apache/beam/runners/spark/structuredstreaming/SparkStructuredStreamingRunnerRegistrarTest.java b/runners/spark/3/src/test/java/org/apache/beam/runners/spark/structuredstreaming/SparkStructuredStreamingRunnerRegistrarTest.java
index bc7b561eea2..23a5427fc43 100644
--- a/runners/spark/3/src/test/java/org/apache/beam/runners/spark/structuredstreaming/SparkStructuredStreamingRunnerRegistrarTest.java
+++ b/runners/spark/3/src/test/java/org/apache/beam/runners/spark/structuredstreaming/SparkStructuredStreamingRunnerRegistrarTest.java
@@ -36,14 +36,16 @@ public class SparkStructuredStreamingRunnerRegistrarTest {
public void testOptions() {
assertEquals(
ImmutableList.of(SparkStructuredStreamingPipelineOptions.class),
- new SparkStructuredStreamingRunnerRegistrar.Options().getPipelineOptions());
+ Lists.newArrayList(
+ new SparkStructuredStreamingRunnerRegistrar.Options().getPipelineOptions()));
}
@Test
public void testRunners() {
assertEquals(
ImmutableList.of(SparkStructuredStreamingRunner.class),
- new SparkStructuredStreamingRunnerRegistrar.Runner().getPipelineRunners());
+ Lists.newArrayList(
+ new SparkStructuredStreamingRunnerRegistrar.Runner().getPipelineRunners()));
}
@Test
diff --git a/runners/spark/src/test/java/org/apache/beam/runners/spark/SparkRunnerRegistrarTest.java b/runners/spark/src/test/java/org/apache/beam/runners/spark/SparkRunnerRegistrarTest.java
index c0b62be045f..fb6df4e1b12 100644
--- a/runners/spark/src/test/java/org/apache/beam/runners/spark/SparkRunnerRegistrarTest.java
+++ b/runners/spark/src/test/java/org/apache/beam/runners/spark/SparkRunnerRegistrarTest.java
@@ -36,14 +36,14 @@ public class SparkRunnerRegistrarTest {
public void testOptions() {
assertEquals(
ImmutableList.of(SparkPipelineOptions.class, SparkPortableStreamingPipelineOptions.class),
- new SparkRunnerRegistrar.Options().getPipelineOptions());
+ Lists.newArrayList(new SparkRunnerRegistrar.Options().getPipelineOptions()));
}
@Test
public void testRunners() {
assertEquals(
ImmutableList.of(SparkRunner.class, TestSparkRunner.class),
- new SparkRunnerRegistrar.Runner().getPipelineRunners());
+ Lists.newArrayList(new SparkRunnerRegistrar.Runner().getPipelineRunners()));
}
@Test
diff --git a/runners/spark/src/test/java/org/apache/beam/runners/spark/translation/ValueAndCoderLazySerializableTest.java b/runners/spark/src/test/java/org/apache/beam/runners/spark/translation/ValueAndCoderLazySerializableTest.java
index 0f2ef2ce5f4..8588a780357 100644
--- a/runners/spark/src/test/java/org/apache/beam/runners/spark/translation/ValueAndCoderLazySerializableTest.java
+++ b/runners/spark/src/test/java/org/apache/beam/runners/spark/translation/ValueAndCoderLazySerializableTest.java
@@ -34,6 +34,7 @@ import org.apache.beam.sdk.transforms.windowing.GlobalWindow;
import org.apache.beam.sdk.transforms.windowing.PaneInfo;
import org.apache.beam.sdk.values.WindowedValue;
import org.apache.beam.sdk.values.WindowedValues;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Lists;
import org.joda.time.Instant;
import org.junit.Test;
@@ -67,7 +68,9 @@ public class ValueAndCoderLazySerializableTest {
@SuppressWarnings("unchecked")
ValueAndCoderLazySerializable<Iterable<WindowedValue<Integer>>> materialized =
(ValueAndCoderLazySerializable<Iterable<WindowedValue<Integer>>>) ois.readObject();
- assertEquals(accumulatedValue, materialized.getOrDecode(iterAccumCoder));
+ assertEquals(
+ Lists.newArrayList(accumulatedValue),
+ Lists.newArrayList(materialized.getOrDecode(iterAccumCoder)));
}
@Test
@@ -101,7 +104,9 @@ public class ValueAndCoderLazySerializableTest {
kryo.readObject(input, ValueAndCoderLazySerializable.class);
input.close();
- assertEquals(accumulatedValue, materialized.getOrDecode(iterAccumCoder));
+ assertEquals(
+ Lists.newArrayList(accumulatedValue),
+ Lists.newArrayList(materialized.getOrDecode(iterAccumCoder)));
}
private <T> WindowedValue<T> winVal(T val) {
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/StaticWindows.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/StaticWindows.java
index fe95616bec9..74c4a2ada6b 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/StaticWindows.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/StaticWindows.java
@@ -21,7 +21,6 @@ import static org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Pr
import java.util.Collection;
import java.util.Collections;
-import java.util.Objects;
import org.apache.beam.sdk.coders.Coder;
import org.apache.beam.sdk.transforms.windowing.BoundedWindow;
import org.apache.beam.sdk.transforms.windowing.IncompatibleWindowException;
@@ -94,7 +93,7 @@ final class StaticWindows extends NonMergingWindowFn<Object, BoundedWindow> {
return false;
}
StaticWindows that = (StaticWindows) other;
- return Objects.equals(this.windows.get(), that.windows.get());
+ return Iterables.elementsEqual(this.windows.get(), that.windows.get());
}
@Override
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/Timer.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/Timer.java
index bd6e0d22a71..9ea6dfd1c8b 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/Timer.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/Timer.java
@@ -37,6 +37,7 @@ import org.apache.beam.sdk.transforms.windowing.PaneInfo;
import org.apache.beam.sdk.transforms.windowing.PaneInfo.PaneInfoCoder;
import org.apache.beam.sdk.util.common.ElementByteSizeObserver;
import org.apache.beam.sdk.values.CausedByDrain;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.joda.time.Instant;
@@ -136,7 +137,7 @@ public abstract class Timer<K> {
Timer<?> that = (Timer<?>) other;
return Objects.equals(this.getUserKey(), that.getUserKey())
&& Objects.equals(this.getDynamicTimerTag(), that.getDynamicTimerTag())
- && Objects.equals(this.getWindows(), that.getWindows())
+ && Iterables.elementsEqual(this.getWindows(), that.getWindows())
&& (this.getClearBit() == that.getClearBit())
&& Objects.equals(this.getFireTimestamp(), that.getFireTimestamp())
&& Objects.equals(this.getHoldTimestamp(), that.getHoldTimestamp())
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollectionViews.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollectionViews.java
index 05612cb9fc7..e4d2fe649ff 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollectionViews.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollectionViews.java
@@ -2052,6 +2052,7 @@ public class PCollectionViews {
}
@Override
+ @SuppressWarnings("UndefinedEquals")
public boolean contains(Object o) {
if (!(o instanceof Entry)) {
return false;
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/WindowedValues.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/WindowedValues.java
index 79f4b4a62ac..ba2720f5e39 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/WindowedValues.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/WindowedValues.java
@@ -52,6 +52,7 @@ import org.apache.beam.sdk.util.WindowedValueReceiver;
import org.apache.beam.sdk.util.common.ElementByteSizeObserver;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.MoreObjects;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.ImmutableList;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.checkerframework.dataflow.qual.Pure;
@@ -413,7 +414,7 @@ public class WindowedValues {
// comparisons are made on their Chronology objects.
return left.getTimestamp().isEqual(right.getTimestamp())
&& Objects.equals(left.getValue(), right.getValue())
- && Objects.equals(left.getWindows(), right.getWindows())
+ && Iterables.elementsEqual(left.getWindows(), right.getWindows())
&& Objects.equals(left.getPaneInfo(), right.getPaneInfo());
}
@@ -789,6 +790,7 @@ public class WindowedValues {
}
@Override
+ @SuppressWarnings("UndefinedEquals")
public boolean equals(@Nullable Object o) {
if (o instanceof TimestampedValueInMultipleWindows) {
TimestampedValueInMultipleWindows<?> that = (TimestampedValueInMultipleWindows<?>) o;
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/coders/SerializableCoderTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/coders/SerializableCoderTest.java
index f3569322a18..a8cb79b1298 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/coders/SerializableCoderTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/coders/SerializableCoderTest.java
@@ -45,6 +45,7 @@ import org.apache.beam.sdk.util.CoderUtils;
import org.apache.beam.sdk.util.SerializableUtils;
import org.apache.beam.sdk.values.PCollection;
import org.apache.beam.sdk.values.TypeDescriptor;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Lists;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.hamcrest.Description;
import org.hamcrest.Matchers;
@@ -121,7 +122,7 @@ public class SerializableCoderTest implements Serializable {
byte[] encoded = CoderUtils.encodeToByteArray(coder, records);
Iterable<MyRecord> decoded = CoderUtils.decodeFromByteArray(coder, encoded);
- assertEquals(records, decoded);
+ assertEquals(records, Lists.newArrayList(decoded));
}
@Test
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/JavaBeanSchemaTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/JavaBeanSchemaTest.java
index 736cc250a82..df6c9cf18e5 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/JavaBeanSchemaTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/JavaBeanSchemaTest.java
@@ -330,9 +330,9 @@ public class JavaBeanSchemaTest {
Long[] longArray = {42L, 43L, 44L};
PrimitiveArrayBean bean = new PrimitiveArrayBean(strList, intArray, longArray);
Row row = registry.getToRowFunction(PrimitiveArrayBean.class).apply(bean);
- assertEquals(strList, row.getArray("strings"));
- assertEquals(Ints.asList(intArray), row.getArray("integers"));
- assertEquals(Arrays.asList(longArray), row.getArray("longs"));
+ assertEquals(strList, (List) row.getArray("strings"));
+ assertEquals(Ints.asList(intArray), (List) row.getArray("integers"));
+ assertEquals(Arrays.asList(longArray), (List) row.getArray("longs"));
// Ensure that list caching works.
assertSame(row.getArray("strings"), row.getArray("strings"));
@@ -350,9 +350,9 @@ public class JavaBeanSchemaTest {
.addArray(42L, 43L, 44L, 45L)
.build();
PrimitiveArrayBean bean = registry.getFromRowFunction(PrimitiveArrayBean.class).apply(row);
- assertEquals(row.getArray("strings"), bean.getStrings());
- assertEquals(row.getArray("integers"), Ints.asList(bean.getIntegers()));
- assertEquals(row.getArray("longs"), Arrays.asList(bean.getLongs()));
+ assertEquals((List) row.getArray("strings"), bean.getStrings());
+ assertEquals((List) row.getArray("integers"), Ints.asList(bean.getIntegers()));
+ assertEquals((List) row.getArray("longs"), Arrays.asList(bean.getLongs()));
}
@Test
@@ -402,7 +402,7 @@ public class JavaBeanSchemaTest {
Lists.newArrayList("g", "h", "i"));
NestedArraysBean bean = new NestedArraysBean(listOfLists);
Row row = registry.getToRowFunction(NestedArraysBean.class).apply(bean);
- assertEquals(listOfLists, row.getArray("lists"));
+ assertEquals(listOfLists, (List) row.getArray("lists"));
}
@Test
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/JavaFieldSchemaTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/JavaFieldSchemaTest.java
index 66794d5a512..7a66decde01 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/JavaFieldSchemaTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/JavaFieldSchemaTest.java
@@ -355,9 +355,9 @@ public class JavaFieldSchemaTest {
Long[] longArray = {42L, 43L, 44L};
PrimitiveArrayPOJO pojo = new PrimitiveArrayPOJO(strList, intArray, longArray);
Row row = registry.getToRowFunction(PrimitiveArrayPOJO.class).apply(pojo);
- assertEquals(strList, row.getArray("strings"));
- assertEquals(Ints.asList(intArray), row.getArray("integers"));
- assertEquals(Arrays.asList(longArray), row.getArray("longs"));
+ assertEquals(strList, (List) row.getArray("strings"));
+ assertEquals(Ints.asList(intArray), (List) row.getArray("integers"));
+ assertEquals(Arrays.asList(longArray), (List) row.getArray("longs"));
// Ensure that list caching works.
assertSame(row.getArray("strings"), row.getArray("strings"));
@@ -375,9 +375,9 @@ public class JavaFieldSchemaTest {
.addArray(42L, 43L, 44L, 45L)
.build();
PrimitiveArrayPOJO pojo = registry.getFromRowFunction(PrimitiveArrayPOJO.class).apply(row);
- assertEquals(row.getArray("strings"), pojo.strings);
- assertEquals(row.getArray("integers"), Ints.asList(pojo.integers));
- assertEquals(row.getArray("longs"), Arrays.asList(pojo.longs));
+ assertEquals((List) row.getArray("strings"), pojo.strings);
+ assertEquals((List) row.getArray("integers"), Ints.asList(pojo.integers));
+ assertEquals((List) row.getArray("longs"), Arrays.asList(pojo.longs));
}
@Test
@@ -428,7 +428,7 @@ public class JavaFieldSchemaTest {
Lists.newArrayList("g", "h", "i"));
NestedArraysPOJO pojo = new NestedArraysPOJO(listOfLists);
Row row = registry.getToRowFunction(NestedArraysPOJO.class).apply(pojo);
- assertEquals(listOfLists, row.getArray("lists"));
+ assertEquals(listOfLists, (List) row.getArray("lists"));
}
@Test
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestJavaBeans.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestJavaBeans.java
index 738099de5df..694db05b091 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestJavaBeans.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestJavaBeans.java
@@ -34,6 +34,7 @@ import org.apache.beam.sdk.schemas.annotations.SchemaFieldName;
import org.apache.beam.sdk.schemas.annotations.SchemaFieldNumber;
import org.apache.beam.sdk.schemas.annotations.SchemaIgnore;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.CaseFormat;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.joda.time.DateTime;
import org.joda.time.Instant;
@@ -905,7 +906,7 @@ public class TestJavaBeans {
}
NestedCollectionBean that = (NestedCollectionBean) o;
return Objects.equals(simples, that.simples)
- && Objects.equals(iterableSimples, that.iterableSimples);
+ && Iterables.elementsEqual(iterableSimples, that.iterableSimples);
}
@Override
@@ -1178,7 +1179,7 @@ public class TestJavaBeans {
return false;
}
IterableBean that = (IterableBean) o;
- return Objects.equals(strings, that.strings);
+ return Iterables.elementsEqual(strings, that.strings);
}
@Override
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestPOJOs.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestPOJOs.java
index eca6b109986..0d9338654ad 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestPOJOs.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestPOJOs.java
@@ -35,6 +35,7 @@ import org.apache.beam.sdk.schemas.annotations.SchemaFieldNumber;
import org.apache.beam.sdk.schemas.annotations.SchemaIgnore;
import org.apache.beam.sdk.schemas.logicaltypes.EnumerationType;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.CaseFormat;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.joda.time.DateTime;
import org.joda.time.Instant;
@@ -664,7 +665,10 @@ public class TestPOJOs {
}
NestedCollectionPOJO that = (NestedCollectionPOJO) o;
return Objects.equals(simples, that.simples)
- && Objects.equals(iterableSimples, that.iterableSimples);
+ && (iterableSimples == that.iterableSimples
+ || (iterableSimples != null
+ && that.iterableSimples != null
+ && Iterables.elementsEqual(iterableSimples, that.iterableSimples)));
}
@Override
@@ -891,7 +895,10 @@ public class TestPOJOs {
return false;
}
PojoWithIterable that = (PojoWithIterable) o;
- return Objects.equals(strings, that.strings);
+ return strings == that.strings
+ || (strings != null
+ && that.strings != null
+ && Iterables.elementsEqual(strings, that.strings));
}
@Override
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/display/DisplayDataTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/display/DisplayDataTest.java
index 65372573fcd..9f9f15e25c6 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/display/DisplayDataTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/display/DisplayDataTest.java
@@ -60,6 +60,7 @@ import org.apache.beam.sdk.values.PCollection;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.ImmutableMap;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.ImmutableMultimap;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Lists;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Multimap;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.hamcrest.CustomTypeSafeMatcher;
@@ -268,7 +269,7 @@ public class DisplayDataTest implements Serializable {
Map<DisplayData.Identifier, DisplayData.Item> map = data.asMap();
assertEquals(1, map.size());
assertThat(data, hasDisplayItem("foo", "bar"));
- assertEquals(map.values(), data.items());
+ assertEquals(Lists.newArrayList(map.values()), Lists.newArrayList(data.items()));
}
@Test
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/construction/TimerTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/construction/TimerTest.java
index 06f43350f5a..23534c300e8 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/construction/TimerTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/construction/TimerTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Collections;
+import java.util.Set;
import org.apache.beam.sdk.coders.Coder;
import org.apache.beam.sdk.coders.StringUtf8Coder;
import org.apache.beam.sdk.testing.CoderProperties;
@@ -46,7 +47,7 @@ public class TimerTest {
assertTrue(clearedTimer.getClearBit());
assertEquals("timer", clearedTimer.getUserKey());
assertEquals("tag", clearedTimer.getDynamicTimerTag());
- assertEquals(Collections.singleton(GlobalWindow.INSTANCE), clearedTimer.getWindows());
+ assertEquals(Collections.singleton(GlobalWindow.INSTANCE), (Set<?>) clearedTimer.getWindows());
}
@Test
@@ -64,7 +65,7 @@ public class TimerTest {
assertEquals("tag", timer.getDynamicTimerTag());
assertEquals(FIRE_TIME, timer.getFireTimestamp());
assertEquals(HOLD_TIME, timer.getHoldTimestamp());
- assertEquals(Collections.singleton(GlobalWindow.INSTANCE), timer.getWindows());
+ assertEquals(Collections.singleton(GlobalWindow.INSTANCE), (Set<?>) timer.getWindows());
assertEquals(PaneInfo.NO_FIRING, timer.getPaneInfo());
assertFalse(timer.getClearBit());
}
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/values/RowTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/values/RowTest.java
index 37583f0ceed..95d43aed170 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/values/RowTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/values/RowTest.java
@@ -189,7 +189,7 @@ public class RowTest {
Stream.of(Schema.Field.of("array", Schema.FieldType.array(Schema.FieldType.INT32)))
.collect(toSchema());
Row row = Row.withSchema(type).addArray(data).build();
- assertEquals(data, row.getArray("array"));
+ assertEquals(data, (List) row.getArray("array"));
}
@Test
@@ -199,7 +199,7 @@ public class RowTest {
Stream.of(Schema.Field.of("iter", Schema.FieldType.iterable(Schema.FieldType.INT32)))
.collect(toSchema());
Row row = Row.withSchema(type).addIterable(data).build();
- assertEquals(data, row.getIterable("iter"));
+ assertEquals(data, Lists.newArrayList(row.getIterable("iter")));
}
@Test
@@ -209,7 +209,7 @@ public class RowTest {
Stream.of(Schema.Field.nullable("array", Schema.FieldType.array(Schema.FieldType.INT32)))
.collect(toSchema());
Row row = Row.withSchema(type).addArray(data).build();
- assertEquals(data, row.getArray("array"));
+ assertEquals(data, (List) row.getArray("array"));
Row otherNonNull = Row.withSchema(type).addValue(ImmutableList.of(1, 2, 3)).build();
Row otherNull = Row.withSchema(type).addValue(null).build();
@@ -224,7 +224,7 @@ public class RowTest {
Stream.of(Schema.Field.nullable("iter", Schema.FieldType.iterable(Schema.FieldType.INT32)))
.collect(toSchema());
Row row = Row.withSchema(type).addIterable(data).build();
- assertEquals(data, row.getArray("iter"));
+ assertEquals(data, (List) row.getArray("iter"));
Row otherNonNull = Row.withSchema(type).addValue(ImmutableList.of(1, 2, 3)).build();
Row otherNull = Row.withSchema(type).addValue(null).build();
@@ -241,7 +241,7 @@ public class RowTest {
"array", Schema.FieldType.array(Schema.FieldType.INT32.withNullable(true))))
.collect(toSchema());
Row row = Row.withSchema(type).addArray(data).build();
- assertEquals(data, row.getArray("array"));
+ assertEquals(data, (List) row.getArray("array"));
}
@Test
@@ -253,7 +253,7 @@ public class RowTest {
"iter", Schema.FieldType.iterable(Schema.FieldType.INT32.withNullable(true))))
.collect(toSchema());
Row row = Row.withSchema(type).addIterable(data).build();
- assertEquals(data, row.getIterable("iter"));
+ assertEquals(data, Lists.newArrayList(row.getIterable("iter")));
}
@Test
@@ -269,7 +269,7 @@ public class RowTest {
Stream.of(Schema.Field.of("array", FieldType.array(FieldType.row(nestedType))))
.collect(toSchema());
Row row = Row.withSchema(type).addArray(data).build();
- assertEquals(data, row.getArray("array"));
+ assertEquals(data, (List) row.getArray("array"));
}
@Test
@@ -285,7 +285,7 @@ public class RowTest {
Stream.of(Schema.Field.of("iter", FieldType.iterable(FieldType.row(nestedType))))
.collect(toSchema());
Row row = Row.withSchema(type).addIterable(data).build();
- assertEquals(data, row.getIterable("iter"));
+ assertEquals(data, Lists.newArrayList(row.getIterable("iter")));
}
@Test
@@ -295,7 +295,7 @@ public class RowTest {
Stream.of(Schema.Field.of("array", FieldType.array(FieldType.array(FieldType.INT32))))
.collect(toSchema());
Row row = Row.withSchema(type).addArray(data).build();
- assertEquals(data, row.getArray("array"));
+ assertEquals(data, (List) row.getArray("array"));
}
@Test
@@ -305,7 +305,7 @@ public class RowTest {
Stream.of(Schema.Field.of("iter", FieldType.iterable(FieldType.array(FieldType.INT32))))
.collect(toSchema());
Row row = Row.withSchema(type).addIterable(data).build();
- assertEquals(data, row.getIterable("iter"));
+ assertEquals(data, Lists.newArrayList(row.getIterable("iter")));
}
@Test
@@ -321,7 +321,7 @@ public class RowTest {
.withNullable(true)))
.collect(toSchema());
Row row = Row.withSchema(type).addArray(data).build();
- assertEquals(data, row.getArray("array"));
+ assertEquals(data, (List) row.getArray("array"));
}
@Test
@@ -338,7 +338,7 @@ public class RowTest {
.withNullable(true)))
.collect(toSchema());
Row row = Row.withSchema(type).addIterable(data).build();
- assertEquals(data, row.getIterable("iter"));
+ assertEquals(data, Lists.newArrayList(row.getIterable("iter")));
}
@Test
@@ -354,7 +354,7 @@ public class RowTest {
"array", FieldType.array(FieldType.map(FieldType.INT32, FieldType.STRING))))
.collect(toSchema());
Row row = Row.withSchema(type).addArray(data).build();
- assertEquals(data, row.getArray("array"));
+ assertEquals(data, (List) row.getArray("array"));
}
@Test
@@ -370,7 +370,7 @@ public class RowTest {
"iter", FieldType.iterable(FieldType.map(FieldType.INT32, FieldType.STRING))))
.collect(toSchema());
Row row = Row.withSchema(type).addIterable(data).build();
- assertEquals(data, row.getIterable("iter"));
+ assertEquals(data, Lists.newArrayList(row.getIterable("iter")));
}
@Test
@@ -396,7 +396,7 @@ public class RowTest {
Stream.of(Schema.Field.nullable("map", FieldType.map(FieldType.INT32, FieldType.STRING)))
.collect(toSchema());
Row row = Row.withSchema(type).addValue(data).build();
- assertEquals(data, row.getArray("map"));
+ assertEquals(data, (List) row.getArray("map"));
Row otherNonNull = Row.withSchema(type).addValue(ImmutableMap.of(1, "value1")).build();
Row otherNull = Row.withSchema(type).addValue(null).build();
diff --git a/sdks/java/extensions/sorter/src/test/java/org/apache/beam/sdk/extensions/sorter/BufferedExternalSorterTest.java b/sdks/java/extensions/sorter/src/test/java/org/apache/beam/sdk/extensions/sorter/BufferedExternalSorterTest.java
index b6d56dc41fa..5d6e54c6b68 100644
--- a/sdks/java/extensions/sorter/src/test/java/org/apache/beam/sdk/extensions/sorter/BufferedExternalSorterTest.java
+++ b/sdks/java/extensions/sorter/src/test/java/org/apache/beam/sdk/extensions/sorter/BufferedExternalSorterTest.java
@@ -110,7 +110,7 @@ public class BufferedExternalSorterTest {
testSorter.add(kvs[1]);
testSorter.add(kvs[2]);
- assertEquals(Arrays.asList(kvs[0], kvs[1], kvs[2]), testSorter.sort());
+ assertEquals(Arrays.asList(kvs[0], kvs[1], kvs[2]), (java.util.List) testSorter.sort());
// Verify external sorter was never called
verify(mockExternalSorter, never()).add(any(KV.class));
@@ -142,7 +142,7 @@ public class BufferedExternalSorterTest {
testSorter.add(kvs[1]);
testSorter.add(kvs[2]);
- assertEquals(Arrays.asList(kvs[0], kvs[1], kvs[2]), testSorter.sort());
+ assertEquals(Arrays.asList(kvs[0], kvs[1], kvs[2]), (java.util.List) testSorter.sort());
verify(mockExternalSorter, times(1)).add(kvs[0]);
verify(mockExternalSorter, times(1)).add(kvs[1]);
diff --git a/sdks/java/harness/src/main/java/org/apache/beam/fn/harness/PrecombineGroupingTable.java b/sdks/java/harness/src/main/java/org/apache/beam/fn/harness/PrecombineGroupingTable.java
index d6827e82178..4929c128dbf 100644
--- a/sdks/java/harness/src/main/java/org/apache/beam/fn/harness/PrecombineGroupingTable.java
+++ b/sdks/java/harness/src/main/java/org/apache/beam/fn/harness/PrecombineGroupingTable.java
@@ -41,6 +41,7 @@ import org.apache.beam.sdk.values.KV;
import org.apache.beam.sdk.values.WindowedValue;
import org.apache.beam.sdk.values.WindowedValues;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.annotations.VisibleForTesting;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables;
import org.joda.time.Instant;
/**
@@ -219,7 +220,8 @@ public class PrecombineGroupingTable<K, InputT, AccumT>
return false;
}
WindowedGroupingTableKey that = (WindowedGroupingTableKey) o;
- return structuralKey.equals(that.structuralKey) && windows.equals(that.windows);
+ return structuralKey.equals(that.structuralKey)
+ && Iterables.elementsEqual(windows, that.windows);
}
@Override
diff --git a/sdks/java/harness/src/test/java/org/apache/beam/fn/harness/WindowMergingFnRunnerTest.java b/sdks/java/harness/src/test/java/org/apache/beam/fn/harness/WindowMergingFnRunnerTest.java
index 2deaa602c25..de7fa2edbca 100644
--- a/sdks/java/harness/src/test/java/org/apache/beam/fn/harness/WindowMergingFnRunnerTest.java
+++ b/sdks/java/harness/src/test/java/org/apache/beam/fn/harness/WindowMergingFnRunnerTest.java
@@ -100,7 +100,9 @@ public class WindowMergingFnRunnerTest {
KV<Object, KV<Iterable<BoundedWindow>, Iterable<KV<BoundedWindow, Iterable<BoundedWindow>>>>>
output = mapFunction.apply(input);
assertEquals(input.getKey(), output.getKey());
- assertEquals(expectedToBeUnmerged, output.getValue().getKey());
+ assertThat(
+ output.getValue().getKey(),
+ containsInAnyOrder(Iterables.toArray(expectedToBeUnmerged, BoundedWindow.class)));
KV<BoundedWindow, Iterable<BoundedWindow>> mergedOutput =
Iterables.getOnlyElement(output.getValue().getValue());
assertEquals(new IntervalWindow(new Instant(7L), new Instant(11L)), mergedOutput.getKey());
@@ -123,7 +125,9 @@ public class WindowMergingFnRunnerTest {
output = mapFunction.apply(input);
assertEquals(input.getKey(), output.getKey());
- assertEquals(expectedToBeUnmerged, output.getValue().getKey());
+ assertThat(
+ output.getValue().getKey(),
+ containsInAnyOrder(Iterables.toArray(expectedToBeUnmerged, BoundedWindow.class)));
mergedOutput = Iterables.getOnlyElement(output.getValue().getValue());
assertEquals(new IntervalWindow(new Instant(15L), new Instant(18L)), mergedOutput.getKey());
assertThat(mergedOutput.getValue(), containsInAnyOrder(expectedToBeMergedGroup2));
diff --git a/sdks/java/harness/src/test/java/org/apache/beam/fn/harness/state/LazyCachingIteratorToIterableTest.java b/sdks/java/harness/src/test/java/org/apache/beam/fn/harness/state/LazyCachingIteratorToIterableTest.java
index fd701099a77..a3934166139 100644
--- a/sdks/java/harness/src/test/java/org/apache/beam/fn/harness/state/LazyCachingIteratorToIterableTest.java
+++ b/sdks/java/harness/src/test/java/org/apache/beam/fn/harness/state/LazyCachingIteratorToIterableTest.java
@@ -81,12 +81,14 @@ public class LazyCachingIteratorToIterableTest {
@Test
public void testEqualsAndHashCode() {
- Iterable<String> iterA =
+ LazyCachingIteratorToIterable<String> iterA =
new LazyCachingIteratorToIterable<>(PrefetchableIterators.fromArray("A", "B", "C"));
- Iterable<String> iterB =
+ LazyCachingIteratorToIterable<String> iterB =
new LazyCachingIteratorToIterable<>(PrefetchableIterators.fromArray("A", "B", "C"));
- Iterable<String> iterC = new LazyCachingIteratorToIterable<>(PrefetchableIterators.fromArray());
- Iterable<String> iterD = new LazyCachingIteratorToIterable<>(PrefetchableIterators.fromArray());
+ LazyCachingIteratorToIterable<String> iterC =
+ new LazyCachingIteratorToIterable<>(PrefetchableIterators.fromArray());
+ LazyCachingIteratorToIterable<String> iterD =
+ new LazyCachingIteratorToIterable<>(PrefetchableIterators.fromArray());
assertEquals(iterA, iterB);
assertEquals(iterC, iterD);
assertNotEquals(iterA, iterC);
diff --git a/sdks/java/io/file-schema-transform/src/test/java/org/apache/beam/sdk/io/fileschematransform/XmlRowValueTest.java b/sdks/java/io/file-schema-transform/src/test/java/org/apache/beam/sdk/io/fileschematransform/XmlRowValueTest.java
index 9d930f50f4f..b4b8e3f15a9 100644
--- a/sdks/java/io/file-schema-transform/src/test/java/org/apache/beam/sdk/io/fileschematransform/XmlRowValueTest.java
+++ b/sdks/java/io/file-schema-transform/src/test/java/org/apache/beam/sdk/io/fileschematransform/XmlRowValueTest.java
@@ -133,7 +133,7 @@ public class XmlRowValueTest {
assertTrue(booleans, booleansValueList.isPresent());
assertEquals(
booleans,
- row.getArray(booleans),
+ (List) row.getArray(booleans),
booleansValueList.get().stream()
.map(XmlRowValue::getPrimitiveValue)
.collect(Collectors.toList()));
@@ -145,7 +145,7 @@ public class XmlRowValueTest {
assertTrue(doubles, doublesValueList.isPresent());
assertEquals(
doubles,
- row.getArray(doubles),
+ (List) row.getArray(doubles),
doublesValueList.get().stream()
.map(XmlRowValue::getPrimitiveValue)
.collect(Collectors.toList()));
@@ -157,7 +157,7 @@ public class XmlRowValueTest {
assertTrue(floats, floatsValueList.isPresent());
assertEquals(
floats,
- row.getArray(floats),
+ (List) row.getArray(floats),
floatsValueList.get().stream()
.map(XmlRowValue::getPrimitiveValue)
.collect(Collectors.toList()));
@@ -169,7 +169,7 @@ public class XmlRowValueTest {
assertTrue(integers, integersValueList.isPresent());
assertEquals(
integers,
- row.getArray(integers),
+ (List) row.getArray(integers),
integersValueList.get().stream()
.map(XmlRowValue::getPrimitiveValue)
.collect(Collectors.toList()));
@@ -181,7 +181,7 @@ public class XmlRowValueTest {
assertTrue(longs, longsValueList.isPresent());
assertEquals(
longs,
- row.getArray(longs),
+ (List) row.getArray(longs),
longsValueList.get().stream()
.map(XmlRowValue::getPrimitiveValue)
.collect(Collectors.toList()));
@@ -193,7 +193,7 @@ public class XmlRowValueTest {
assertTrue(strings, stringsValueList.isPresent());
assertEquals(
strings,
- row.getArray(strings),
+ (List) row.getArray(strings),
stringsValueList.get().stream()
.map(XmlRowValue::getPrimitiveValue)
.collect(Collectors.toList()));
@@ -244,7 +244,7 @@ public class XmlRowValueTest {
byteListValue.setValue(byteList, row);
assertEquals(
singleByte,
- row.getArray(byteList),
+ (List) row.getArray(byteList),
byteListValue.getValueList().stream()
.map(XmlRowValue::getPrimitiveValue)
.collect(Collectors.toList()));
diff --git a/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/RecordWriterManagerTest.java b/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/RecordWriterManagerTest.java
index 2672ac70c08..db6ac943b8d 100644
--- a/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/RecordWriterManagerTest.java
+++ b/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/RecordWriterManagerTest.java
@@ -341,7 +341,7 @@ public class RecordWriterManagerTest {
/** DataFile doesn't implement a .equals() method. Check equality manually. */
private static void checkDataFileEquality(DataFile d1, DataFile d2) {
- assertEquals(d1.path(), d2.path());
+ assertEquals(d1.path().toString(), d2.path().toString());
assertEquals(d1.format(), d2.format());
assertEquals(d1.recordCount(), d2.recordCount());
assertEquals(d1.partition(), d2.partition());
diff --git a/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcSchemaIOProviderTest.java b/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcSchemaIOProviderTest.java
index 3a8b83b992e..98d21507643 100644
--- a/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcSchemaIOProviderTest.java
+++ b/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcSchemaIOProviderTest.java
@@ -35,6 +35,7 @@ import org.apache.beam.sdk.testing.TestPipeline;
import org.apache.beam.sdk.transforms.Count;
import org.apache.beam.sdk.values.PCollection;
import org.apache.beam.sdk.values.Row;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Lists;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
@@ -233,7 +234,7 @@ public class JdbcSchemaIOProviderTest {
"connectionProp", Objects.requireNonNull(dataSourceConf.getConnectionProperties()).get());
assertEquals(
new ArrayList<>(Collections.singleton("initSql")),
- Objects.requireNonNull(dataSourceConf.getConnectionInitSqls()).get());
+ Lists.newArrayList(Objects.requireNonNull(dataSourceConf.getConnectionInitSqls()).get()));
assertEquals(3, (int) dataSourceConf.getMaxConnections().get());
assertEquals("test.jar", Objects.requireNonNull(dataSourceConf.getDriverJars()).get());
assertEquals(10L, schemaIO.config.getInt64("writeBatchSize").longValue());
diff --git a/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcUtilTest.java b/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcUtilTest.java
index da0faad46bc..3bfda67f919 100644
--- a/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcUtilTest.java
+++ b/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcUtilTest.java
@@ -327,7 +327,7 @@ public class JdbcUtilTest {
assertEquals("cloudsql_postgresql", components.getScheme());
assertEquals(
ImmutableList.of("example.com:project", "some-region", "instance-name", "postgres"),
- components.getSegments());
+ Lists.newArrayList(components.getSegments()));
}
@Test
@@ -341,7 +341,7 @@ public class JdbcUtilTest {
assertEquals("cloudsql_postgresql", components.getScheme());
assertEquals(
ImmutableList.of("example.com:project", "some-region", "instance-name", "postgres"),
- components.getSegments());
+ Lists.newArrayList(components.getSegments()));
}
@Test
@@ -358,7 +358,8 @@ public class JdbcUtilTest {
JdbcUtil.FQNComponents components = JdbcUtil.FQNComponents.of(dataSource);
assertEquals("cloudsql_mysql", components.getScheme());
assertEquals(
- ImmutableList.of("some-project", "US", "instance-name", "db"), components.getSegments());
+ ImmutableList.of("some-project", "US", "instance-name", "db"),
+ Lists.newArrayList(components.getSegments()));
}
@Test
diff --git a/sdks/java/io/rabbitmq/src/main/java/org/apache/beam/sdk/io/rabbitmq/RabbitMqMessage.java b/sdks/java/io/rabbitmq/src/main/java/org/apache/beam/sdk/io/rabbitmq/RabbitMqMessage.java
index 9936d9a9c6f..7f561b72b52 100644
--- a/sdks/java/io/rabbitmq/src/main/java/org/apache/beam/sdk/io/rabbitmq/RabbitMqMessage.java
+++ b/sdks/java/io/rabbitmq/src/main/java/org/apache/beam/sdk/io/rabbitmq/RabbitMqMessage.java
@@ -327,7 +327,9 @@ public class RabbitMqMessage implements Serializable {
&& Objects.equals(replyTo, other.replyTo)
&& Objects.equals(expiration, other.expiration)
&& Objects.equals(messageId, other.messageId)
- && Objects.equals(timestamp, other.timestamp)
+ && Objects.equals(
+ timestamp == null ? null : timestamp.toInstant(),
+ other.timestamp == null ? null : other.timestamp.toInstant())
&& Objects.equals(type, other.type)
&& Objects.equals(userId, other.userId)
&& Objects.equals(appId, other.appId)
diff --git a/sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/read/SolaceCheckpointMark.java b/sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/read/SolaceCheckpointMark.java
index a913fd6133e..83aed07374b 100644
--- a/sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/read/SolaceCheckpointMark.java
+++ b/sdks/java/io/solace/src/main/java/org/apache/beam/sdk/io/solace/read/SolaceCheckpointMark.java
@@ -25,6 +25,7 @@ import org.apache.beam.sdk.coders.DefaultCoder;
import org.apache.beam.sdk.extensions.avro.coders.AvroCoder;
import org.apache.beam.sdk.io.UnboundedSource;
import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.annotations.VisibleForTesting;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.Iterables;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -80,7 +81,10 @@ public class SolaceCheckpointMark implements UnboundedSource.CheckpointMark {
return false;
}
SolaceCheckpointMark that = (SolaceCheckpointMark) o;
- return Objects.equals(safeToAck, that.safeToAck);
+ return safeToAck == that.safeToAck
+ || (safeToAck != null
+ && that.safeToAck != null
+ && Iterables.elementsEqual(safeToAck, that.safeToAck));
}
@Override