commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jose Luis Huertas (JIRA)" <>
Subject [jira] Created: (COLLECTIONS-220) Serialization/Deserialization doesn't work well with empty buffers.
Date Mon, 07 Aug 2006 13:55:13 GMT
Serialization/Deserialization doesn't work well with empty buffers.

                 Key: COLLECTIONS-220
             Project: Commons Collections
          Issue Type: Bug
          Components: Buffer
    Affects Versions: 3.2
            Reporter: Jose Luis Huertas
            Priority: Minor

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) {
        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:
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message