Make serializable

git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@131761 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Stephen Colebourne 2004-06-01 22:57:18 +00:00
parent 936f931fdd
commit 60a4d56b07
1 changed files with 49 additions and 6 deletions

View File

@ -15,6 +15,10 @@
*/
package org.apache.commons.collections.buffer;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.AbstractCollection;
import java.util.Iterator;
import java.util.NoSuchElementException;
@ -42,9 +46,11 @@ import org.apache.commons.collections.BufferUnderflowException;
* </pre>
* <p>
* This buffer prevents null objects from being added.
* <p>
* This class is Serializable from Commons Collections 3.1.
*
* @since Commons Collections 3.0 (previously in main package v2.1)
* @version $Revision: 1.8 $ $Date: 2004/05/15 12:33:23 $
* @version $Revision: 1.9 $ $Date: 2004/06/01 22:57:18 $
*
* @author Avalon
* @author Federico Barbieri
@ -52,14 +58,17 @@ import org.apache.commons.collections.BufferUnderflowException;
* @author Paul Jack
* @author Stephen Colebourne
*/
public class UnboundedFifoBuffer extends AbstractCollection implements Buffer {
public class UnboundedFifoBuffer extends AbstractCollection implements Buffer, Serializable {
/** Serialization vesrion */
private static final long serialVersionUID = -3482960336579541419L;
/** The array of objects in the buffer. */
protected Object[] buffer;
protected transient Object[] buffer;
/** The current head index. */
protected int head;
protected transient int head;
/** The current tail index. */
protected int tail;
protected transient int tail;
/**
* Constructs an UnboundedFifoBuffer with the default number of elements.
@ -89,6 +98,40 @@ public class UnboundedFifoBuffer extends AbstractCollection implements Buffer {
tail = 0;
}
//-----------------------------------------------------------------------
/**
* Write the buffer out using a custom routine.
*
* @param out the output stream
* @throws IOException
*/
private void writeObject(ObjectOutputStream out) throws IOException {
out.defaultWriteObject();
out.writeInt(size());
for (Iterator it = iterator(); it.hasNext();) {
out.writeObject(it.next());
}
}
/**
* Read the buffer in using a custom routine.
*
* @param in the input stream
* @throws IOException
* @throws ClassNotFoundException
*/
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
int size = in.readInt();
buffer = new Object[size];
for (int i = 0; i < size; i++) {
buffer[i] = in.readObject();
}
head = 0;
tail = size;
}
//-----------------------------------------------------------------------
/**
* Returns the number of elements stored in the buffer.
*