-
Notifications
You must be signed in to change notification settings - Fork 3k
Replace switch statement with switch expression #15176
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request modernizes the codebase by replacing traditional switch statements with switch expressions, introduced in Java 14 and made standard in Java 17. The change improves code readability and conciseness by eliminating verbose break statements and directly returning values from switch cases.
Changes:
- Converted switch statements to switch expressions across the entire codebase
- Updated cases to use arrow (
->) syntax instead of colon (:) syntax - Replaced break statements and explicit returns with yield expressions where multi-line case blocks are needed
- Maintained all existing logic and behavior while reducing code verbosity
Reviewed changes
Copilot reviewed 178 out of 178 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| spark/v4.1/spark/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java | Converted primitive value retrieval switch to expression |
| spark/v4.1/spark/src/test/java/org/apache/iceberg/spark/data/RandomData.java | Converted two primitive type handling switches to expressions |
| spark/v4.1/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewritePositionDeleteFilesAction.java | Converted record creation switch to expression |
| spark/v4.1/spark/src/test/java/org/apache/iceberg/spark/TestChangelogIterator.java | Converted row type conversion switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java | Converted array data conversion switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/SparkRowLevelOperationBuilder.java | Converted three switches (build, mode, isolationLevel) to expressions |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/SparkMicroBatchStream.java | Converted snapshot processing switch to expression with yield for complex cases |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/BaseRowReader.java | Converted file format handling switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/BaseBatchReader.java | Converted batch iterable creation switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java | Converted ORC primitive reader switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkPlannedAvroReader.java | Converted two Avro reader switches to expressions |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java | Converted two Parquet writer switches to expressions |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java | Converted decimal reader switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java | Converted ORC writer primitive handling switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java | Converted ORC reader primitive handling switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java | Converted two Avro writer switches to expressions |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteTablePathSparkAction.java | Converted two file format switches (reader/writer) to expressions |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteManifestsSparkAction.java | Converted manifest content switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java | Converted manifest file reading switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkWriteUtil.java | Converted distribution mode switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java | Converted four switches (compression codecs, distribution modes) to expressions |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkV2Filters.java | Converted predicate filtering switch to expression |
| spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkFilters.java | Converted filter checking switch to expression |
| snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeIdentifier.java | Converted identifier string conversion switch to expression |
| snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java | Converted two namespace handling switches to expressions |
| snowflake/src/main/java/org/apache/iceberg/snowflake/NamespaceHelpers.java | Converted two identifier conversion switches to expressions |
| parquet/src/test/java/org/apache/iceberg/parquet/TestVariantMetrics.java | Converted variant value increment switch to expression |
| parquet/src/main/java/org/apache/iceberg/parquet/VariantWriterBuilder.java | Converted two decimal writer switches to expressions |
| parquet/src/main/java/org/apache/iceberg/parquet/VariantReaderBuilder.java | Converted two variant reader switches to expressions |
| parquet/src/main/java/org/apache/iceberg/parquet/ParquetValueWriters.java | Converted position delete getter switch to expression |
| parquet/src/main/java/org/apache/iceberg/parquet/ParquetValueReaders.java | Converted two reader switches (decimal, timestamp) to expressions |
| parquet/src/main/java/org/apache/iceberg/parquet/ParquetUtil.java | Converted int type check switch to expression |
| parquet/src/main/java/org/apache/iceberg/parquet/ParquetMetrics.java | Converted two bound truncation switches to expressions |
| parquet/src/main/java/org/apache/iceberg/parquet/ParquetConversions.java | Converted two conversion switches to expressions |
| parquet/src/main/java/org/apache/iceberg/parquet/ParquetCodecFactory.java | Converted compression codec cache key switch to expression |
| parquet/src/main/java/org/apache/iceberg/parquet/ParquetAvroWriter.java | Converted two primitive writer switches to expressions |
| parquet/src/main/java/org/apache/iceberg/parquet/ParquetAvroValueReaders.java | Converted decimal reader switch to expression |
| parquet/src/main/java/org/apache/iceberg/parquet/PageIterator.java | Converted page iterator factory switch to expression |
| parquet/src/main/java/org/apache/iceberg/parquet/MessageTypeToType.java | Converted primitive type conversion switch to expression |
| parquet/src/main/java/org/apache/iceberg/parquet/ColumnWriter.java | Converted column writer factory switch to expression |
| parquet/src/main/java/org/apache/iceberg/parquet/ColumnIterator.java | Converted column iterator factory switch to expression |
| parquet/src/main/java/org/apache/iceberg/data/parquet/GenericParquetWriter.java | Converted time unit conversion switch to expression |
| parquet/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java | Converted two reader switches (time, timestamp) to expressions |
| parquet/src/main/java/org/apache/iceberg/data/parquet/BaseParquetWriter.java | Converted two primitive writer switches to expressions |
| orc/src/main/java/org/apache/iceberg/orc/OrcMetrics.java | Converted bound truncation switch to expression |
| orc/src/main/java/org/apache/iceberg/orc/ExpressionToSearchArgument.java | Converted three switches (NaN getter, type, literal) to expressions |
| orc/src/main/java/org/apache/iceberg/orc/EstimateOrcAvgWidthVisitor.java | Converted width estimation switch to expression |
| orc/src/main/java/org/apache/iceberg/data/orc/GenericOrcWriters.java | Converted position delete getter switch to expression |
| orc/src/main/java/org/apache/iceberg/data/orc/GenericOrcReader.java | Converted two type handling switches to expressions |
| nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java | Converted API version switch to expression |
| mr/src/main/java/org/apache/iceberg/mr/mapreduce/IcebergInputFormat.java | Converted file format switch to expression |
| kafka-connect (multiple files) | Converted various switches to expressions across data conversion, transform, and event classes |
| flink/v2.1/flink (multiple files) | Converted numerous switches to expressions across source, sink, data, and maintenance components |
| data/src/test/java and data/src/main/java | Converted file format and delete handling switches to expressions |
| core/src/test/java and core/src/main/java | Converted extensive switches across REST, expressions, types, transforms, avro, metadata, and catalog classes |
| aws/src/main/java/org/apache/iceberg/aws/AwsClientFactories.java | Converted HTTP client type switch to expression |
| arrow/src/main/java (multiple files) | Converted switches to expressions in Arrow reader and accessor classes |
| api/src/test/java and api/src/main/java | Converted switches to expressions in utility, expression, transform, type, and variant classes |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Created a dev discussion thread to see the communities opinion about introducing sweeping changes: https://lists.apache.org/thread/k2cg9v6rxs8lb74qbok166k68h1r0f3k |
No description provided.