Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 62156 invoked from network); 22 Aug 2008 22:29:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 22 Aug 2008 22:29:58 -0000 Received: (qmail 61187 invoked by uid 500); 22 Aug 2008 22:29:57 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 61096 invoked by uid 500); 22 Aug 2008 22:29:57 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 61087 invoked by uid 99); 22 Aug 2008 22:29:56 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Aug 2008 15:29:56 -0700 X-ASF-Spam-Status: No, hits=-1998.9 required=10.0 tests=ALL_TRUSTED,FB_GET_MEDS X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Aug 2008 22:29:00 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 2969B238889E; Fri, 22 Aug 2008 15:29:30 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r688207 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core: ./ config/ fs/ Date: Fri, 22 Aug 2008 22:29:29 -0000 To: commits@jackrabbit.apache.org From: jukka@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080822222930.2969B238889E@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jukka Date: Fri Aug 22 15:29:28 2008 New Revision: 688207 URL: http://svn.apache.org/viewvc?rev=688207&view=rev Log: JCR-1438: Replace Config classes with factories Replaced FileSystemConfig with FileSystemFactory. Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/FileSystemFactory.java Removed: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/FileSystemConfig.java Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/SearchConfig.java jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/VersioningConfig.java jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/WorkspaceConfig.java Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=688207&r1=688206&r2=688207&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java Fri Aug 22 15:29:28 2008 @@ -32,7 +32,6 @@ import org.apache.jackrabbit.core.cluster.UpdateEventListener; import org.apache.jackrabbit.core.config.ClusterConfig; import org.apache.jackrabbit.core.config.DataStoreConfig; -import org.apache.jackrabbit.core.config.FileSystemConfig; import org.apache.jackrabbit.core.config.PersistenceManagerConfig; import org.apache.jackrabbit.core.config.RepositoryConfig; import org.apache.jackrabbit.core.config.SecurityManagerConfig; @@ -248,7 +247,7 @@ repLock.acquire(); // setup file systems - repStore = repConfig.getFileSystemConfig().createFileSystem(); + repStore = repConfig.getFileSystem(); String fsRootPath = "/meta"; try { if (!repStore.exists(fsRootPath) || !repStore.isFolder(fsRootPath)) { @@ -423,7 +422,7 @@ throws RepositoryException { - FileSystem fs = vConfig.getFileSystemConfig().createFileSystem(); + FileSystem fs = vConfig.getFileSystem(); PersistenceManager pm = createPersistenceManager(vConfig.getHomeDir(), fs, vConfig.getPersistenceManagerConfig(), @@ -1836,8 +1835,7 @@ * @throws RepositoryException if an error occurs. */ protected void doInitialize() throws RepositoryException { - FileSystemConfig fsConfig = config.getFileSystemConfig(); - fs = fsConfig.createFileSystem(); + fs = config.getFileSystem(); persistMgr = createPersistenceManager(new File(config.getHomeDir()), fs, Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java?rev=688207&r1=688206&r2=688207&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java Fri Aug 22 15:29:28 2008 @@ -187,11 +187,7 @@ NodeId rootNodeId, SearchManager parentMgr, NodeId excludedNodeId) throws RepositoryException { - if (config.getFileSystemConfig() != null) { - fs = config.getFileSystemConfig().createFileSystem(); - } else { - fs = null; - } + this.fs = config.getFileSystem(); this.config = config; this.ntReg = ntReg; this.nsReg = nsReg; Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java?rev=688207&r1=688206&r2=688207&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java Fri Aug 22 15:29:28 2008 @@ -19,12 +19,14 @@ import org.apache.commons.io.IOUtils; import org.apache.jackrabbit.core.fs.FileSystem; import org.apache.jackrabbit.core.fs.FileSystemException; +import org.apache.jackrabbit.core.fs.FileSystemFactory; import org.apache.jackrabbit.core.fs.FileSystemPathUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Element; import org.xml.sax.InputSource; +import javax.jcr.RepositoryException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; @@ -59,7 +61,7 @@ * addition the workspace configuration object keeps track of all configured * workspaces. */ -public class RepositoryConfig { +public class RepositoryConfig implements FileSystemFactory { /** the default logger */ private static Logger log = LoggerFactory.getLogger(RepositoryConfig.class); @@ -161,9 +163,9 @@ private final SecurityConfig sec; /** - * Repository file system configuration. + * Repository file system factory. */ - private final FileSystemConfig fsc; + private final FileSystemFactory fsf; /** * Name of the default workspace. @@ -228,7 +230,7 @@ * * @param home repository home directory * @param sec the security configuration - * @param fsc file system configuration + * @param fsf file system factory * @param workspaceDirectory workspace root directory * @param workspaceConfigDirectory optional workspace configuration directory * @param defaultWorkspace name of the default workspace @@ -240,7 +242,8 @@ * @param dataStoreConfig configuration for data store * @param parser configuration parser */ - public RepositoryConfig(String home, SecurityConfig sec, FileSystemConfig fsc, + public RepositoryConfig( + String home, SecurityConfig sec, FileSystemFactory fsf, String workspaceDirectory, String workspaceConfigDirectory, String defaultWorkspace, int workspaceMaxIdleTime, Element template, VersioningConfig vc, SearchConfig sc, @@ -248,7 +251,7 @@ workspaces = new HashMap(); this.home = home; this.sec = sec; - this.fsc = fsc; + this.fsf = fsf; this.workspaceDirectory = workspaceDirectory; this.workspaceConfigDirectory = workspaceConfigDirectory; this.workspaceMaxIdleTime = workspaceMaxIdleTime; @@ -283,34 +286,33 @@ // Get all workspace subdirectories if (workspaceConfigDirectory != null) { - // a configuration directoy had been specified; search for + // a configuration directory had been specified; search for // workspace configurations in virtual repository file system // rather than in physical workspace root directory on disk - FileSystem fs = fsc.createFileSystem(); try { - if (!fs.exists(workspaceConfigDirectory)) { - fs.createFolder(workspaceConfigDirectory); - } else { - String[] dirNames = fs.listFolders(workspaceConfigDirectory); - for (int i = 0; i < dirNames.length; i++) { - String configDir = workspaceConfigDirectory - + FileSystem.SEPARATOR + dirNames[i]; - WorkspaceConfig wc = loadWorkspaceConfig(fs, configDir); - if (wc != null) { - addWorkspaceConfig(wc); + FileSystem fs = fsf.getFileSystem(); + try { + if (!fs.exists(workspaceConfigDirectory)) { + fs.createFolder(workspaceConfigDirectory); + } else { + String[] dirNames = fs.listFolders(workspaceConfigDirectory); + for (int i = 0; i < dirNames.length; i++) { + String configDir = workspaceConfigDirectory + + FileSystem.SEPARATOR + dirNames[i]; + WorkspaceConfig wc = loadWorkspaceConfig(fs, configDir); + if (wc != null) { + addWorkspaceConfig(wc); + } } - } + } + } finally { + fs.close(); } - } catch (FileSystemException e) { + } catch (Exception e) { throw new ConfigurationException( "error while loading workspace configurations from path " + workspaceConfigDirectory, e); - } finally { - try { - fs.close(); - } catch (FileSystemException ignore) { - } } } else { // search for workspace configurations in physical workspace root @@ -482,7 +484,11 @@ // a configuration directoy had been specified; // workspace configurations are maintained in // virtual repository file system - virtualFS = fsc.createFileSystem(); + try { + virtualFS = fsf.getFileSystem(); + } catch (RepositoryException e) { + throw new ConfigurationException("File system configuration error", e); + } } else { // workspace configurations are maintained on disk virtualFS = null; @@ -621,12 +627,13 @@ } /** - * Returns the repository file system configuration. + * Creates and returns the configured repository file system. * - * @return file system configuration + * @return the configured {@link FileSystem} + * @throws RepositoryException if the file system can not be created */ - public FileSystemConfig getFileSystemConfig() { - return fsc; + public FileSystem getFileSystem() throws RepositoryException { + return fsf.getFileSystem(); } /** Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java?rev=688207&r1=688206&r2=688207&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfigurationParser.java Fri Aug 22 15:29:28 2008 @@ -16,6 +16,9 @@ */ package org.apache.jackrabbit.core.config; +import org.apache.jackrabbit.core.fs.FileSystem; +import org.apache.jackrabbit.core.fs.FileSystemException; +import org.apache.jackrabbit.core.fs.FileSystemFactory; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -24,6 +27,8 @@ import java.io.File; import java.util.Properties; +import javax.jcr.RepositoryException; + /** * Configuration parser. This class is used to parse the repository and * workspace configuration files. @@ -212,8 +217,7 @@ String home = getVariables().getProperty(REPOSITORY_HOME_VARIABLE); // File system implementation - FileSystemConfig fsc = - new FileSystemConfig(parseBeanConfig(root, FILE_SYSTEM_ELEMENT)); + FileSystemFactory fsf = getFileSystemFactory(root, FILE_SYSTEM_ELEMENT); // Security configuration and access manager implementation Element security = getElement(root, SECURITY_ELEMENT); @@ -248,7 +252,7 @@ // Optional data store configuration DataStoreConfig dsc = parseDataStoreConfig(root); - return new RepositoryConfig(home, securityConfig, fsc, + return new RepositoryConfig(home, securityConfig, fsf, workspaceDirectory, workspaceConfigDirectory, defaultWorkspace, maxIdleTime, template, vc, sc, cc, dsc, this); } @@ -412,8 +416,8 @@ RepositoryConfigurationParser tmpParser = createSubParser(tmpVariables); // File system implementation - FileSystemConfig fsc = new FileSystemConfig( - tmpParser.parseBeanConfig(root, FILE_SYSTEM_ELEMENT)); + FileSystemFactory fsf = + tmpParser.getFileSystemFactory(root, FILE_SYSTEM_ELEMENT); // Persistence manager implementation PersistenceManagerConfig pmc = tmpParser.parsePersistenceManagerConfig(root); @@ -427,7 +431,7 @@ // workspace specific security configuration WorkspaceSecurityConfig workspaceSecurityConfig = tmpParser.parseWorkspaceSecurityConfig(root); - return new WorkspaceConfig(home, name, clustered, fsc, pmc, sc, ismLockingConfig, workspaceSecurityConfig); + return new WorkspaceConfig(home, name, clustered, fsf, pmc, sc, ismLockingConfig, workspaceSecurityConfig); } /** @@ -474,13 +478,12 @@ Properties parameters = parseParameters(element); // Optional file system implementation - FileSystemConfig fsc = null; + FileSystemFactory fsf = null; if (getElement(element, FILE_SYSTEM_ELEMENT, false) != null) { - fsc = new FileSystemConfig( - parseBeanConfig(element, FILE_SYSTEM_ELEMENT)); + fsf = getFileSystemFactory(element, FILE_SYSTEM_ELEMENT); } - return new SearchConfig(className, parameters, fsc); + return new SearchConfig(className, parameters, fsf); } } return null; @@ -585,8 +588,8 @@ replaceVariables(getAttribute(element, ROOT_PATH_ATTRIBUTE)); // File system implementation - FileSystemConfig fsc = new FileSystemConfig( - parseBeanConfig(element, FILE_SYSTEM_ELEMENT)); + FileSystemFactory fsf = + getFileSystemFactory(element, FILE_SYSTEM_ELEMENT); // Persistence manager implementation PersistenceManagerConfig pmc = parsePersistenceManagerConfig(element); @@ -594,7 +597,7 @@ // Item state manager locking configuration (optional) ISMLockingConfig ismLockingConfig = parseISMLockingConfig(element); - return new VersioningConfig(home, fsc, pmc, ismLockingConfig); + return new VersioningConfig(home, fsf, pmc, ismLockingConfig); } /** @@ -717,4 +720,34 @@ return new RepositoryConfigurationParser(props); } + /** + * Creates and returns a factory object that creates {@link FileSystem} + * instances based on the bean configuration at the named element. + * + * @param parent parent element + * @param name name of the bean configuration element + * @return file system factory + * @throws ConfigurationException if the bean configuration is invalid + */ + private FileSystemFactory getFileSystemFactory(Element parent, String name) + throws ConfigurationException { + final BeanConfig config = parseBeanConfig(parent, name); + return new FileSystemFactory() { + public FileSystem getFileSystem() throws RepositoryException { + try { + FileSystem fs = (FileSystem) config.newInstance(); + fs.init(); + return fs; + } catch (ClassCastException e) { + throw new RepositoryException( + "Invalid file system implementation class: " + + config.getClassName(), e); + } catch (FileSystemException e) { + throw new RepositoryException( + "File system initialization failure.", e); + } + } + }; + } + } Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/SearchConfig.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/SearchConfig.java?rev=688207&r1=688206&r2=688207&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/SearchConfig.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/SearchConfig.java Fri Aug 22 15:29:28 2008 @@ -18,6 +18,11 @@ import java.util.Properties; +import javax.jcr.RepositoryException; + +import org.apache.jackrabbit.core.fs.FileSystem; +import org.apache.jackrabbit.core.fs.FileSystemFactory; + /** * Search index configuration. This bean configuration class * is used to create configured search index objects. @@ -28,26 +33,24 @@ * * @see WorkspaceConfig#getSearchConfig() */ -public class SearchConfig extends BeanConfig { +public class SearchConfig extends BeanConfig implements FileSystemFactory { /** - * The search index file system configuration, or null if - * none is provided. + * The (optional) factory for creating the configured search file system. */ - private final FileSystemConfig fsc; + private final FileSystemFactory fsf; /** * Creates a search index configuration object. * * @param className search index implementation class * @param properties search index properties - * @param fsc search index file system configuration, or null - * if none is configured. + * @param fsf configured search index file system factory, or null */ public SearchConfig( - String className, Properties properties, FileSystemConfig fsc) { + String className, Properties properties, FileSystemFactory fsf) { super(className, properties); - this.fsc = fsc; + this.fsf = fsf; } /** @@ -60,12 +63,18 @@ } /** - * Returns the configuration for the FileSystem or - * null if none is configured in this SearchConfig. + * Creates and returns the configured search file system, or returns + * null if a search file system has not been configured. * - * @return the FileSystemConfig for this SearchConfig. + * @return the configured {@link FileSystem}, or null + * @throws RepositoryException if the file system can not be created */ - public FileSystemConfig getFileSystemConfig() { - return fsc; + public FileSystem getFileSystem() throws RepositoryException { + if (fsf != null) { + return fsf.getFileSystem(); + } else { + return null; + } } + } Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/VersioningConfig.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/VersioningConfig.java?rev=688207&r1=688206&r2=688207&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/VersioningConfig.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/VersioningConfig.java Fri Aug 22 15:29:28 2008 @@ -18,6 +18,11 @@ import java.io.File; +import javax.jcr.RepositoryException; + +import org.apache.jackrabbit.core.fs.FileSystem; +import org.apache.jackrabbit.core.fs.FileSystemFactory; + /** * Versioning configuration. This configuration class is used to * create configured versioning objects. @@ -28,7 +33,7 @@ * * @see RepositoryConfig#getVersioningConfig() */ -public class VersioningConfig { +public class VersioningConfig implements FileSystemFactory { /** * Versioning home directory. @@ -36,9 +41,9 @@ private final String home; /** - * Versioning file system configuration. + * Versioning file system factory. */ - private final FileSystemConfig fsc; + private final FileSystemFactory fsf; /** * Versioning persistence manager configuration. @@ -54,18 +59,18 @@ * Creates a versioning configuration object. * * @param home home directory - * @param fsc file system configuration + * @param fsf file system factory * @param pmc persistence manager configuration * @param ismLockingConfig the item state manager locking configuration, if * null is passed a default * configuration is used. */ public VersioningConfig(String home, - FileSystemConfig fsc, + FileSystemFactory fsf, PersistenceManagerConfig pmc, ISMLockingConfig ismLockingConfig) { this.home = home; - this.fsc = fsc; + this.fsf = fsf; this.pmc = pmc; if (ismLockingConfig != null) { this.ismLockingConfig = ismLockingConfig; @@ -84,12 +89,13 @@ } /** - * Returns the configuration for the FileSystem. + * Creates and returns the configured versioning file system. * - * @return the FileSystemConfig for this VersionConfig. + * @return the configured {@link FileSystem} + * @throws RepositoryException if the file system can not be created */ - public FileSystemConfig getFileSystemConfig() { - return fsc; + public FileSystem getFileSystem() throws RepositoryException { + return fsf.getFileSystem(); } /** Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/WorkspaceConfig.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/WorkspaceConfig.java?rev=688207&r1=688206&r2=688207&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/WorkspaceConfig.java (original) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/WorkspaceConfig.java Fri Aug 22 15:29:28 2008 @@ -16,6 +16,11 @@ */ package org.apache.jackrabbit.core.config; +import javax.jcr.RepositoryException; + +import org.apache.jackrabbit.core.fs.FileSystem; +import org.apache.jackrabbit.core.fs.FileSystemFactory; + /** * Workspace configuration. This configuration class is used to create * configured workspace objects. @@ -25,7 +30,7 @@ * the item state manager locking configuration. The search index and the item * state manager locking and the security config are optional parts. */ -public class WorkspaceConfig { +public class WorkspaceConfig implements FileSystemFactory { /** * Workspace home directory. @@ -43,9 +48,9 @@ private final boolean clustered; /** - * Workspace file system configuration. + * Workspace file system factory. */ - private FileSystemConfig fsc; + private FileSystemFactory fsf; /** * Workspace persistence manager configuration. @@ -72,7 +77,7 @@ * * @param home home directory * @param name workspace name - * @param fsc file system configuration + * @param fsc file system factory * @param pmc persistence manager configuration * @param sc search index configuration * @param ismLockingConfig the item state manager locking configuration. If @@ -80,13 +85,13 @@ * @param workspaceSecurityConfig the workspace specific security configuration. */ public WorkspaceConfig(String home, String name, boolean clustered, - FileSystemConfig fsc, PersistenceManagerConfig pmc, + FileSystemFactory fsf, PersistenceManagerConfig pmc, SearchConfig sc, ISMLockingConfig ismLockingConfig, WorkspaceSecurityConfig workspaceSecurityConfig) { this.home = home; this.name = name; this.clustered = clustered; - this.fsc = fsc; + this.fsf = fsf; this.pmc = pmc; this.sc = sc; if (ismLockingConfig != null) { @@ -133,12 +138,13 @@ } /** - * Returns the file system configuration. + * Creates and returns the configured workspace file system. * - * @return file system configuration + * @return the configured {@link FileSystem} + * @throws RepositoryException if the file system can not be created */ - public FileSystemConfig getFileSystemConfig() { - return fsc; + public FileSystem getFileSystem() throws RepositoryException { + return fsf.getFileSystem(); } /** Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/FileSystemFactory.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/FileSystemFactory.java?rev=688207&view=auto ============================================================================== --- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/FileSystemFactory.java (added) +++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/FileSystemFactory.java Fri Aug 22 15:29:28 2008 @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.core.fs; + +import javax.jcr.RepositoryException; + +/** + * Factory interface for creating {@link FileSystem} instances. Used + * to decouple the repository internals from the repository configuration + * mechanism. + */ +public interface FileSystemFactory { + + /** + * Creates, initializes, and returns a {@link FileSystem} instance + * for use by the repository. Note that no information is passed from + * the client, so all required configuration information must be + * encapsulated in the factory. + * + * @return initialized file system + * @throws RepositoryException if the file system can not be created + */ + FileSystem getFileSystem() throws RepositoryException; + +}