Problem with remoting of IComparable[] in FieldDoc.cs
-----------------------------------------------------

                 Key: LUCENENET-100
                 URL: https://issues.apache.org/jira/browse/LUCENENET-100
             Project: Lucene.Net
          Issue Type: Bug
            Reporter: Digy
            Priority: Minor
         Attachments: FieldDoc.patch

Hi George,

There are two problems related with remoting of IComparable[] in FieldDoc.cs

        1- IComparable[] can not be remoted with BinaryFormatter.
When trying,the follwing error occurs:
"Binary stream '99' does not contain a valid BinaryHeader. Possible causes are 
invalid stream or object version change between serialization and  
deserialization."

[See "Hongwei Shen" bug report in 
http://mail-archives.apache.org/mod_mbox/incubator-lucene-net-dev/200709.mbox/ajax/[EMAIL
 PROTECTED]
]

        Sample Code
        ============
            MemoryStream m = new MemoryStream();
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 
formatter = new 
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            IComparable[] arr = new IComparable[1];
            arr[0] = 123.45;
            formatter.Serialize(m, arr);

            m.Seek(0, SeekOrigin.Begin);

            IComparable[] arr2 = (IComparable[])formatter.Deserialize(m);
            Console.WriteLine(arr2[0].ToString() + " " + 
arr2[0].GetType().ToString());
            Console.ReadLine();




        2-When it is remoted with SoapFormatter, all items in it are converted 
to string-type (like 123.45f -> "123.45") Therefore 

FieldDocSortedHitQueue.LessThan method fails with "specified cast is no valid" 
when evaluating SortField.SCORE, SortField.DOC, SortField.INT and 
SortField.FLOAT.(At least in my and Michael Garski's case (I know you don't get 
this error) 
http://mail-archives.apache.org/mod_mbox/incubator-lucene-net-dev/200709.mbox/ajax/[EMAIL
 PROTECTED])
[See  LUCENENET-86 and LUCENENET-94]

        Sample Code
        ============

            MemoryStream m = new MemoryStream();
            System.Runtime.Serialization.Formatters.Soap.SoapFormatter 
formatter = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter();
            IComparable[] arr = new IComparable[1];
            arr[0] = 123.45;
            formatter.Serialize(m, arr);

            m.Seek(0, SeekOrigin.Begin);

            IComparable[] arr2 = (IComparable[])formatter.Deserialize(m);
            Console.WriteLine(arr2[0].ToString() + " " + 
arr2[0].GetType().ToString());
            Console.ReadLine();


To Test this Patch I used TestSort in NUnite test where TestNormalizedScores 
and TestRemoteSort fail


DIGY

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to