-
Notifications
You must be signed in to change notification settings - Fork 0
fix:[NEXT-1943] Merge assets, finding matches in lower case #171
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
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
Oops, something went wrong.
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.
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.
🧩 Analysis chain
🌐 Web query:
Is JavaString.toLowerCase()locale-sensitive, and isLocale.ROOTthe recommended choice when normalizing case-insensitive identifiers?💡 Result:
Yes.
String.toLowerCase()is locale-sensitive: it uses the default locale (equivalent totoLowerCase(Locale.getDefault())) and can produce unexpected results for locale-independent text such as identifiers (classic example: Turkish dotted/dotless “I”). [1]Locale.ROOTis the language-neutral (“base”) locale intended for locale-sensitive operations when you don’t want user-locale effects, and is widely recommended for this purpose (e.g., by static analysis guidance). [2] [3]So, for identifier normalization, prefer:
(or similarly
toUpperCase(Locale.ROOT)). [2] [3]Sources: Oracle
Stringjavadoc on locale sensitivity and identifier examples [1]; OracleLocale.ROOTdefinition as language-neutral [2]; Error Prone guidance recommendingLocale.ROOTfor locale-independent casing [3].🏁 Script executed:
Repository: PaladinCloud/ce-extensions
Length of output: 133
🏁 Script executed:
Repository: PaladinCloud/ce-extensions
Length of output: 135
🏁 Script executed:
Repository: PaladinCloud/ce-extensions
Length of output: 4023
🏁 Script executed:
Repository: PaladinCloud/ce-extensions
Length of output: 1198
🏁 Script executed:
Repository: PaladinCloud/ce-extensions
Length of output: 95
Normalize every primary-id lookup with
Locale.ROOT; fix the deletion-path lookup bypass.The current implementation has three critical gaps in case normalization:
Line 54: Uses
String.toLowerCase()without specifyingLocale.ROOT, which is locale-sensitive and can break identifier matching (example: Turkish dotted/dotless "I").Lines 69 & 89: Look up in
primaryIdMapusing the rawdocIdwithout case normalization:primaryIdMap.get(docId)will miss if the incomingdocIdcase differs from the storedprimaryIdcaseprimaryIdMap.containsKey(docId)fails for the same reasonLine 114: Bypasses
primaryIdMapentirely and looks up directly inprimaryAssetsusing the rawexistingDocId. A mixed-case primary asset will never be found here, leavingdeletedPrimaryAssetsincomplete and stale primary docs undeleted.Suggested fixes
🤖 Prompt for AI Agents