org.alfresco.repo.content
Class AbstractContentAccessor.CallbackFileChannel

java.lang.Object
  extended by java.nio.channels.spi.AbstractInterruptibleChannel
      extended by java.nio.channels.FileChannel
          extended by org.alfresco.repo.content.AbstractContentAccessor.CallbackFileChannel
All Implemented Interfaces:
java.io.Closeable, 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.WritableByteChannel
Enclosing class:
AbstractContentAccessor

protected class AbstractContentAccessor.CallbackFileChannel
extends java.nio.channels.FileChannel

Wraps a FileChannel to provide callbacks to listeners when the channel is closed.

This class is unfortunately necessary as the FileChannel doesn't have an single interface defining its methods, making it difficult to put an advice around the methods that require overriding.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.nio.channels.FileChannel
java.nio.channels.FileChannel.MapMode
 
Constructor Summary
AbstractContentAccessor.CallbackFileChannel(java.nio.channels.FileChannel delegate, java.util.List listeners)
           
 
Method Summary
 void force(boolean metaData)
           
protected  void implCloseChannel()
          Closes the channel and makes the callbacks to the listeners
 java.nio.channels.FileLock lock(long position, long size, boolean shared)
           
 java.nio.MappedByteBuffer map(java.nio.channels.FileChannel.MapMode mode, long position, long size)
           
 long position()
           
 java.nio.channels.FileChannel position(long newPosition)
           
 int read(java.nio.ByteBuffer dst)
           
 long read(java.nio.ByteBuffer[] dsts, int offset, int length)
           
 int read(java.nio.ByteBuffer dst, long position)
           
 long size()
           
 long transferFrom(java.nio.channels.ReadableByteChannel src, long position, long count)
           
 long transferTo(long position, long count, java.nio.channels.WritableByteChannel target)
           
 java.nio.channels.FileChannel truncate(long size)
           
 java.nio.channels.FileLock tryLock(long position, long size, boolean shared)
           
 int write(java.nio.ByteBuffer src)
           
 long write(java.nio.ByteBuffer[] srcs, int offset, int length)
           
 int write(java.nio.ByteBuffer src, long position)
           
 
Methods inherited from class java.nio.channels.FileChannel
lock, read, tryLock, write
 
Methods inherited from class java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end, isOpen
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.nio.channels.Channel
close, isOpen
 
Methods inherited from interface java.nio.channels.Channel
close, isOpen
 
Methods inherited from interface java.nio.channels.Channel
close, isOpen
 
Methods inherited from interface java.nio.channels.Channel
close, isOpen
 

Constructor Detail

AbstractContentAccessor.CallbackFileChannel

public AbstractContentAccessor.CallbackFileChannel(java.nio.channels.FileChannel delegate,
                                                   java.util.List listeners)
Parameters:
delegate - the channel that will perform the work
listeners - listeners for events coming from this channel
Method Detail

implCloseChannel

protected void implCloseChannel()
                         throws java.io.IOException
Closes the channel and makes the callbacks to the listeners

Specified by:
implCloseChannel in class java.nio.channels.spi.AbstractInterruptibleChannel
Throws:
java.io.IOException

force

public void force(boolean metaData)
           throws java.io.IOException
Specified by:
force in class java.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:
lock in class java.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:
map in class java.nio.channels.FileChannel
Throws:
java.io.IOException

position

public long position()
              throws java.io.IOException
Specified by:
position in class java.nio.channels.FileChannel
Throws:
java.io.IOException

position

public java.nio.channels.FileChannel position(long newPosition)
                                       throws java.io.IOException
Specified by:
position in class java.nio.channels.FileChannel
Throws:
java.io.IOException

read

public int read(java.nio.ByteBuffer dst)
         throws java.io.IOException
Specified by:
read in interface java.nio.channels.ReadableByteChannel
Specified by:
read in class java.nio.channels.FileChannel
Throws:
java.io.IOException

read

public int read(java.nio.ByteBuffer dst,
                long position)
         throws java.io.IOException
Specified by:
read in class java.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:
read in interface java.nio.channels.ScatteringByteChannel
Specified by:
read in class java.nio.channels.FileChannel
Throws:
java.io.IOException

size

public long size()
          throws java.io.IOException
Specified by:
size in class java.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:
transferFrom in class java.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:
transferTo in class java.nio.channels.FileChannel
Throws:
java.io.IOException

truncate

public java.nio.channels.FileChannel truncate(long size)
                                       throws java.io.IOException
Specified by:
truncate in class java.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:
tryLock in class java.nio.channels.FileChannel
Throws:
java.io.IOException

write

public int write(java.nio.ByteBuffer src)
          throws java.io.IOException
Specified by:
write in interface java.nio.channels.WritableByteChannel
Specified by:
write in class java.nio.channels.FileChannel
Throws:
java.io.IOException

write

public int write(java.nio.ByteBuffer src,
                 long position)
          throws java.io.IOException
Specified by:
write in class java.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:
write in interface java.nio.channels.GatheringByteChannel
Specified by:
write in class java.nio.channels.FileChannel
Throws:
java.io.IOException


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.