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
  • Field Details

  • Constructor Details

    • ContentDiskDriver

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

    • 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 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 NamespaceService getNamespaceService()
      Return the namespace service
      Returns:
      NamespaceService
    • getSearchService

      public final SearchService getSearchService()
      Return the search service
      Returns:
      SearchService
    • getFileFolderService

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

      public final 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 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(NamespaceService namespaceService)
      Parameters:
      namespaceService - the namespace service
    • setNodeService

      public void setNodeService(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(SearchService searchService)
      Parameters:
      searchService - the search service
    • setPermissionService

      public void setPermissionService(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(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(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 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, 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)
    • getActionService

      public ActionService getActionService()