-Yonik
http://www.lucidimagination.com



On Fri, Jan 13, 2012 at 4:22 PM, Yonik Seeley
<yo...@lucidimagination.com> wrote:
> On Fri, Jan 13, 2012 at 4:04 PM, Ken Krugler
> <kkrugler_li...@transpac.com> wrote:
>> I finally got around to looking at why short field values are returned as 
>> "java.lang.Short:<value>".
>>
>> Both XMLWriter.writeVal() and TextResponseWriter.writeVal() are missing the 
>> check for (val instanceof Short), and thus this bit of code is used:
>>
>>      // default... for debugging only
>>      writeStr(name, val.getClass().getName() + ':' + val.toString(), true);
>>
>> The same thing happens when you have a binary field, since val in that case 
>> is byte[], so you get "[B:[B@<address of byte array>"
>>
>> Has anybody else run into this? Seems odd that it's not a known issue, so 
>> I'm wondering if there's something odd about my schema.
>>
>> This is especially true since BinaryField has write methods for both XML and 
>> JSON (via TextResponseWriter) that handle Base64-encoding the data. So I'm 
>> wondering how normally the BinaryField.write() methods would get used, and 
>> whether the actual problem lies elsewhere.
>
> Hmmm, Ryan recently restructured some of the writer code to support
> the pseudo-field feature.  A quick look at the code seems like
> FieldType.write() methods are not used anymore (the Document is
> transformed into a SolrDocument and writeVal is used for each value).

Double hmmm... I see this in writeVal()

    } else if (val instanceof IndexableField) {
      IndexableField f = (IndexableField)val;
      SchemaField sf = schema.getFieldOrNull( f.name() );
      if( sf != null ) {
        sf.getType().write(this, name, f);
      }

So my initial quick analysis of FieldType.write() not being used
anymore doesn't look correct.
Anyway, please do open an issue and we'll get to the bottom of it.


-Yonik
http://www.lucidimagination.com

Reply via email to