Mantis Bugtracker
  

Viewing Issue Advanced Details Jump to Notes ] View Simple ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0004165 [Hessian] major always 08-05-10 16:00 08-05-10 16:00
Reporter ebourg View Status public  
Assigned To
Priority normal Resolution open Platform
Status new   OS
Projection none   OS Version
ETA none Fixed in Version Product Version 4.0.7
  Product Build
Summary 0004165: ArrayStoreException on deserializing a class with an unknown field
Description If a Hessian 2 stream contains an object definition with more fields than the class known locally, an ArrayStoreException is triggered:

java.lang.ArrayStoreException: com.caucho.hessian.io.JavaDeserializer$NullFieldDeserializer
at com.caucho.hessian.io.Hessian2Input.readObjectDefinition(Hessian2Input.java:2306)
at com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2212)
at com.caucho.hessian.io.CollectionDeserializer.readLengthList(CollectionDeserializer.java:97)
at com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:1713)
at com.caucho.hessian.io.Hessian2Input.readReply(Hessian2Input.java:157)
at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:190)

This is annoying because if a class is updated on the server with an optional field, it crashes the clients that haven't been updated yet a rely on a older version of the class. It doesn't happen with a Hessian 1 stream.

This happens because NullFieldDeserializer in JavaDeserializer doesn't extend FieldDeserializer, so it's not possible to assign its instance to the array of FieldDeserializers created in the JavaDeserializer#createFields(int) method.
Steps To Reproduce
Additional Information
Attached Files

- Relationships

There are no notes attached to this issue.

- Issue History
Date Modified Username Field Change
08-05-10 16:00 ebourg New Issue


Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
26 total queries executed.
24 unique queries executed.
Powered by Mantis Bugtracker