refactor(cwl): Change implementation of LiveTailRegistry to standard map #5789
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.
Problem
The nestedMap implementation of the registry was forcing a defined Default item. This doesn't fit the usecase I am aiming to provide by this registry. There is no default object to be returned. If an item doesn't exist in the registry, we should handle an undefined object, and not a placeholder. In other words, there is no concept of a placeholder/default value for a LiveTailSession.
Additionally,
set
on the NestedMap would perform a deep merge. I am wanting to replace the object.Originally I defined the default object to an exception, but the NestedMap
set
operation callsget
. And if there isn't already a value in the map, it would throw the exception defined as the default object. This means we could never add any item to the map.Solution
Swap the underlying implementation of the registry to a basic Map.
I am still defining a
LiveTailSessionRegistry
class so we can statically initialize a registry singleton, as well as leaving the possibility open to override or extend theMap
class. Also so we can pass around the typeLiveTailSessionRegistry
instead ofMap<Foo, Bar>
.License: I confirm that my contribution is made under the terms of the Apache 2.0 license.