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
Optimize SystemEnvironmentPropertyMapper #21523
Optimize SystemEnvironmentPropertyMapper #21523
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.
Thanks for the PR. I am not sure why you've added that extra catch block there.
try { | ||
return ConfigurationPropertyName.of(legacyCompatibleName).isAncestorOf(candidate); | ||
} | ||
catch (Exception ex) { |
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.
Can you share what that extra catch block is supposed to cover?
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.
The removal of isValid
here might lead to exceptions if the name can't be constructed.
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.
I'd argue that legacyCompatibleName
is a bit misleading then. It makes me wonder looking at the code why a catch block is necessary. Thoughts?
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.
I didn't change anything in that regards. I think the name was chosen to reflect the "legacy" format and isValid()
was added to be sure that no incompatible output breaks the code here. This PR just sticks to that behaviour of not breaking anything with a potentially invalid name.
Having that said, I too had a hard time seeing how an invalid name can be produced from a valid name, but didn't want to change the intention of the code.
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.
Alright, thanks for the feedback. Flagging for team attention to see what the rest of the team thinks.
Update `SystemEnvironmentPropertyMapper` to use single chars rather than strings whenever possible. See gh-21523
Introduce a new `ConfigurationPropertyName.ofIfValid` method to save us needing to throw and catch an exception unnecessarily. See gh-21523
Thanks once again @dreis2211! I split this up into a few smaller commits and also added a new method to |
Hi,
I just noticed a couple of minor performance tweaks in
SystemEnvironmentPropertyMapper
. The biggest one is probably to avoid creatingConfigurationPropertyName
instances twice for everyisAncestorOf
check (once for the normalof()
call and once for theisValid()
check).Cheers,
Christoph