Class ContentDiskDriver

  • 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.TransactionalFilesystemInterface, org.alfresco.jlan.server.locking.FileLockingInterface, org.alfresco.jlan.server.locking.OpLockInterface

    public class ContentDiskDriver
    extends AlfrescoTxDiskDriver
    implements org.alfresco.jlan.server.filesys.DiskInterface, org.alfresco.jlan.server.locking.FileLockingInterface, org.alfresco.jlan.server.locking.OpLockInterface, org.alfresco.jlan.server.filesys.DiskSizeInterface
    Content repository filesystem driver class

    Provides a filesystem interface for various protocols such as SMB/CIFS and FTP.

    Author:
    gkspencer
    • Constructor Detail

      • ContentDiskDriver

        public ContentDiskDriver​(CifsHelper cifsHelper)
        Class constructor
        Parameters:
        cifsHelper - to connect to the repository services
    • Method Detail

      • init

        public void init()
      • getCifsHelper

        public final CifsHelper getCifsHelper()
        Return the CIFS helper
        Returns:
        CifsHelper
      • getAuthenticationService

        public final AuthenticationService getAuthenticationService()
        Return the authentication service
        Returns:
        AuthenticationService
      • getAuthenticationContext

        public final AuthenticationContext getAuthenticationContext()
        Return the authentication context
        Returns:
        AuthenticationContext
      • getNodeService

        public final org.alfresco.service.cmr.repository.NodeService getNodeService()
        Return the node service
        Returns:
        NodeService
      • getCheckOutCheckInService

        public CheckOutCheckInService getCheckOutCheckInService()
        Returns:
        service to provide information on check-in and check-out
      • getContentService

        public final ContentService getContentService()
        Return the content service
        Returns:
        ContentService
      • getNamespaceService

        public final org.alfresco.service.namespace.NamespaceService getNamespaceService()
        Return the namespace service
        Returns:
        NamespaceService
      • getSearchService

        public final org.alfresco.service.cmr.search.SearchService getSearchService()
        Return the search service
        Returns:
        SearchService
      • getFileFolderService

        public final FileFolderService getFileFolderService()
        Return the file folder service
        Returns:
        FileFolderService
      • getPermissionService

        public final org.alfresco.service.cmr.security.PermissionService getPermissionService()
        Return the permission service
        Returns:
        PermissionService
      • getNodeArchiveService

        public final NodeArchiveService getNodeArchiveService()
        Return the node archive service
      • getLockService

        public final LockService getLockService()
        Return the lock service
        Returns:
        LockService
      • getPolicyFilter

        public BehaviourFilter getPolicyFilter()
        Get the policy behaviour filter, used to inhibit versioning on a per transaction basis
      • getDictionaryService

        public final org.alfresco.service.cmr.dictionary.DictionaryService getDictionaryService()
        Return the dictionary service
        Returns:
        DictionaryService
      • getOwnableService

        public final OwnableService getOwnableService()
        Get the ownable service
        Returns:
        OwnableService
      • setContentService

        public void setContentService​(ContentService contentService)
        Parameters:
        contentService - the content service
      • setNamespaceService

        public void setNamespaceService​(org.alfresco.service.namespace.NamespaceService namespaceService)
        Parameters:
        namespaceService - the namespace service
      • setNodeService

        public void setNodeService​(org.alfresco.service.cmr.repository.NodeService nodeService)
        Parameters:
        nodeService - the node service
      • setCheckOutCheckInService

        public void setCheckOutCheckInService​(CheckOutCheckInService checkOutCheckInService)
        Parameters:
        checkOutCheckInService - used to check for checked out nodes
      • setSearchService

        public void setSearchService​(org.alfresco.service.cmr.search.SearchService searchService)
        Parameters:
        searchService - the search service
      • setPermissionService

        public void setPermissionService​(org.alfresco.service.cmr.security.PermissionService permissionService)
        Set the permission service
        Parameters:
        permissionService - PermissionService
      • setAuthenticationContext

        public void setAuthenticationContext​(AuthenticationContext authContext)
        Set the authentication context
        Parameters:
        authContext - AuthenticationContext
      • setAuthenticationService

        public void setAuthenticationService​(AuthenticationService authService)
        Set the authentication service
        Parameters:
        authService - AuthenticationService
      • setSysAdminParams

        public void setSysAdminParams​(SysAdminParams sysAdminParams)
        Sets the sys admin params.
        Parameters:
        sysAdminParams - the sys admin params
      • setFileFolderService

        public void setFileFolderService​(FileFolderService fileService)
        Set the file folder service
        Parameters:
        fileService - FileFolderService
      • setMimetypeService

        public void setMimetypeService​(org.alfresco.service.cmr.repository.MimetypeService mimetypeService)
        Parameters:
        mimetypeService - service for helping with mimetypes and encoding
      • setNodeMonitorFactory

        public void setNodeMonitorFactory​(NodeMonitorFactory nodeMonitorFactory)
        Set the node monitor factory
        Parameters:
        nodeMonitorFactory - NodeMonitorFactory
      • setNodeArchiveService

        public void setNodeArchiveService​(NodeArchiveService nodeArchiveService)
        Set the node archive service
        Parameters:
        nodeArchiveService - nodeArchiveService
      • setLockService

        public void setLockService​(LockService lockService)
        Set the lock service
        Parameters:
        lockService - LockService
      • setPolicyFilter

        public void setPolicyFilter​(BehaviourFilter policyFilter)
        Set the policy behaviour filter, used to inhibit versioning on a per transaction basis
        Parameters:
        policyFilter - PolicyBehaviourFilter
      • setDictionaryService

        public void setDictionaryService​(org.alfresco.service.cmr.dictionary.DictionaryService dictionaryService)
        Set the dictionary service
        Parameters:
        dictionaryService - DictionaryService
      • setOwnableService

        public void setOwnableService​(OwnableService ownableService)
        Set the ownable servive
        Parameters:
        ownableService - OwnableService
      • setRenameCSVShufflePattern

        public void setRenameCSVShufflePattern​(Pattern renameCSVShufflePattern)
        Set the regular expression that will be applied to CSV files during renames. MNT-211
        Parameters:
        renameCSVShufflePattern - a regular expression CSV filename match
      • createContext

        public org.alfresco.jlan.server.core.DeviceContext createContext​(String deviceName,
                                                                         org.springframework.extensions.config.ConfigElement cfg)
                                                                  throws org.alfresco.jlan.server.core.DeviceContextException
        Parse and validate the parameter string and create a device context object for this instance of the shared device. The same DeviceInterface implementation may be used for multiple shares.

        WARNING: side effect, may commit or roll back current user transaction context.

        Specified by:
        createContext in interface org.alfresco.jlan.server.core.DeviceInterface
        Parameters:
        deviceName - The name of the device
        cfg - ConfigElement the configuration of the device context.
        Returns:
        DeviceContext
        Throws:
        org.alfresco.jlan.server.core.DeviceContextException
      • registerContext

        public void registerContext​(org.alfresco.jlan.server.core.DeviceContext ctx)
                             throws org.alfresco.jlan.server.core.DeviceContextException
        Registers a device context object for this instance of the shared device. The same DeviceInterface implementation may be used for multiple shares. WARNING: side effect, will commit or roll back current user transaction context.
        Specified by:
        registerContext in interface ExtendedDiskInterface
        Overrides:
        registerContext in class AlfrescoDiskDriver
        Parameters:
        ctx - the context
        Throws:
        org.alfresco.jlan.server.core.DeviceContextException
      • isReadOnly

        public boolean isReadOnly​(org.alfresco.jlan.server.SrvSession sess,
                                  org.alfresco.jlan.server.core.DeviceContext ctx)
                           throws IOException
        Determine if the disk device is read-only.
        Specified by:
        isReadOnly in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        ctx - Device context
        Returns:
        boolean
        Throws:
        IOException - If an error occurs.
      • getFileInformation

        public org.alfresco.jlan.server.filesys.FileInfo getFileInformation​(org.alfresco.jlan.server.SrvSession session,
                                                                            org.alfresco.jlan.server.filesys.TreeConnection tree,
                                                                            String path)
                                                                     throws IOException
        Get the file information for the specified file.
        Specified by:
        getFileInformation in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        session - Server session
        tree - Tree connection
        path - File name/path that information is required for.
        Returns:
        File information if valid, else null
        Throws:
        IOException - The exception description.
      • startSearch

        public org.alfresco.jlan.server.filesys.SearchContext startSearch​(org.alfresco.jlan.server.SrvSession sess,
                                                                          org.alfresco.jlan.server.filesys.TreeConnection tree,
                                                                          String searchPath,
                                                                          int attributes)
                                                                   throws FileNotFoundException
        Start a new search on the filesystem using the specified searchPath that may contain wildcards.
        Specified by:
        startSearch in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        searchPath - File(s) to search for, may include wildcards.
        attributes - Attributes of the file(s) to search for, see class SMBFileAttribute.
        Returns:
        SearchContext
        Throws:
        FileNotFoundException - If the search could not be started.
      • fileExists

        public int fileExists​(org.alfresco.jlan.server.SrvSession sess,
                              org.alfresco.jlan.server.filesys.TreeConnection tree,
                              String name)
        Check if the specified file exists, and whether it is a file or directory.

        WARNING: side effect, commit or roll back current user transaction context. Current transaction becomes read only.

        Specified by:
        fileExists in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        name - the path of the file
        Returns:
        FileStatus (0: NotExist, 1 : FileExist, 2: DirectoryExists)
        See Also:
        FileStatus
      • 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 IOException
        Open a file or folder
        Specified by:
        openFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - SrvSession
        tree - TreeConnection
        params - FileOpenParams
        Returns:
        NetworkFile
        Throws:
        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 IOException
        Create a new file on the file system.

        WARNING : side effect - closes current transaction context.

        Specified by:
        createFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        params - File create parameters
        Returns:
        NetworkFile
        Throws:
        IOException - If an error occurs.
      • 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 IOException
        Create a new directory on this file system.

        WARNING : side effect - closes current transaction context.

        Specified by:
        createDirectory in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection.
        params - Directory create parameters
        Throws:
        IOException - If an error occurs.
      • deleteDirectory

        public void deleteDirectory​(org.alfresco.jlan.server.SrvSession sess,
                                    org.alfresco.jlan.server.filesys.TreeConnection tree,
                                    String dir)
                             throws IOException
        Delete the directory from the filesystem.
        Specified by:
        deleteDirectory in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        dir - Directory name.
        Throws:
        IOException - The exception description.
      • 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 IOException
        Flush any buffered output for the specified file.
        Specified by:
        flushFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        file - Network file context.
        Throws:
        IOException - The exception description.
      • closeFile

        public void closeFile​(org.alfresco.jlan.server.SrvSession sess,
                              org.alfresco.jlan.server.filesys.TreeConnection tree,
                              org.alfresco.jlan.server.filesys.NetworkFile file)
                       throws IOException
        Close the file.
        Specified by:
        closeFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection.
        file - Network file context.
        Throws:
        IOException - If an error occurs.
      • deleteFile

        public void deleteFile​(org.alfresco.jlan.server.SrvSession sess,
                               org.alfresco.jlan.server.filesys.TreeConnection tree,
                               String name)
                        throws IOException
        Delete the specified file.
        Specified by:
        deleteFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        name - NetworkFile
        Throws:
        IOException - The exception description.
      • renameFile

        public void renameFile​(org.alfresco.jlan.server.SrvSession sess,
                               org.alfresco.jlan.server.filesys.TreeConnection tree,
                               String oldName,
                               String newName)
                        throws IOException
        Rename the specified file.
        Specified by:
        renameFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        oldName - java.lang.String
        newName - java.lang.String
        Throws:
        IOException - The exception description.
      • setFileInformation

        public void setFileInformation​(org.alfresco.jlan.server.SrvSession sess,
                                       org.alfresco.jlan.server.filesys.TreeConnection tree,
                                       String name,
                                       org.alfresco.jlan.server.filesys.FileInfo info)
                                throws IOException
        Set file information
        Specified by:
        setFileInformation in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - SrvSession
        tree - TreeConnection
        name - String
        info - FileInfo
        Throws:
        IOException
      • 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 size)
                          throws IOException
        Truncate a file to the specified size
        Specified by:
        truncateFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        file - Network file details
        size - New file length
        Throws:
        IOException - The exception description.
      • 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[] buffer,
                            int bufferPosition,
                            int size,
                            long fileOffset)
                     throws IOException
        Read a block of data from the specified file.
        Specified by:
        readFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Session details
        tree - Tree connection
        file - Network file
        buffer - Buffer to return data to
        bufferPosition - Starting position in the return buffer
        size - Maximum size of data to return
        fileOffset - File offset to read data
        Returns:
        Number of bytes read
        Throws:
        IOException - The exception description.
      • 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 IOException
        Seek to the specified file position.
        Specified by:
        seekFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        file - Network file.
        pos - Position to seek to.
        typ - Seek type.
        Returns:
        New file position, relative to the start of file.
        Throws:
        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[] buffer,
                             int bufferOffset,
                             int size,
                             long fileOffset)
                      throws IOException
        Write a block of data to the file.
        Specified by:
        writeFile in interface org.alfresco.jlan.server.filesys.DiskInterface
        Parameters:
        sess - Server session
        tree - Tree connection
        file - Network file details
        buffer - byte[] Data to be written
        bufferOffset - Offset within the buffer that the data starts
        size - int Data length
        fileOffset - Position within the file that the data is to be written.
        Returns:
        Number of bytes actually written
        Throws:
        IOException - The exception description.
      • getNodeForPath

        public org.alfresco.service.cmr.repository.NodeRef getNodeForPath​(org.alfresco.jlan.server.filesys.TreeConnection tree,
                                                                          String path)
                                                                   throws FileNotFoundException
        Get the node for the specified path
        Parameters:
        tree - TreeConnection
        path - String
        Returns:
        NodeRef
        Throws:
        FileNotFoundException
      • getPathForNode

        public String getPathForNode​(org.alfresco.jlan.server.filesys.TreeConnection tree,
                                     org.alfresco.service.cmr.repository.NodeRef nodeRef)
                              throws FileNotFoundException
        Convert a node into a share relative path
        Throws:
        FileNotFoundException
      • getStateForPath

        public org.alfresco.jlan.server.filesys.cache.FileState getStateForPath​(org.alfresco.jlan.server.filesys.TreeConnection tree,
                                                                                String path)
                                                                         throws FileNotFoundException
        Get the file state for the specified path
        Parameters:
        tree - TreeConnection
        path - String
        Returns:
        FileState
        Throws:
        FileNotFoundException
      • treeClosed

        public void treeClosed​(org.alfresco.jlan.server.SrvSession sess,
                               org.alfresco.jlan.server.filesys.TreeConnection tree)
        Connection opened to this disk device
        Specified by:
        treeClosed in interface org.alfresco.jlan.server.core.DeviceInterface
        Parameters:
        sess - Server session
        tree - Tree connection
      • treeOpened

        public void treeOpened​(org.alfresco.jlan.server.SrvSession sess,
                               org.alfresco.jlan.server.filesys.TreeConnection tree)
        Connection closed to this device
        Specified by:
        treeOpened in interface org.alfresco.jlan.server.core.DeviceInterface
        Parameters:
        sess - Server session
        tree - Tree connection
      • getLockManager

        public org.alfresco.jlan.server.locking.LockManager getLockManager​(org.alfresco.jlan.server.SrvSession sess,
                                                                           org.alfresco.jlan.server.filesys.TreeConnection tree)
        Return the lock manager used by this filesystem
        Specified by:
        getLockManager in interface org.alfresco.jlan.server.locking.FileLockingInterface
        Parameters:
        sess - SrvSession
        tree - TreeConnection
        Returns:
        LockManager
      • getOpLockManager

        public org.alfresco.jlan.server.locking.OpLockManager getOpLockManager​(org.alfresco.jlan.server.SrvSession sess,
                                                                               org.alfresco.jlan.server.filesys.TreeConnection tree)
        Return the oplock manager implementation associated with this virtual filesystem
        Specified by:
        getOpLockManager in interface org.alfresco.jlan.server.locking.OpLockInterface
        Parameters:
        sess - SrvSession
        tree - TreeConnection
        Returns:
        OpLockManager
      • isOpLocksEnabled

        public boolean isOpLocksEnabled​(org.alfresco.jlan.server.SrvSession sess,
                                        org.alfresco.jlan.server.filesys.TreeConnection tree)
        Enable/disable oplock support
        Specified by:
        isOpLocksEnabled in interface org.alfresco.jlan.server.locking.OpLockInterface
        Parameters:
        sess - SrvSession
        tree - TreeConnection
        Returns:
        boolean
      • getDiskInformation

        public void getDiskInformation​(org.alfresco.jlan.server.filesys.DiskDeviceContext ctx,
                                       org.alfresco.jlan.server.filesys.SrvDiskInfo diskDev)
                                throws IOException
        Get the disk information for this shared disk device.
        Specified by:
        getDiskInformation in interface org.alfresco.jlan.server.filesys.DiskSizeInterface
        Parameters:
        ctx - DiskDeviceContext
        diskDev - SrvDiskInfo
        Throws:
        IOException
      • setActionService

        public void setActionService​(ActionService actionService)