Search in sources :

Example 1 with FilesystemsConfigSection

use of org.alfresco.jlan.server.filesys.FilesystemsConfigSection in project alfresco-repository by Alfresco.

the class ServerConfigurationBean method processFilesystemsConfig.

/**
 * Process the filesystems configuration
 */
protected void processFilesystemsConfig() {
    // Create the filesystems configuration section
    FilesystemsConfigSection fsysConfig = new FilesystemsConfigSection(this);
    // Access the security configuration section
    SecurityConfigSection secConfig = (SecurityConfigSection) getConfigSection(SecurityConfigSection.SectionName);
    if (this.filesystemContexts != null) {
        for (DeviceContext filesystem : this.filesystemContexts) {
            try {
                // Check the filesystem type and use the appropriate driver
                DiskSharedDevice filesys = null;
                // Create a new filesystem driver instance and register a context for
                // the new filesystem
                ExtendedDiskInterface filesysDriver = getRepoDiskInterface();
                ContentContext filesysContext = (ContentContext) filesystem;
                // Create state cache here and inject
                StandaloneFileStateCache standaloneCache = new StandaloneFileStateCache();
                standaloneCache.initializeCache(new GenericConfigElement(""), this);
                filesysContext.setStateCache(standaloneCache);
                if (filesysContext.hasStateCache()) {
                    // Register the state cache with the reaper thread
                    // has many side effects including initialisation of the cache
                    fsysConfig.addFileStateCache(filesystem.getDeviceName(), filesysContext.getStateCache());
                    // Create the lock manager for the context.
                    FileStateLockManager lockMgr = new FileStateLockManager(filesysContext.getStateCache());
                    filesysContext.setLockManager(lockMgr);
                    filesysContext.setOpLockManager(lockMgr);
                }
                if (!ftpConfigBean.getServerEnabled() && isContentDiskDriver2(filesysDriver)) {
                    ((ContentContext) filesystem).setDisableNodeMonitor(true);
                }
                filesysDriver.registerContext(filesystem);
                // Check if an access control list has been specified
                AccessControlList acls = null;
                AccessControlListBean accessControls = filesysContext.getAccessControlList();
                if (accessControls != null) {
                    // Parse the access control list
                    acls = accessControls.toAccessControlList(secConfig);
                } else if (secConfig.hasGlobalAccessControls()) {
                    // Use the global access control list for this disk share
                    acls = secConfig.getGlobalAccessControls();
                }
                // Create the shared filesystem
                filesys = new DiskSharedDevice(filesystem.getDeviceName(), filesysDriver, filesysContext);
                filesys.setConfiguration(this);
                // Add any access controls to the share
                filesys.setAccessControlList(acls);
                if (filesysContext.getDisableChangeNotifications() == false)
                    filesysContext.enableChangeHandler(true);
                // Start the filesystem
                filesysContext.startFilesystem(filesys);
                // Add the new filesystem
                fsysConfig.addShare(filesys);
            } catch (DeviceContextException ex) {
                throw new AlfrescoRuntimeException("Error creating filesystem " + filesystem.getDeviceName(), ex);
            } catch (InvalidConfigurationException ex) {
                throw new AlfrescoRuntimeException(ex.getMessage(), ex);
            }
        }
    } else {
        // No filesystems defined
        logger.warn("No filesystems defined");
    }
// home folder share mapper could be declared in security config
}
Also used : AccessControlList(org.alfresco.jlan.server.auth.acl.AccessControlList) DeviceContextException(org.alfresco.jlan.server.core.DeviceContextException) SecurityConfigSection(org.alfresco.jlan.server.config.SecurityConfigSection) GenericConfigElement(org.springframework.extensions.config.element.GenericConfigElement) ExtendedDiskInterface(org.alfresco.filesys.alfresco.ExtendedDiskInterface) StandaloneFileStateCache(org.alfresco.jlan.server.filesys.cache.StandaloneFileStateCache) AccessControlListBean(org.alfresco.filesys.config.acl.AccessControlListBean) InvalidConfigurationException(org.alfresco.jlan.server.config.InvalidConfigurationException) FilesystemsConfigSection(org.alfresco.jlan.server.filesys.FilesystemsConfigSection) DeviceContext(org.alfresco.jlan.server.core.DeviceContext) FileStateLockManager(org.alfresco.jlan.server.filesys.cache.FileStateLockManager) AlfrescoRuntimeException(org.alfresco.error.AlfrescoRuntimeException) ContentContext(org.alfresco.filesys.repo.ContentContext) DiskSharedDevice(org.alfresco.jlan.server.filesys.DiskSharedDevice)

Example 2 with FilesystemsConfigSection

use of org.alfresco.jlan.server.filesys.FilesystemsConfigSection in project alfresco-repository by Alfresco.

the class ServerConfigurationBean method initialiseRuntimeContext.

/**
 * Initialise a runtime context - not configured through spring e.g MT.
 *
 * TODO - what about desktop actions etc?
 *
 * @param uniqueName String
 * @param diskCtx AlfrescoContext
 */
public void initialiseRuntimeContext(String uniqueName, AlfrescoContext diskCtx) {
    logger.debug("initialiseRuntimeContext" + diskCtx);
    if (diskCtx.getStateCache() == null) {
        // Set the state cache, use a hard coded standalone cache for now
        FilesystemsConfigSection filesysConfig = (FilesystemsConfigSection) this.getConfigSection(FilesystemsConfigSection.SectionName);
        if (filesysConfig != null) {
            try {
                // Create a standalone state cache
                StandaloneFileStateCache standaloneCache = new StandaloneFileStateCache();
                standaloneCache.initializeCache(new GenericConfigElement(""), this);
                filesysConfig.addFileStateCache(diskCtx.getDeviceName(), standaloneCache);
                diskCtx.setStateCache(standaloneCache);
                // Register the state cache with the reaper thread
                // has many side effects including initialisation of the cache
                filesysConfig.addFileStateCache(diskCtx.getShareName(), diskCtx.getStateCache());
                FileStateLockManager lockMgr = new FileStateLockManager(diskCtx.getStateCache());
                diskCtx.setLockManager(lockMgr);
                diskCtx.setOpLockManager(lockMgr);
            } catch (InvalidConfigurationException ex) {
                throw new AlfrescoRuntimeException("Failed to initialize standalone state cache for " + diskCtx.getDeviceName());
            }
        }
    }
}
Also used : FilesystemsConfigSection(org.alfresco.jlan.server.filesys.FilesystemsConfigSection) GenericConfigElement(org.springframework.extensions.config.element.GenericConfigElement) StandaloneFileStateCache(org.alfresco.jlan.server.filesys.cache.StandaloneFileStateCache) FileStateLockManager(org.alfresco.jlan.server.filesys.cache.FileStateLockManager) AlfrescoRuntimeException(org.alfresco.error.AlfrescoRuntimeException) InvalidConfigurationException(org.alfresco.jlan.server.config.InvalidConfigurationException)

Aggregations

AlfrescoRuntimeException (org.alfresco.error.AlfrescoRuntimeException)2 InvalidConfigurationException (org.alfresco.jlan.server.config.InvalidConfigurationException)2 FilesystemsConfigSection (org.alfresco.jlan.server.filesys.FilesystemsConfigSection)2 FileStateLockManager (org.alfresco.jlan.server.filesys.cache.FileStateLockManager)2 StandaloneFileStateCache (org.alfresco.jlan.server.filesys.cache.StandaloneFileStateCache)2 GenericConfigElement (org.springframework.extensions.config.element.GenericConfigElement)2 ExtendedDiskInterface (org.alfresco.filesys.alfresco.ExtendedDiskInterface)1 AccessControlListBean (org.alfresco.filesys.config.acl.AccessControlListBean)1 ContentContext (org.alfresco.filesys.repo.ContentContext)1 AccessControlList (org.alfresco.jlan.server.auth.acl.AccessControlList)1 SecurityConfigSection (org.alfresco.jlan.server.config.SecurityConfigSection)1 DeviceContext (org.alfresco.jlan.server.core.DeviceContext)1 DeviceContextException (org.alfresco.jlan.server.core.DeviceContextException)1 DiskSharedDevice (org.alfresco.jlan.server.filesys.DiskSharedDevice)1