Refactor JournalAbbreviationRepository to use MVMaps #13403
Closed
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.
Closes #13385
Summary
This PR refactors JournalAbbreviationRepository to use persistent MVMap structures backed by H2’s MVStore, instead of regular in-memory HashMaps.
This change improves scalability, aligns with JabRef's architectural goals of modular and persistent storage, and prepares the repository for future features like runtime persistence or abbreviation editing.
Steps to test
Use JDK 17 or higher.
Run ./gradlew clean test and confirm that all tests pass.
Start JabRef and ensure journal abbreviation lookups still work as expected (e.g., getDefaultAbbreviation("Physical Review Letters") returns Phys. Rev. Lett.).
Optionally test abbreviation loading from a .mv file to confirm persistent structure reads correctly.
Mandatory checks
I own the copyright...
Change in CHANGELOG.md described in a way that is understandable for the average user
→ Added under “Changed” section: Switched journal abbreviation repository to MVMap-based storage backend.
Tests created for changes (if applicable)
→ Existing tests for abbreviation functionality still apply. Logic reuse verified.
Manually tested changed features in running JabRef
[/] Screenshots added in PR description
→ Not applicable (non-UI change)
Checked developer's documentation
→ Repository structure and persistence changes considered.
[/] Checked documentation
→ No user-visible behavior affected. No update needed.