Ivan Saric created SOLR-18631:
---------------------------------
Summary: SimpleOrderedMap.getImmutableCopy() returns a plain
NamedList
Key: SOLR-18631
URL: https://issues.apache.org/jira/browse/SOLR-18631
Project: Solr
Issue Type: Bug
Components: SolrJ
Reporter: Ivan Saric
{{SimpleOrderedMap}} overrides {{clone()}} to return a {{SimpleOrderedMap}},
but not {{getImmutableCopy()}}, which {{NamedList}} implements as {{new
NamedList<>(Collections.unmodifiableList(copy.nvPairs))}}. So an immutable copy
of a {{SimpleOrderedMap}} is a plain {{NamedList}}: the caller loses the
{{Map}} view (SOLR-17623) and the single-key intent, and a later {{instanceof
SimpleOrderedMap}} or cast fails.
Found while auditing {{NamedList}} instantiations for SOLR-18612 (SIP-22 step
5); the two instantiations inside {{NamedList}} itself were left alone there
because they must preserve the receiver's kind, and this is the
{{SimpleOrderedMap}} half of that.
Fix: override {{getImmutableCopy()}} in {{SimpleOrderedMap}} the way
{{clone()}} is, returning a {{SimpleOrderedMap}} backed by an unmodifiable
list, with a unit test asserting the type, immutability and contents of the
copy.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]