DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21240>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21240

Axis Types that extend BigInteger are not serializable

           Summary: Axis Types that extend BigInteger are not serializable
           Product: Axis
           Version: 1.1
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Serialization/Deserialization
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


The Axis types that extend BigInteger (NonNegativeInteger, PositiveInteger, 
NonPositiveInteger and NegativeInteger) are not serializable. A stack trace of 
this problem follows:
Exception in thread "main" java.lang.NullPointerException
        at java.math.BigInteger.readObject(Unknown Source)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.io.ObjectInputStream.invokeObjectReader(Unknown Source)
        at java.io.ObjectInputStream.inputObject(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at MySerial2.main(MySerial2.java:35)

I tested this using a very simple java client:
import java.net.URL;
import java.io.ObjectOutputStream;
import java.io.ByteArrayOutputStream;
import org.apache.axis.types.NonNegativeInteger;
import java.util.Calendar;
import java.io.ObjectInputStream;
import java.io.ByteArrayInputStream;
import java.io.*;
import java.math.*;
public class MySerial2 implements java.io.Serializable
{
   public static void main(String args[]) throws Exception {
      try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(baos);
        oos.writeObject(new NonNegativeInteger("1"));
        baos.close();
        oos.close();
        byte[] myBytes = baos.toByteArray();
        ByteArrayInputStream bais = new ByteArrayInputStream(myBytes);
        ObjectInputStream ois = new ObjectInputStream(bais);
        Object myObj = ois.readObject();
        if (myObj instanceof NonNegativeInteger)
        {
          NonNegativeInteger nni = (NonNegativeInteger) myObj;
          System.out.println("Successful");
        }
      }
      catch (IOException e) {
        e.printStackTrace();
      }
    }
}

It appears to me that the BigInteger has private methods for serialization and 
that the Axis types don't have access to them.

Reply via email to