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]

Reply via email to