Hey Peter - if you could submit your changes as an svn patch, we could apply
the update much faster.

thanks,
jeff



On Jan 23, 2008 2:42 AM, Peter Thygesen <[EMAIL PROTECTED]> wrote:

> I wrote a small client in .Net which query Solr and dumps the result on
> screen.. fantastic low-tech.. ;)
>
> However I ran into new SolrSharp problems. My schema allows a particular
> field to be multiValued, but if it only has one value, it will cause
> SolrSharp fail in line 88 of Class: IndexFiledAttribute.
>
> My SearchRecord property is an array (List) and line 88 tries to set my
> property as if it was a string. The code should be corrected by checking
> if the property is an array and not whether it has 1 value or more.
> E.g. change line 85 to 085> if(!this.PropertyInfo.PropertyType.IsArray)
>
> Original code (from class IndexFiledAttribute):
> 082> public void SetValue(SearchRecord searchRecord)
> 083> {
> 084>   XmlNodeList xnlvalues =
> searchRecord.XNodeRecord.SelectNodes(this.XnodeExpression);
> 085>   if (xnlvalues.Count == 1)   //single value
> 086>   {
> 087>     XmlNode xnodevalue = xnlvalues[0];
> 088>     this.PropertyInfo.SetValue(searchRecord,
> Convert.ChangeType(xnodevalue.InnerText, this.PropertyInfo.PropertyType)
> , null);
> 089>   }
> 090>   else if (xnlvalues.Count > 1)   //array
> 091>   {
> 092>     Type basetype =
> this.PropertyInfo.PropertyType.GetElementType();
> 093>     Array valueArray = Array.CreateInstance(basetype,
> xnlvalues.Count);
> 094>     for (int i = 0; i < xnlvalues.Count; i++)
> 095>     {
> 096>
> valueArray.SetValue(Convert.ChangeType(xnlvalues[i].InnerText,
> basetype), i);
> 097>     }
> 098>     this.PropertyInfo.SetValue(searchRecord, valueArray, null);
> 099>   }
> 100> }
>
> My code (replace):
> 085>    if(!this.PropertyInfo.PropertyType.IsArray) // single value
> 090>    else // array
>
> Cheers,
> Peter Thygesen
>
> -- hope to see you all at ApacheCon in Amsterdam :)
>
>
>

Reply via email to