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:
Closeable,AutoCloseable,ByteChannel,Channel,GatheringByteChannel,InterruptibleChannel,ReadableByteChannel,ScatteringByteChannel,SeekableByteChannel,WritableByteChannel
- Enclosing class:
- AbstractContentAccessor
protected class AbstractContentAccessor.CallbackFileChannel extends FileChannel
Wraps 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
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.nio.channels.FileChannel
FileChannel.MapMode
-
-
Constructor Summary
Constructors Constructor Description CallbackFileChannel(FileChannel delegate, 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 listenersFileLocklock(long position, long size, boolean shared)MappedByteBuffermap(FileChannel.MapMode mode, long position, long size)longposition()FileChannelposition(long newPosition)intread(ByteBuffer dst)longread(ByteBuffer[] dsts, int offset, int length)intread(ByteBuffer dst, long position)longsize()longtransferFrom(ReadableByteChannel src, long position, long count)longtransferTo(long position, long count, WritableByteChannel target)FileChanneltruncate(long size)FileLocktryLock(long position, long size, boolean shared)intwrite(ByteBuffer src)longwrite(ByteBuffer[] srcs, int offset, int length)intwrite(ByteBuffer src, long position)-
Methods inherited from class java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end, isOpen
-
-
-
-
Constructor Detail
-
CallbackFileChannel
public CallbackFileChannel(FileChannel delegate, 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 IOExceptionCloses the channel and makes the callbacks to the listeners- Specified by:
implCloseChannelin classAbstractInterruptibleChannel- Throws:
IOException
-
force
public void force(boolean metaData) throws IOException- Specified by:
forcein classFileChannel- Throws:
IOException
-
lock
public FileLock lock(long position, long size, boolean shared) throws IOException
- Specified by:
lockin classFileChannel- Throws:
IOException
-
map
public MappedByteBuffer map(FileChannel.MapMode mode, long position, long size) throws IOException
- Specified by:
mapin classFileChannel- Throws:
IOException
-
position
public long position() throws IOException- Specified by:
positionin interfaceSeekableByteChannel- Specified by:
positionin classFileChannel- Throws:
IOException
-
position
public FileChannel position(long newPosition) throws IOException
- Specified by:
positionin interfaceSeekableByteChannel- Specified by:
positionin classFileChannel- Throws:
IOException
-
read
public int read(ByteBuffer dst) throws IOException
- Specified by:
readin interfaceReadableByteChannel- Specified by:
readin interfaceSeekableByteChannel- Specified by:
readin classFileChannel- Throws:
IOException
-
read
public int read(ByteBuffer dst, long position) throws IOException
- Specified by:
readin classFileChannel- Throws:
IOException
-
read
public long read(ByteBuffer[] dsts, int offset, int length) throws IOException
- Specified by:
readin interfaceScatteringByteChannel- Specified by:
readin classFileChannel- Throws:
IOException
-
size
public long size() throws IOException- Specified by:
sizein interfaceSeekableByteChannel- Specified by:
sizein classFileChannel- Throws:
IOException
-
transferFrom
public long transferFrom(ReadableByteChannel src, long position, long count) throws IOException
- Specified by:
transferFromin classFileChannel- Throws:
IOException
-
transferTo
public long transferTo(long position, long count, WritableByteChannel target) throws IOException- Specified by:
transferToin classFileChannel- Throws:
IOException
-
truncate
public FileChannel truncate(long size) throws IOException
- Specified by:
truncatein interfaceSeekableByteChannel- Specified by:
truncatein classFileChannel- Throws:
IOException
-
tryLock
public FileLock tryLock(long position, long size, boolean shared) throws IOException
- Specified by:
tryLockin classFileChannel- Throws:
IOException
-
write
public int write(ByteBuffer src) throws IOException
- Specified by:
writein interfaceSeekableByteChannel- Specified by:
writein interfaceWritableByteChannel- Specified by:
writein classFileChannel- Throws:
IOException
-
write
public int write(ByteBuffer src, long position) throws IOException
- Specified by:
writein classFileChannel- Throws:
IOException
-
write
public long write(ByteBuffer[] srcs, int offset, int length) throws IOException
- Specified by:
writein interfaceGatheringByteChannel- Specified by:
writein classFileChannel- Throws:
IOException
-
-