refactor: Convert TimeConfigurationDto and UsagePointDto to records with FIELD access (Issue #61)#65
Merged
Conversation
…ith FIELD access Completes Issue #61 - Convert remaining DTO POJOs to Java records for improved immutability and cleaner code. Changes: - Converted TimeConfigurationDto from POJO class to record with @XmlAccessType(FIELD) - Converted UsagePointDto from POJO class to record with @XmlAccessType(FIELD) - Moved JAXB annotations from getter methods to record component parameters - Added defensive byte array cloning in overridden accessors - Eliminated @XmlTransient annotations on utility methods (no longer needed with FIELD access) - Updated AtomEntryDto to dynamically add xmlns:espi and xmlns:cust namespace declarations - Enhanced @JsonSubTypes to include all 17 ESPI resources (9 usage + 8 customer) - Updated test assertions to accommodate namespace attributes in entry elements Benefits: - All 36 DTOs now use consistent record pattern (100% adoption) - Reduced code from 355 lines by eliminating boilerplate - Simplified namespace handling with auto-computed attributes - Maintains full Jackson 3 XmlMapper compatibility - All 554 tests passing with no regressions Testing: - TimeConfigurationDtoTest: 11/11 tests passing - Jackson3XmlMarshallingTest: 7/7 tests passing - DtoExportServiceImplTest: 6/6 tests passing - Full test suite: 554/554 tests passing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Completes Issue #61 by converting the remaining 2 DTO POJOs (TimeConfigurationDto and UsagePointDto) to Java records, achieving 100% record adoption across all 36 DTOs.
Changes Made
Core DTO Conversions
@XmlAccessorType(FIELD)@XmlAccessorType(FIELD)dstStartRule(),dstEndRule(),roleFlags())@XmlTransientannotations on utility methods (no longer needed with FIELD access)Atom Feed Namespace Support
xmlns:espiandxmlns:custnamespace declarationshttp://naesb.org/espi) and customer namespace (http://naesb.org/espi/customer)ESPI Resource Type Mappings
espi:TimeConfigurationandcust:TimeConfigurationnamespacesTest Updates
Benefits
Testing
✅ All tests passing (554/554)
Files Changed
AtomEntryDto.java- Added dynamic namespace supportTimeConfigurationDto.java- Converted to recordUsagePointDto.java- Converted to recordTimeConfigurationDtoTest.java- Updated test assertionsJackson3XmlMarshallingTest.java- Updated test assertionsDtoExportServiceImplTest.java- Updated test assertions🤖 Generated with Claude Code