Much of the merging / client code in Solr (not just the JSON Facets) uses things like ((Number)count).longValue() to handle either int or long values.
-Yonik On Tue, Mar 22, 2016 at 4:46 AM, Markus Jelsma <markus.jel...@openindex.io> wrote: > Hello, > > Using SolrJ i built a method that consumes output produced by JSON facets, it > also checks the count before further processing the output: > > <result name="response" numFound="49" start="0"> > </result> > <lst name="facets"> > <int name="count">49</int> > <lst name="by_day"> > <arr name="buckets"> > <lst> > > This is the code reading the count value via SolrJ: > > QueryResponse response = sourceClient.query(query); > NamedList jsonFacets = (NamedList)response.getResponse().get("facets"); > int totalOccurences = (int)jsonFacets.get("count"); > > The problem is, this code doesn't work in unit tests, it throws a: > java.lang.ClassCastException: java.lang.Long cannot be cast to > java.lang.Integer!? > > But why it is an integer right? Anyway, i change the totalOccurences and the > cast to a long and the unit tests runs just fine. But when actually running > the code, i suddenly get another cast exception at exactly the same line. > java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.Long > > What is going on? The only difference is that the unit tests runs in cloud > mode via AbstractFullDistribZkTestBase, but i run the code in a local dev > non-cloud mode. I haven't noticed this behaviour anywhere else although i > have many unit tests consuming lots of different pieces of Solr output, and > all that code runs fine in non-cloud mode too. > > Is this to be expected, normal? Did i catch another bug? > > Thanks! > Markus