Class BufferedContentDiskDriver

  • All Implemented Interfaces:
    ExtendedDiskInterface, org.alfresco.jlan.server.core.DeviceInterface, org.alfresco.jlan.server.filesys.DiskInterface, org.alfresco.jlan.server.filesys.DiskSizeInterface, org.alfresco.jlan.server.filesys.IOCtlInterface, org.alfresco.jlan.server.locking.FileLockingInterface, org.alfresco.jlan.server.locking.OpLockInterface, NodeServicePolicies.OnDeleteNodePolicy, NodeServicePolicies.OnMoveNodePolicy, ClassPolicy, Policy

    public class BufferedContentDiskDriver
    extends java.lang.Object
    implements ExtendedDiskInterface, org.alfresco.jlan.server.filesys.DiskInterface, org.alfresco.jlan.server.filesys.DiskSizeInterface, org.alfresco.jlan.server.filesys.IOCtlInterface, org.alfresco.jlan.server.locking.OpLockInterface, org.alfresco.jlan.server.locking.FileLockingInterface, NodeServicePolicies.OnDeleteNodePolicy, NodeServicePolicies.OnMoveNodePolicy
    Alfresco Content Disk Driver Cache

    Decorates ContentDiskDriver with a performance cache of some frequently used results. In particular for getFileInformation and fileExists

    • Nested Class Summary

      • Nested classes/interfaces inherited from interface org.alfresco.repo.policy.Policy

        Policy.Arg
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void closeFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, org.alfresco.jlan.server.filesys.NetworkFile param)  
      org.alfresco.jlan.server.core.DeviceContext createContext​(java.lang.String shareName, org.springframework.extensions.config.ConfigElement args)  
      void createDirectory​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, org.alfresco.jlan.server.filesys.FileOpenParams params)  
      org.alfresco.jlan.server.filesys.NetworkFile createFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, org.alfresco.jlan.server.filesys.FileOpenParams params)  
      void deleteDirectory​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, java.lang.String dir)  
      void deleteFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, java.lang.String name)  
      int fileExists​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, java.lang.String path)  
      void flushFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, org.alfresco.jlan.server.filesys.NetworkFile file)  
      void getDiskInformation​(org.alfresco.jlan.server.filesys.DiskDeviceContext ctx, org.alfresco.jlan.server.filesys.SrvDiskInfo diskDev)  
      ExtendedDiskInterface getDiskInterface()  
      org.alfresco.jlan.server.filesys.DiskSizeInterface getDiskSizeInterface()  
      org.alfresco.jlan.server.filesys.FileInfo getFileInformation​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, java.lang.String path)  
      org.alfresco.jlan.server.locking.FileLockingInterface getFileLockingInterface()  
      org.alfresco.jlan.server.filesys.IOCtlInterface getIoctlInterface()  
      org.alfresco.jlan.server.locking.LockManager getLockManager​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree)  
      org.alfresco.jlan.server.locking.OpLockInterface getOpLockInterface()  
      org.alfresco.jlan.server.locking.OpLockManager getOpLockManager​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree)  
      PolicyComponent getPolicyComponent()  
      void init()  
      boolean isOpLocksEnabled​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree)  
      boolean isReadOnly​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.core.DeviceContext ctx)  
      void onDeleteNode​(org.alfresco.service.cmr.repository.ChildAssociationRef oldChildAssocRef, boolean isArchived)
      Called after a node is deleted.
      void onMoveNode​(org.alfresco.service.cmr.repository.ChildAssociationRef oldChildAssocRef, org.alfresco.service.cmr.repository.ChildAssociationRef newChildAssocRef)
      Called when a node has been moved.
      org.alfresco.jlan.server.filesys.NetworkFile openFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, org.alfresco.jlan.server.filesys.FileOpenParams params)  
      org.alfresco.jlan.util.DataBuffer processIOControl​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, int ctrlCode, int fid, org.alfresco.jlan.util.DataBuffer dataBuf, boolean isFSCtrl, int filter)  
      int readFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, org.alfresco.jlan.server.filesys.NetworkFile file, byte[] buf, int bufPos, int siz, long filePos)  
      void registerContext​(org.alfresco.jlan.server.core.DeviceContext ctx)
      Register an independently created device context object for this instance of the shared device.
      void renameFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, java.lang.String oldName, java.lang.String newName)  
      long seekFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, org.alfresco.jlan.server.filesys.NetworkFile file, long pos, int typ)  
      void setDiskInterface​(ExtendedDiskInterface diskInterface)  
      void setDiskSizeInterface​(org.alfresco.jlan.server.filesys.DiskSizeInterface diskSizeInterface)  
      void setFileInfoCache​(org.alfresco.repo.cache.SimpleCache<java.io.Serializable,​org.alfresco.jlan.server.filesys.FileInfo> cache)
      Set the cache that maintains node ID-NodeRef cross referencing data
      void setFileInformation​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, java.lang.String name, org.alfresco.jlan.server.filesys.FileInfo info)  
      void setFileLockingInterface​(org.alfresco.jlan.server.locking.FileLockingInterface fileLockingInterface)  
      void setIoctlInterface​(org.alfresco.jlan.server.filesys.IOCtlInterface iocltlInterface)  
      void setOpLockInterface​(org.alfresco.jlan.server.locking.OpLockInterface opLockInterface)  
      void setPolicyComponent​(PolicyComponent policyComponent)  
      org.alfresco.jlan.server.filesys.SearchContext startSearch​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, java.lang.String searchPath, int attrib)  
      void treeClosed​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree)  
      void treeOpened​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree)  
      void truncateFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, org.alfresco.jlan.server.filesys.NetworkFile file, long siz)  
      int writeFile​(org.alfresco.jlan.server.SrvSession sess, org.alfresco.jlan.server.filesys.TreeConnection tree, org.alfresco.jlan.server.filesys.NetworkFile file, byte[] buf, int bufoff, int siz, long fileoff)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BufferedContentDiskDriver

        public BufferedContentDiskDriver()
    • Method Detail

      • init

        public void init()
      • setFileInfoCache

        public void setFileInfoCache​(org.alfresco.repo.cache.SimpleCache<java.io.Serializable,​org.alfresco.jlan.server.filesys.FileInfo> cache)
        Set the cache that maintains node ID-NodeRef cross referencing data
        Parameters:
        cache - the cache
      • getFileInformation

        public org.alfresco.jlan.server.filesys.FileInfo getFileInformation​(org.alfresco.jlan.server.SrvSession sess,
                                                                            org.alfresco.jlan.server.filesys.TreeConnection tree,
                                                                            java.lang.String path)
                                                                     throws java.io.IOException
        Specified by:
        getFileInformation in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • fileExists

        public int fileExists​(org.alfresco.jlan.server.SrvSession sess,
                              org.alfresco.jlan.server.filesys.TreeConnection tree,
                              java.lang.String path)
        Specified by:
        fileExists in interface org.alfresco.jlan.server.filesys.DiskInterface
      • createContext

        public org.alfresco.jlan.server.core.DeviceContext createContext​(java.lang.String shareName,
                                                                         org.springframework.extensions.config.ConfigElement args)
                                                                  throws org.alfresco.jlan.server.core.DeviceContextException
        Specified by:
        createContext in interface org.alfresco.jlan.server.core.DeviceInterface
        Throws:
        org.alfresco.jlan.server.core.DeviceContextException
      • treeOpened

        public void treeOpened​(org.alfresco.jlan.server.SrvSession sess,
                               org.alfresco.jlan.server.filesys.TreeConnection tree)
        Specified by:
        treeOpened in interface org.alfresco.jlan.server.core.DeviceInterface
      • treeClosed

        public void treeClosed​(org.alfresco.jlan.server.SrvSession sess,
                               org.alfresco.jlan.server.filesys.TreeConnection tree)
        Specified by:
        treeClosed in interface org.alfresco.jlan.server.core.DeviceInterface
      • processIOControl

        public org.alfresco.jlan.util.DataBuffer processIOControl​(org.alfresco.jlan.server.SrvSession sess,
                                                                  org.alfresco.jlan.server.filesys.TreeConnection tree,
                                                                  int ctrlCode,
                                                                  int fid,
                                                                  org.alfresco.jlan.util.DataBuffer dataBuf,
                                                                  boolean isFSCtrl,
                                                                  int filter)
                                                           throws org.alfresco.jlan.server.filesys.IOControlNotImplementedException,
                                                                  org.alfresco.jlan.smb.SMBException
        Specified by:
        processIOControl in interface org.alfresco.jlan.server.filesys.IOCtlInterface
        Throws:
        org.alfresco.jlan.server.filesys.IOControlNotImplementedException
        org.alfresco.jlan.smb.SMBException
      • getDiskInformation

        public void getDiskInformation​(org.alfresco.jlan.server.filesys.DiskDeviceContext ctx,
                                       org.alfresco.jlan.server.filesys.SrvDiskInfo diskDev)
                                throws java.io.IOException
        Specified by:
        getDiskInformation in interface org.alfresco.jlan.server.filesys.DiskSizeInterface
        Throws:
        java.io.IOException
      • closeFile

        public void closeFile​(org.alfresco.jlan.server.SrvSession sess,
                              org.alfresco.jlan.server.filesys.TreeConnection tree,
                              org.alfresco.jlan.server.filesys.NetworkFile param)
                       throws java.io.IOException
        Specified by:
        closeFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • createDirectory

        public void createDirectory​(org.alfresco.jlan.server.SrvSession sess,
                                    org.alfresco.jlan.server.filesys.TreeConnection tree,
                                    org.alfresco.jlan.server.filesys.FileOpenParams params)
                             throws java.io.IOException
        Specified by:
        createDirectory in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • createFile

        public org.alfresco.jlan.server.filesys.NetworkFile createFile​(org.alfresco.jlan.server.SrvSession sess,
                                                                       org.alfresco.jlan.server.filesys.TreeConnection tree,
                                                                       org.alfresco.jlan.server.filesys.FileOpenParams params)
                                                                throws java.io.IOException
        Specified by:
        createFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • deleteDirectory

        public void deleteDirectory​(org.alfresco.jlan.server.SrvSession sess,
                                    org.alfresco.jlan.server.filesys.TreeConnection tree,
                                    java.lang.String dir)
                             throws java.io.IOException
        Specified by:
        deleteDirectory in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • deleteFile

        public void deleteFile​(org.alfresco.jlan.server.SrvSession sess,
                               org.alfresco.jlan.server.filesys.TreeConnection tree,
                               java.lang.String name)
                        throws java.io.IOException
        Specified by:
        deleteFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • flushFile

        public void flushFile​(org.alfresco.jlan.server.SrvSession sess,
                              org.alfresco.jlan.server.filesys.TreeConnection tree,
                              org.alfresco.jlan.server.filesys.NetworkFile file)
                       throws java.io.IOException
        Specified by:
        flushFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • isReadOnly

        public boolean isReadOnly​(org.alfresco.jlan.server.SrvSession sess,
                                  org.alfresco.jlan.server.core.DeviceContext ctx)
                           throws java.io.IOException
        Specified by:
        isReadOnly in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • openFile

        public org.alfresco.jlan.server.filesys.NetworkFile openFile​(org.alfresco.jlan.server.SrvSession sess,
                                                                     org.alfresco.jlan.server.filesys.TreeConnection tree,
                                                                     org.alfresco.jlan.server.filesys.FileOpenParams params)
                                                              throws java.io.IOException
        Specified by:
        openFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • readFile

        public int readFile​(org.alfresco.jlan.server.SrvSession sess,
                            org.alfresco.jlan.server.filesys.TreeConnection tree,
                            org.alfresco.jlan.server.filesys.NetworkFile file,
                            byte[] buf,
                            int bufPos,
                            int siz,
                            long filePos)
                     throws java.io.IOException
        Specified by:
        readFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • renameFile

        public void renameFile​(org.alfresco.jlan.server.SrvSession sess,
                               org.alfresco.jlan.server.filesys.TreeConnection tree,
                               java.lang.String oldName,
                               java.lang.String newName)
                        throws java.io.IOException
        Specified by:
        renameFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • seekFile

        public long seekFile​(org.alfresco.jlan.server.SrvSession sess,
                             org.alfresco.jlan.server.filesys.TreeConnection tree,
                             org.alfresco.jlan.server.filesys.NetworkFile file,
                             long pos,
                             int typ)
                      throws java.io.IOException
        Specified by:
        seekFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • setFileInformation

        public void setFileInformation​(org.alfresco.jlan.server.SrvSession sess,
                                       org.alfresco.jlan.server.filesys.TreeConnection tree,
                                       java.lang.String name,
                                       org.alfresco.jlan.server.filesys.FileInfo info)
                                throws java.io.IOException
        Specified by:
        setFileInformation in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • startSearch

        public org.alfresco.jlan.server.filesys.SearchContext startSearch​(org.alfresco.jlan.server.SrvSession sess,
                                                                          org.alfresco.jlan.server.filesys.TreeConnection tree,
                                                                          java.lang.String searchPath,
                                                                          int attrib)
                                                                   throws java.io.FileNotFoundException
        Specified by:
        startSearch in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.FileNotFoundException
      • truncateFile

        public void truncateFile​(org.alfresco.jlan.server.SrvSession sess,
                                 org.alfresco.jlan.server.filesys.TreeConnection tree,
                                 org.alfresco.jlan.server.filesys.NetworkFile file,
                                 long siz)
                          throws java.io.IOException
        Specified by:
        truncateFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • writeFile

        public int writeFile​(org.alfresco.jlan.server.SrvSession sess,
                             org.alfresco.jlan.server.filesys.TreeConnection tree,
                             org.alfresco.jlan.server.filesys.NetworkFile file,
                             byte[] buf,
                             int bufoff,
                             int siz,
                             long fileoff)
                      throws java.io.IOException
        Specified by:
        writeFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Throws:
        java.io.IOException
      • registerContext

        public void registerContext​(org.alfresco.jlan.server.core.DeviceContext ctx)
                             throws org.alfresco.jlan.server.core.DeviceContextException
        Description copied from interface: ExtendedDiskInterface
        Register an independently created device context object for this instance of the shared device. Useful, e.g. when context singleton configuration managed by a container.
        Specified by:
        registerContext in interface ExtendedDiskInterface
        Parameters:
        ctx - the device context
        Throws:
        org.alfresco.jlan.server.core.DeviceContextException
      • setDiskSizeInterface

        public void setDiskSizeInterface​(org.alfresco.jlan.server.filesys.DiskSizeInterface diskSizeInterface)
      • getDiskSizeInterface

        public org.alfresco.jlan.server.filesys.DiskSizeInterface getDiskSizeInterface()
      • setIoctlInterface

        public void setIoctlInterface​(org.alfresco.jlan.server.filesys.IOCtlInterface iocltlInterface)
      • getIoctlInterface

        public org.alfresco.jlan.server.filesys.IOCtlInterface getIoctlInterface()
      • onMoveNode

        public void onMoveNode​(org.alfresco.service.cmr.repository.ChildAssociationRef oldChildAssocRef,
                               org.alfresco.service.cmr.repository.ChildAssociationRef newChildAssocRef)
        Description copied from interface: NodeServicePolicies.OnMoveNodePolicy
        Called when a node has been moved.
        Specified by:
        onMoveNode in interface NodeServicePolicies.OnMoveNodePolicy
        Parameters:
        oldChildAssocRef - the child association reference prior to the move
        newChildAssocRef - the child association reference after the move
      • onDeleteNode

        public void onDeleteNode​(org.alfresco.service.cmr.repository.ChildAssociationRef oldChildAssocRef,
                                 boolean isArchived)
        Description copied from interface: NodeServicePolicies.OnDeleteNodePolicy
        Called after a node is deleted. The reference given is for an association which has been deleted and cannot be used to retrieve node or associaton information from any of the services.
        Specified by:
        onDeleteNode in interface NodeServicePolicies.OnDeleteNodePolicy
        Parameters:
        oldChildAssocRef - the primary parent-child association of the deleted node
        isArchived - indicates whether the node has been archived rather than purged
      • setPolicyComponent

        public void setPolicyComponent​(PolicyComponent policyComponent)
      • setOpLockInterface

        public void setOpLockInterface​(org.alfresco.jlan.server.locking.OpLockInterface opLockInterface)
      • getOpLockInterface

        public org.alfresco.jlan.server.locking.OpLockInterface getOpLockInterface()
      • getOpLockManager

        public org.alfresco.jlan.server.locking.OpLockManager getOpLockManager​(org.alfresco.jlan.server.SrvSession sess,
                                                                               org.alfresco.jlan.server.filesys.TreeConnection tree)
        Specified by:
        getOpLockManager in interface org.alfresco.jlan.server.locking.OpLockInterface
      • isOpLocksEnabled

        public boolean isOpLocksEnabled​(org.alfresco.jlan.server.SrvSession sess,
                                        org.alfresco.jlan.server.filesys.TreeConnection tree)
        Specified by:
        isOpLocksEnabled in interface org.alfresco.jlan.server.locking.OpLockInterface
      • getLockManager

        public org.alfresco.jlan.server.locking.LockManager getLockManager​(org.alfresco.jlan.server.SrvSession sess,
                                                                           org.alfresco.jlan.server.filesys.TreeConnection tree)
        Specified by:
        getLockManager in interface org.alfresco.jlan.server.locking.FileLockingInterface
      • setFileLockingInterface

        public void setFileLockingInterface​(org.alfresco.jlan.server.locking.FileLockingInterface fileLockingInterface)
      • getFileLockingInterface

        public org.alfresco.jlan.server.locking.FileLockingInterface getFileLockingInterface()