Skip to content

[ErrorProne] Fix EqualsGetClass warnings and enable Error Prone check#37758

Open
stankiewicz wants to merge 2 commits intoapache:masterfrom
stankiewicz:error_prone_EqualsGetClass
Open

[ErrorProne] Fix EqualsGetClass warnings and enable Error Prone check#37758
stankiewicz wants to merge 2 commits intoapache:masterfrom
stankiewicz:error_prone_EqualsGetClass

Conversation

@stankiewicz
Copy link
Contributor

What this PR does: This pull request enables the EqualsGetClass check from Error Prone and resolves all existing violations across the codebase.

Specific changes:

-Removed EqualsGetClass from the disabledChecks list in the BeamModulePlugin.groovy configuration to enforce it going forward.

  • Refactored equals methods in numerous classes across various modules (including nexmark, flink runners, and others) to use standard instanceof checks rather than exact runtime class matching (getClass() != o.getClass()).

This change better aligns with standard Java equality semantics and addresses the Error Prone warning Prefer instanceof to getClass when implementing Object#equals

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

  • Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
  • Update CHANGES.md with noteworthy changes.
  • If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md

GitHub Actions Tests Status (on master branch)

Build python source distribution and wheels
Python tests
Java tests
Go tests

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances code quality by activating a critical Error Prone check that identifies problematic equals method implementations. By systematically updating these methods to leverage instanceof for type comparison, the codebase now adheres more closely to Java's Object.equals contract, improving robustness and preventing potential issues related to inheritance and polymorphism. This change ensures a more consistent and correct approach to object equality throughout the project.

Highlights

  • Error Prone Check Enabled: The 'EqualsGetClass' check from Error Prone has been enabled across the codebase to enforce best practices for equals method implementations.
  • Refactored equals Methods: Numerous equals methods in various Java classes have been refactored to use the instanceof operator for type checking, aligning with standard Java equality semantics and addressing the 'Prefer instanceof to getClass when implementing Object#equals' warning.
  • Suppressed Warnings for Specific Cases: For a few specific Coder and ProxyInvocationHandler classes, @SuppressWarnings("EqualsGetClass") has been added to equals methods where the getClass() comparison is intentionally maintained, likely due to requirements for exact type matching in serialization or proxy handling.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
    • Removed 'EqualsGetClass' from the list of disabled Error Prone checks.
  • examples/java/iceberg/src/main/java/org/apache/beam/examples/iceberg/IcebergRestCatalogStreamingWriteExample.java
    • Refactored equals method in Accum class to use instanceof.
  • examples/java/src/main/java/org/apache/beam/examples/complete/TrafficRoutes.java
    • Refactored equals method in StationSpeed class to use instanceof.
  • examples/java/src/main/java/org/apache/beam/examples/complete/game/UserScore.java
    • Refactored equals method in GameActionInfo class to use instanceof.
  • examples/java/twitter/src/main/java/org/apache/beam/examples/twitterstreamgenerator/ReadFromTwitterDoFn.java
    • Refactored equals method in OffsetHolder class to use instanceof.
  • examples/java/twitter/src/main/java/org/apache/beam/examples/twitterstreamgenerator/TwitterConfig.java
    • Refactored equals method in TwitterConfig class to use instanceof.
  • runners/core-java/src/main/java/org/apache/beam/runners/core/construction/SerializablePipelineOptions.java
    • Refactored equals method in SerializablePipelineOptions class to use instanceof.
  • runners/core-java/src/main/java/org/apache/beam/runners/core/metrics/BoundedTrieData.java
    • Refactored equals methods in BoundedTrieData and BoundedTrieNode to use instanceof.
  • runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/FlinkExecutionEnvironments.java
    • Refactored equals method in GlobalJobParametersImpl to use instanceof.
  • runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/types/CoderTypeInformation.java
    • Refactored equals method in CoderTypeInformation to use instanceof.
  • runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkBroadcastStateInternals.java
    • Refactored equals methods in several Flink broadcast state classes to use instanceof.
  • runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java
    • Refactored equals methods in numerous Flink state internal classes to use instanceof.
  • runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkExecutionEnvironments.java
    • Refactored equals method in GlobalJobParametersImpl to use instanceof.
  • runners/flink/src/main/java/org/apache/beam/runners/flink/translation/types/CoderTypeInformation.java
    • Refactored equals method in CoderTypeInformation to use instanceof.
  • runners/flink/src/main/java/org/apache/beam/runners/flink/translation/types/CoderTypeSerializer.java
    • Refactored equals method in CoderTypeSerializer to use instanceof.
  • runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkBroadcastStateInternals.java
    • Refactored equals methods in several Flink broadcast state classes to use instanceof.
  • runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java
    • Refactored equals methods in numerous Flink state internal classes to use instanceof.
  • runners/google-cloud-dataflow-java/src/test/java/org/apache/beam/runners/dataflow/PrimitiveParDoSingleFactoryTest.java
    • Refactored equals method in ToLongFn to use instanceof.
  • runners/google-cloud-dataflow-java/src/test/java/org/apache/beam/runners/dataflow/util/CloudObjectsTest.java
    • Refactored equals methods in ObjectCoder and RowIdentity to use instanceof.
  • runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/control/ReferenceCountingExecutableStageContextFactory.java
    • Refactored equals method in WrappedContext to use instanceof.
  • runners/jet/src/main/java/org/apache/beam/runners/jet/Utils.java
    • Refactored equals method in ByteArrayKey to use instanceof.
  • runners/samza/src/main/java/org/apache/beam/runners/samza/runtime/KeyedTimerData.java
    • Refactored equals method in KeyedTimerData to use instanceof.
  • runners/samza/src/main/java/org/apache/beam/runners/samza/runtime/OpMessage.java
    • Refactored equals method in OpMessage to use instanceof.
  • runners/samza/src/main/java/org/apache/beam/runners/samza/runtime/SamzaStoreStateInternals.java
    • Refactored equals methods in AbstractSamzaState and ByteArray to use instanceof.
  • runners/spark/3/src/test/java/org/apache/beam/runners/spark/structuredstreaming/translation/helpers/EncoderHelpersTest.java
    • Refactored equals method in PrivateString to use instanceof.
  • runners/spark/src/main/java/org/apache/beam/runners/spark/stateful/SparkStateInternals.java
    • Refactored equals method in AbstractState to use instanceof.
  • runners/spark/src/main/java/org/apache/beam/runners/spark/util/ByteArray.java
    • Refactored equals method in ByteArray to use instanceof.
  • runners/spark/src/main/java/org/apache/beam/runners/spark/util/SideInputStorage.java
    • Refactored equals method in Key to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/coders/AtomicCoder.java
    • Added @SuppressWarnings("EqualsGetClass") to equals method.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/coders/DelegateCoder.java
    • Added @SuppressWarnings("EqualsGetClass") to equals method.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/coders/RowCoder.java
    • Added @SuppressWarnings("EqualsGetClass") to equals method.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/coders/SerializableCoder.java
    • Added @SuppressWarnings("EqualsGetClass") to equals method.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/coders/StringDelegateCoder.java
    • Added @SuppressWarnings("EqualsGetClass") to equals method.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/coders/StructuredCoder.java
    • Added @SuppressWarnings("EqualsGetClass") to equals method.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/coders/ZstdCoder.java
    • Refactored equals method in ZstdCoder to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/io/FileIO.java
    • Refactored equals method in ReadableFile to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/io/range/OffsetRange.java
    • Refactored equals method in OffsetRange to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java
    • Added @SuppressWarnings("EqualsGetClass") to equals method.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/CachingFactory.java
    • Refactored equals method in CachingFactory to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/FromRowUsingCreator.java
    • Refactored equals method in FromRowUsingCreator to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/GetterBasedSchemaProvider.java
    • Refactored equals methods in ToRowWithValueGetters and GetterBasedSchemaProvider to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/JavaBeanSchema.java
    • Refactored equals methods in GetterTypeSupplier, SetterTypeSupplier, and JavaBeanSchema to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/Schema.java
    • Refactored equals methods in Schema, Options, and Option to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/SchemaCoder.java
    • Refactored equals method in SchemaCoder to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/logicaltypes/EnumerationType.java
    • Refactored equals method in Value to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/logicaltypes/OneOfType.java
    • Refactored equals method in Value to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/utils/ByteBuddyUtils.java
    • Refactored equals method in TransformingMap to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/testing/PAssert.java
    • Refactored equals method in PAssertionSite to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/ApproximateUnique.java
    • Refactored equals method in LargestUnique to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/CombineFns.java
    • Refactored equals method in CoCombineResult to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Count.java
    • Refactored equals method in CountFn to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/PeriodicSequence.java
    • Refactored equals method in SequenceDefinition to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Sum.java
    • Refactored equals methods in SumIntegerFn, SumLongFn, and SumDoubleFn to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/RawUnionValue.java
    • Refactored equals method in RawUnionValue to use instanceof.
  • sdks/java/core/src/main/java/org/apache/beam/sdk/util/construction/PTransformMatchers.java
    • Refactored equals method in EqualUrnPTransformMatcher to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/coders/SerializableCoderTest.java
    • Refactored equals methods in MyRecord and ProperEquals to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/coders/TimestampPrefixingWindowCoderTest.java
    • Refactored equals method in CustomWindow to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsFactoryTest.java
    • Refactored equals method in ComplexType2 to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/options/ProxyInvocationHandlerTest.java
    • Refactored equals methods in InnerType and ComplexType to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/SchemaCoderTest.java
    • Refactored equals methods in SimpleBean and SimplePojo to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/transforms/CoGroupTest.java
    • Refactored equals method in CgPojo to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/transforms/ConvertTest.java
    • Refactored equals methods in several POJO classes to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/JsonUtilsTest.java
    • Refactored equals methods in Cat, NestedCat, and ArrayOfCats to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestJavaBeans.java
    • Refactored equals methods in various test JavaBean classes to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/schemas/utils/TestPOJOs.java
    • Refactored equals methods in various test POJO classes to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineFnsTest.java
    • Refactored equals method in UserString to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/windowing/WindowTest.java
    • Refactored equals method in CustomWindow to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/util/construction/CombineTranslationTest.java
    • Refactored equals method in TestCombineFn to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/util/construction/ReadTranslationTest.java
    • Refactored equals methods in TestBoundedSource and TestUnboundedSource to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/util/construction/WindowIntoTranslationTest.java
    • Refactored equals method in CustomWindows to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/util/construction/WindowingStrategyTranslationTest.java
    • Refactored equals methods in CustomWindow and CustomWindowFn to use instanceof.
  • sdks/java/core/src/test/java/org/apache/beam/sdk/util/construction/graph/ProjectionPushdownOptimizerTest.java
    • Refactored equals methods in SchemaSourceTransform and MultipleOutputSourceWithPushdown to use instanceof.
  • sdks/java/extensions/avro/src/main/java/org/apache/beam/sdk/extensions/avro/coders/AvroCoder.java
    • Refactored equals methods in AvroCoder and AvroCoderCacheKey to use instanceof.
  • sdks/java/extensions/avro/src/main/java/org/apache/beam/sdk/extensions/avro/io/AvroDatumFactory.java
    • Refactored equals method in AvroDatumFactory to use instanceof.
  • sdks/java/extensions/avro/src/main/java/org/apache/beam/sdk/extensions/avro/schemas/utils/AvroUtils.java
    • Refactored equals methods in GenericRecordToRowFn and RowToGenericRecordFn to use instanceof.
  • sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/coders/AvroCoderTest.java
    • Refactored equals method in Pojo to use instanceof.
  • sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/schemas/SchemaCoderTest.java
    • Refactored equals method in SimpleAvro to use instanceof.
  • sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/schemas/transforms/ConvertTest.java
    • Refactored equals methods in POJO1 and POJO1Nested to use instanceof.
  • sdks/java/extensions/google-cloud-platform-core/src/main/java/org/apache/beam/sdk/extensions/gcp/util/gcsfs/GcsPath.java
    • Refactored equals method in GcsPath to use instanceof.
  • sdks/java/extensions/jackson/src/test/java/org/apache/beam/sdk/extensions/jackson/JacksonTransformsTest.java
    • Refactored equals method in MyEmptyBean to use instanceof.
  • sdks/java/extensions/kryo/src/main/java/org/apache/beam/sdk/extensions/kryo/KryoCoder.java
    • Refactored equals method in KryoCoder to use instanceof.
  • sdks/java/extensions/kryo/src/test/java/org/apache/beam/sdk/extensions/kryo/KryoCoderTest.java
    • Refactored equals methods in ClassToBeEncoded and TestClass to use instanceof.
  • sdks/java/extensions/ordered/src/main/java/org/apache/beam/sdk/extensions/ordered/OrderedProcessingStatus.java
    • Refactored equals method in OrderedProcessingStatus to use instanceof.
  • sdks/java/extensions/protobuf/src/main/java/org/apache/beam/sdk/extensions/protobuf/DynamicProtoCoder.java
    • Refactored equals method in DynamicProtoCoder to use instanceof.
  • sdks/java/extensions/protobuf/src/main/java/org/apache/beam/sdk/extensions/protobuf/ProtoCoder.java
    • Refactored equals method in ProtoCoder to use instanceof.
  • sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/example/model/Customer.java
    • Refactored equals method in Customer to use instanceof.
  • sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/example/model/Order.java
    • Refactored equals method in Order to use instanceof.
  • sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/bigquery/BeamSqlUnparseContext.java
    • Refactored equals method in SqlDateTimeLiteral to use instanceof.
  • sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/InferredJavaBeanSqlTest.java
    • Refactored equals methods in PersonBean and OrderBean to use instanceof.
  • sdks/java/harness/src/main/java/org/apache/beam/fn/harness/state/FnApiStateAccessor.java
    • Corrected equals method in UserStateCacheKeyBase to use other.getClass() for comparison.
  • sdks/java/io/amazon-web-services2/src/main/java/org/apache/beam/sdk/io/aws2/common/ObjectPool.java
    • Refactored equals method in RefCounted to use instanceof.
  • sdks/java/io/amazon-web-services2/src/main/java/org/apache/beam/sdk/io/aws2/kinesis/ShardCheckpoint.java
    • Refactored equals method in ShardCheckpoint to use instanceof.
  • sdks/java/io/amazon-web-services2/src/main/java/org/apache/beam/sdk/io/aws2/kinesis/StartingPoint.java
    • Refactored equals method in StartingPoint to use instanceof.
  • sdks/java/io/amazon-web-services2/src/main/java/org/apache/beam/sdk/io/aws2/schemas/AwsSchemaProvider.java
    • Refactored equals method in FromRowWithBuilder to use instanceof.
  • sdks/java/io/amazon-web-services2/src/main/java/org/apache/beam/sdk/io/aws2/sqs/SqsCheckpointMark.java
    • Refactored equals method in SqsCheckpointMark to use instanceof.
  • sdks/java/io/amazon-web-services2/src/test/java/org/apache/beam/sdk/io/aws2/dynamodb/DynamoDBIOWriteTest.java
    • Refactored equals method in Item to use instanceof.
  • sdks/java/io/amazon-web-services2/src/test/java/org/apache/beam/sdk/io/aws2/kinesis/EFOShardSubscribersPoolTest.java
    • Refactored equals method in KinesisRecordView to use instanceof.
  • sdks/java/io/cassandra/src/test/java/org/apache/beam/sdk/io/cassandra/CassandraIOTest.java
    • Refactored equals methods in several Cassandra test entity classes to use instanceof.
  • sdks/java/io/common/src/main/java/org/apache/beam/sdk/io/common/HashingFn.java
    • Refactored equals method in Accum to use instanceof.
  • sdks/java/io/file-schema-transform/src/main/java/org/apache/beam/sdk/io/fileschematransform/XmlRowAdapter.java
    • Refactored equals method in XmlRowAdapter to use instanceof.
  • sdks/java/io/file-schema-transform/src/main/java/org/apache/beam/sdk/io/fileschematransform/XmlRowValue.java
    • Refactored equals method in XmlRowValue to use instanceof.
  • sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryInsertError.java
    • Refactored equals method in BigQueryInsertError to use instanceof.
  • sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryStorageStreamSource.java
    • Refactored equals method in BigQueryStorageStreamSource to use instanceof.
  • sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/PassThroughThenCleanup.java
    • Refactored equals method in CleanupOperation to use instanceof and added @SuppressWarnings("EqualsGetClass").
  • sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/StorageApiFlushAndFinalizeDoFn.java
    • Refactored equals method in Operation to use instanceof.
  • sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/FhirSearchParameter.java
    • Refactored equals method in FhirSearchParameter to use instanceof.
  • sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/PubsubClient.java
    • Refactored equals methods in ProjectPath, SubscriptionPath, and TopicPath to use instanceof.
  • sdks/java/io/google-cloud-platform/src/test/java/com/google/cloud/spanner/FakeBatchTransactionId.java
    • Refactored equals method in FakeBatchTransactionId to use instanceof.
  • sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIOReadTest.java
    • Refactored equals method in MyData to use instanceof.
  • sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedByTimestampAndTransactionIdIT.java
    • Refactored equals method in SortKey to use instanceof.
  • sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedWithinKeyGloballyIT.java
    • Refactored equals method in SortKey to use instanceof.
  • sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedWithinKeyIT.java
    • Refactored equals method in SortKey to use instanceof.
  • sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamTransactionBoundariesIT.java
    • Refactored equals method in SortKey to use instanceof.
  • sdks/java/io/hadoop-format/src/test/java/org/apache/beam/sdk/io/hadoop/format/Employee.java
    • Refactored equals method in Employee to use instanceof.
  • sdks/java/io/hbase/src/main/java/org/apache/beam/sdk/io/hbase/HBaseIO.java
    • Refactored equals methods in Read, Write, and WriteRowMutations to use instanceof.
  • sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/SerializableDataFile.java
    • Refactored equals method in SerializableDataFile to use instanceof.
  • sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcTestHelper.java
    • Refactored equals method in TestDto to use instanceof.
  • sdks/java/io/jms/src/main/java/org/apache/beam/sdk/io/jms/JmsCheckpointMark.java
    • Refactored equals method in JmsCheckpointMark to use instanceof.
  • sdks/java/io/redis/src/main/java/org/apache/beam/sdk/io/redis/RedisCursor.java
    • Refactored equals method in RedisCursor to use instanceof.
  • sdks/java/io/rrio/src/test/java/org/apache/beam/io/requestresponse/CallTest.java
    • Refactored equals methods in Request and Response to use instanceof.
  • sdks/java/io/solace/src/test/java/org/apache/beam/sdk/io/solace/it/FixedCredentialsBasicAuthJcsmpSessionServiceFactory.java
    • Refactored equals method in FixedCredentialsBasicAuthJcsmpSessionServiceFactory to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/NexmarkConfiguration.java
    • Refactored equals method in NexmarkConfiguration to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/Auction.java
    • Refactored equals method in Auction to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/AuctionBid.java
    • Refactored equals method in AuctionBid to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/AuctionCount.java
    • Refactored equals method in AuctionCount to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/AuctionPrice.java
    • Refactored equals method in AuctionPrice to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/Bid.java
    • Refactored equals method in Bid to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/BidsPerSession.java
    • Refactored equals method in BidsPerSession to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/CategoryPrice.java
    • Refactored equals method in CategoryPrice to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/Done.java
    • Refactored equals method in Done to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/Event.java
    • Refactored equals method in Event to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/IdNameReserve.java
    • Refactored equals method in IdNameReserve to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/NameCityStateId.java
    • Refactored equals method in NameCityStateId to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/Person.java
    • Refactored equals method in Person to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/model/SellerPrice.java
    • Refactored equals method in SellerPrice to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/Query5.java
    • Refactored equals method in Accum to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/queries/WinningBids.java
    • Refactored equals methods in AuctionOrBidWindow and WinningBids to use instanceof.
  • sdks/java/testing/nexmark/src/main/java/org/apache/beam/sdk/nexmark/sources/generator/Generator.java
    • Refactored equals method in NextEvent to use instanceof.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@stankiewicz stankiewicz force-pushed the error_prone_EqualsGetClass branch from b0e1274 to d1e2494 Compare March 4, 2026 08:44
@stankiewicz stankiewicz changed the title Fix EqualsGetClass warnings and enable Error Prone check [ErrorProne] Fix EqualsGetClass warnings and enable Error Prone check Mar 4, 2026
@codecov
Copy link

codecov bot commented Mar 4, 2026

Codecov Report

❌ Patch coverage is 0% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 54.75%. Comparing base (5a6f763) to head (d1e2494).
⚠️ Report is 6 commits behind head on master.

Files with missing lines Patch % Lines
...eam/sdk/extensions/sql/example/model/Customer.java 0.00% 1 Missing ⚠️
...e/beam/sdk/extensions/sql/example/model/Order.java 0.00% 1 Missing ⚠️
.../meta/provider/bigquery/BeamSqlUnparseContext.java 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff            @@
##             master   #37758   +/-   ##
=========================================
  Coverage     54.75%   54.75%           
- Complexity     1676     1691   +15     
=========================================
  Files          1064     1063    -1     
  Lines        166824   166917   +93     
  Branches       1208     1227   +19     
=========================================
+ Hits          91338    91398   +60     
- Misses        73303    73321   +18     
- Partials       2183     2198   +15     
Flag Coverage Δ
java 67.35% <0.00%> (-0.03%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 4, 2026

Checks are failing. Will not request review until checks are succeeding. If you'd like to override that behavior, comment assign set of reviewers

@stankiewicz
Copy link
Contributor Author

testTransactionBoundaries (org.apache.beam.sdk.io.gcp.spanner.changestreams.it.SpannerChangeStreamOrderedByTimestampAndTransactionIdIT) is flaky.

@stankiewicz
Copy link
Contributor Author

Run Java_GCP_IO_Direct PreCommit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant