Class 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.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.

    Author:
    Derek Hulley
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.nio.channels.FileChannel

        java.nio.channels.FileChannel.MapMode
    • 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
      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, open, open, 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

        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 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 interface java.nio.channels.SeekableByteChannel
        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 interface java.nio.channels.SeekableByteChannel
        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 interface java.nio.channels.SeekableByteChannel
        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 interface java.nio.channels.SeekableByteChannel
        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 interface java.nio.channels.SeekableByteChannel
        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.SeekableByteChannel
        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