Class TransactionAwareBufferedWriter
- java.lang.Object
- java.io.Writer
- org.springframework.batch.support.transaction.TransactionAwareBufferedWriter
- All Implemented Interfaces:
java.io.Closeable,java.io.Flushable,java.lang.Appendable,java.lang.AutoCloseable
public class TransactionAwareBufferedWriter extends java.io.WriterWrapper for aFileChannelthat delays actually writing to or closing the buffer if a transaction is active. If a transaction is detected on the call toWriter.write(String)the parameter is buffered and passed on to the underlying writer only when the transaction is committed.- Author:
- Dave Syer, Michael Minella
Constructor Summary
Constructors Constructor Description TransactionAwareBufferedWriter(java.nio.channels.FileChannel channel, java.lang.Runnable closeCallback)Create a new instance with the underlying file channel provided, and a callback to execute on close.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()voidflush()longgetBufferSize()Convenience method for clients to determine if there is any unflushed data.voidsetEncoding(java.lang.String encoding)voidsetForceSync(boolean forceSync)Flag to indicate that changes should be force-synced to disk on flush.voidwrite(char[] cbuf, int off, int len)
Constructor Detail
TransactionAwareBufferedWriter
public TransactionAwareBufferedWriter(java.nio.channels.FileChannel channel, java.lang.Runnable closeCallback)Create a new instance with the underlying file channel provided, and a callback to execute on close. The callback should clean up related resources like output streams or channels.- Parameters:
channel- channel used to do the actual file IOcloseCallback- callback to execute on close
Method Detail
setEncoding
public void setEncoding(java.lang.String encoding)
setForceSync
public void setForceSync(boolean forceSync)
Flag to indicate that changes should be force-synced to disk on flush. Defaults to false, which means that even with a local disk changes could be lost if the OS crashes in between a write and a cache flush. Setting to true may result in slower performance for usage patterns involving many frequent writes.- Parameters:
forceSync- the flag value to set
getBufferSize
public long getBufferSize()
Convenience method for clients to determine if there is any unflushed data.- Returns:
- the current size (in bytes) of unflushed buffered data
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein classjava.io.Writer- Throws:
java.io.IOException
flush
public void flush() throws java.io.IOException- Specified by:
flushin interfacejava.io.Flushable- Specified by:
flushin classjava.io.Writer- Throws:
java.io.IOException
write
public void write(char[] cbuf, int off, int len) throws java.io.IOException- Specified by:
writein classjava.io.Writer- Throws:
java.io.IOException