Serialization/Deserialization doesn't work well with empty buffers. -------------------------------------------------------------------
Key: COLLECTIONS-220 URL: http://issues.apache.org/jira/browse/COLLECTIONS-220 Project: Commons Collections Issue Type: Bug Components: Buffer Affects Versions: 3.2 Reporter: Jose Luis Huertas Priority: Minor Attachments: SerializationTest.java When I serialize the queue to disk an it has elements, all works ok, but when I serialize an empty queue I have some problems when I create a new object using the serialized file. When I deserialize the queue it has a 'buffer' with size 1 (with null content), 'tail' and 'head' fields are 0 (they are declared transient). So, when I try to add a new object to the queue, the sentence: Object[] tmp = new Object[((buffer.length - 1) * 2) + 1]; Is executed in the add() method to increase the buffer length, but the buffer remains with the same size! (buffer.length = 1 --> (1 - 1) * 2 + 1 = 1). So, the object is added and when the tail is going to be incremented, it is reset to 0!! private int increment(int index) { index++; if (index >= buffer.length) { index = 0; } return index; } So it is impossible to add new elements after an empty queue has been serialized / deserialized. I attach a simple TestCase where this is proved. The example works when you use XMLEncoder to serialize the buffer but doesn't work if you use ObjectOutputStream or XStream. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]