refactor: make objects immutable and remove redundant methods - #1002
refactor: make objects immutable and remove redundant methods#1002bengbengbalabalabeng wants to merge 5 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
This PR refactors several metadata.property value-holder classes in fesod-sheet toward immutability by removing Lombok setters and switching a subset of properties to final fields + constructor-based creation, along with some minor test adjustments.
Changes:
- Convert multiple annotation-derived property classes to constructor-initialized immutable objects (
finalfields +@AllArgsConstructor). - Remove Lombok-generated setters (and some other Lombok annotations) from style/font-related property classes and update internal builders to assign fields directly.
- Adjust freeze-pane strategy unit tests by removing the property-constructor test.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| fesod-sheet/src/test/java/org/apache/fesod/sheet/write/style/SheetFreezePaneStrategyTest.java | Removes a unit test that previously exercised the property-based constructor |
| fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/StyleProperty.java | Removes Lombok setters and updates builder methods to assign fields directly |
| fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/SheetFreezePaneProperty.java | Makes freeze-pane property immutable via final fields + all-args ctor; builder now constructs directly |
| fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/RowHeightProperty.java | Switches to final field + @AllArgsConstructor |
| fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/OnceAbsoluteMergeProperty.java | Switches to final fields + @AllArgsConstructor |
| fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/NumberFormatProperty.java | Switches to final fields + @AllArgsConstructor |
| fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/LoopMergeProperty.java | Switches to final fields + @AllArgsConstructor |
| fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/FontProperty.java | Removes Lombok setters and updates builder methods to assign fields directly |
| fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/DateTimeFormatProperty.java | Switches to final fields + @AllArgsConstructor |
| fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/ColumnWidthProperty.java | Switches to final field + @AllArgsConstructor |
Suppressed comments (1)
fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/property/SheetFreezePaneProperty.java:71
getOrDefaultonly treats-1as the sentinel value. Per the annotation semantics, any negative value (e.g.-5) should fall back to the default; otherwiseSheetFreezePaneStrategy(SheetFreezePaneProperty)will throw due to its>= 0validation when users accidentally provide other negative numbers.
private static Integer getOrDefault(Integer value, Integer defaultValue) {
if (value == -1) {
return defaultValue;
}
return value;
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
generally good, do we have the possible to mark as @deprecated for setter and propose to remove since a future version to avoid breaking change on existing usage? |
…aking them immutable" This reverts commit 52d4898.
Purpose of the pull request
As title.
What's changed?
Checklist