| AppendingObjectOutputStream.java |
/***************************************
* *
* JBoss: The OpenSource J2EE WebOS *
* *
* Distributable under LGPL license. *
* See terms of license at gnu.org. *
* *
***************************************/
package org.jboss.util.stream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
/**
* An <tt>ObjectOutputStream</tt> that can conditionally be put into
* <i>appending</i> mode.
*
* <dl>
* <dt><b>Concurrency: </b></dt>
* <dd>This class is <b>not</b> synchronized.</dd>
* </dl>
*
* @version <tt>$Revision: 1.1 $</tt>
* @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
*/
public class AppendingObjectOutputStream
extends ObjectOutputStreamAdapter
{
/**
* Construct an <tt>AppendingObjectOutputStream</tt>.
*
* @param out An <tt>OutputStream</tt> stream.
* @param append <tt>True</tt> to append written objects; <tt>false</tt>
* to use default action (writes stream header).
*
* @throws IOException Any exception thrown by
* the underlying <tt>OutputStream</tt>.
*/
public AppendingObjectOutputStream(OutputStream out, boolean append)
throws IOException
{
super(createStream(out, append));
}
/**
* Helper to return a <tt>ObjectOutputStream</tt>.
*/
private static ObjectOutputStream createStream(OutputStream out,
boolean append)
throws IOException
{
ObjectOutputStream stream;
// if we are appending then return an append only stream
if (append) {
stream = new AppendObjectOutputStream(out);
}
// else if it already an oos then return it
else if (out instanceof ObjectOutputStream) {
stream = (ObjectOutputStream)out;
}
// else wrap the stream in an oos
else {
stream = new ObjectOutputStream(out);
}
return stream;
}
}
| AppendingObjectOutputStream.java |