Ah, just noticed that I missed the ! symbol when I read that code, none the less things are still complex
On Wed, Apr 3, 2024 at 10:50 AM Gus Heck <gus.h...@gmail.com> wrote: > We have quite a few, including MapSolrParams which seems to explicitly > defy the contract of SolrParams being a multimap... > > Has anyone spent any time considering if we really need all these variants: > > - AppendedSolrParams > - DefaultSolrParams > - DocRowParams > - MapSolrParams > - ModifiableSolrParams > - MultiMapSolrParams > - RequiredSolrParams > - SolrQuery > - VersionedParams > > Additionally there seem to be 3 places where we create anonymous > subclasses of SolrParams... > > Most of these seem to have some angle or additional fields, so they aren't > useless per-se but it does make it hard to reason about the behavior of a > method that accepts SolrParams... for example RequestUtil.processParams() > has the suspicious code: > > public static void processParams( > SolrRequestHandler handler, > SolrQueryRequest req, > SolrParams defaults, > SolrParams appends, > SolrParams invariants) { > > boolean searchHandler = handler instanceof SearchHandler; > SolrParams params = req.getParams(); > > // Handle JSON stream for search requests > if (searchHandler && req.getContentStreams() != null) { > > Map<String, String[]> map = MultiMapSolrParams.asMultiMap(params, false); > > if (!(params instanceof MultiMapSolrParams || params instanceof > ModifiableSolrParams)) { > // need to set params on request since we weren't able to access the > original map > params = new MultiMapSolrParams(map); > req.setParams(params); > } > > > This seems to A) possibly fail to restrict defaults and appends to the > actual subclasses that are associated with that functionality (and if that > is not a good idea, why do we have them?), and B) discard the request > parameters if someone uses anything other than the expected two subclasses > of SolrParams in the request. > > Has this been considered before? > > Archives search only brought up my previous irritations with SolrParams > implementations... > > https://lists.apache.org/thread/tkoj75z736x1nzotgh2xsn7wdnnsoc8g > > -Gus > > -- > http://www.needhamsoftware.com (work) > https://a.co/d/b2sZLD9 (my fantasy fiction book) > -- http://www.needhamsoftware.com (work) https://a.co/d/b2sZLD9 (my fantasy fiction book)