Package org.alfresco.repo.content
Class AbstractContentAccessor.CallbackFileChannel
- java.lang.Object
-
- java.nio.channels.spi.AbstractInterruptibleChannel
-
- java.nio.channels.FileChannel
-
- org.alfresco.repo.content.AbstractContentAccessor.CallbackFileChannel
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,java.nio.channels.ByteChannel,java.nio.channels.Channel,java.nio.channels.GatheringByteChannel,java.nio.channels.InterruptibleChannel,java.nio.channels.ReadableByteChannel,java.nio.channels.ScatteringByteChannel,java.nio.channels.SeekableByteChannel,java.nio.channels.WritableByteChannel
- Enclosing class:
- AbstractContentAccessor
protected class AbstractContentAccessor.CallbackFileChannel extends java.nio.channels.FileChannelWraps aFileChannelto provide callbacks to listeners when the channel isclosed.This class is unfortunately necessary as the
FileChanneldoesn't have an single interface defining its methods, making it difficult to put an advice around the methods that require overriding.- Author:
- Derek Hulley
-
-
Constructor Summary
Constructors Constructor Description CallbackFileChannel(java.nio.channels.FileChannel delegate, java.util.List<org.alfresco.service.cmr.repository.ContentStreamListener> listeners)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidforce(boolean metaData)protected voidimplCloseChannel()Closes the channel and makes the callbacks to the listenersjava.nio.channels.FileLocklock(long position, long size, boolean shared)java.nio.MappedByteBuffermap(java.nio.channels.FileChannel.MapMode mode, long position, long size)longposition()java.nio.channels.FileChannelposition(long newPosition)intread(java.nio.ByteBuffer dst)longread(java.nio.ByteBuffer[] dsts, int offset, int length)intread(java.nio.ByteBuffer dst, long position)longsize()longtransferFrom(java.nio.channels.ReadableByteChannel src, long position, long count)longtransferTo(long position, long count, java.nio.channels.WritableByteChannel target)java.nio.channels.FileChanneltruncate(long size)java.nio.channels.FileLocktryLock(long position, long size, boolean shared)intwrite(java.nio.ByteBuffer src)longwrite(java.nio.ByteBuffer[] srcs, int offset, int length)intwrite(java.nio.ByteBuffer src, long position)-
Methods inherited from class java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end, isOpen
-
-
-
-
Constructor Detail
-
CallbackFileChannel
public CallbackFileChannel(java.nio.channels.FileChannel delegate, java.util.List<org.alfresco.service.cmr.repository.ContentStreamListener> listeners)- Parameters:
delegate- the channel that will perform the worklisteners- listeners for events coming from this channel
-
-
Method Detail
-
implCloseChannel
protected void implCloseChannel() throws java.io.IOExceptionCloses the channel and makes the callbacks to the listeners- Specified by:
implCloseChannelin classjava.nio.channels.spi.AbstractInterruptibleChannel- Throws:
java.io.IOException
-
force
public void force(boolean metaData) throws java.io.IOException- Specified by:
forcein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
lock
public java.nio.channels.FileLock lock(long position, long size, boolean shared) throws java.io.IOException- Specified by:
lockin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
map
public java.nio.MappedByteBuffer map(java.nio.channels.FileChannel.MapMode mode, long position, long size) throws java.io.IOException- Specified by:
mapin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
position
public long position() throws java.io.IOException- Specified by:
positionin interfacejava.nio.channels.SeekableByteChannel- Specified by:
positionin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
position
public java.nio.channels.FileChannel position(long newPosition) throws java.io.IOException- Specified by:
positionin interfacejava.nio.channels.SeekableByteChannel- Specified by:
positionin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
read
public int read(java.nio.ByteBuffer dst) throws java.io.IOException- Specified by:
readin interfacejava.nio.channels.ReadableByteChannel- Specified by:
readin interfacejava.nio.channels.SeekableByteChannel- Specified by:
readin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
read
public int read(java.nio.ByteBuffer dst, long position) throws java.io.IOException- Specified by:
readin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
read
public long read(java.nio.ByteBuffer[] dsts, int offset, int length) throws java.io.IOException- Specified by:
readin interfacejava.nio.channels.ScatteringByteChannel- Specified by:
readin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
size
public long size() throws java.io.IOException- Specified by:
sizein interfacejava.nio.channels.SeekableByteChannel- Specified by:
sizein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
transferFrom
public long transferFrom(java.nio.channels.ReadableByteChannel src, long position, long count) throws java.io.IOException- Specified by:
transferFromin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
transferTo
public long transferTo(long position, long count, java.nio.channels.WritableByteChannel target) throws java.io.IOException- Specified by:
transferToin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
truncate
public java.nio.channels.FileChannel truncate(long size) throws java.io.IOException- Specified by:
truncatein interfacejava.nio.channels.SeekableByteChannel- Specified by:
truncatein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
tryLock
public java.nio.channels.FileLock tryLock(long position, long size, boolean shared) throws java.io.IOException- Specified by:
tryLockin classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
write
public int write(java.nio.ByteBuffer src) throws java.io.IOException- Specified by:
writein interfacejava.nio.channels.SeekableByteChannel- Specified by:
writein interfacejava.nio.channels.WritableByteChannel- Specified by:
writein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
write
public int write(java.nio.ByteBuffer src, long position) throws java.io.IOException- Specified by:
writein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
write
public long write(java.nio.ByteBuffer[] srcs, int offset, int length) throws java.io.IOException- Specified by:
writein interfacejava.nio.channels.GatheringByteChannel- Specified by:
writein classjava.nio.channels.FileChannel- Throws:
java.io.IOException
-
-