001: /*
002: * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: *
023: * Free Software Foundation, Inc.
024: * 59 Temple Place, Suite 330
025: * Boston, MA 02111-1307 USA
026: *
027: * @author Scott Ferguson
028: */
029:
030: package com.caucho.jcr.file;
031:
032: import com.caucho.config.ConfigException;
033: import com.caucho.jcr.base.BaseRepository;
034: import com.caucho.util.L10N;
035: import com.caucho.vfs.Path;
036:
037: import javax.jcr.Credentials;
038: import javax.jcr.LoginException;
039: import javax.jcr.NoSuchWorkspaceException;
040: import javax.jcr.RepositoryException;
041: import javax.jcr.Session;
042:
043: /**
044: * Represents a repository based on a filesystem.
045: *
046: * Configuration looks like:
047: *
048: * <pre>
049: * <resource jndi-name="crm/wiki"
050: * type="com.caucho.cms.file.FileRepository">
051: * <init>
052: * <root>wiki-data</root>
053: * </init>
054: * </resource>
055: * </pre>
056: */
057: public class FileRepository extends BaseRepository {
058: private static final L10N L = new L10N(FileRepository.class);
059:
060: private Path _root;
061:
062: /**
063: * Sets the file root.
064: */
065: public void setRoot(Path root) {
066: _root = root.createRoot();
067: }
068:
069: /**
070: * Returns the file root.
071: */
072: public Path getRoot() {
073: return _root;
074: }
075:
076: /**
077: * Initialize the FileRespository.
078: */
079: public void init() throws ConfigException {
080: if (_root == null)
081: throw new ConfigException(
082: L
083: .l("'root' property is required for FileRepository"));
084: }
085:
086: /**
087: * Returns the value for Repository feature descriptor keys.
088: */
089: public String getDescriptor(String key) {
090: if (REP_NAME_DESC.equals(key))
091: return "Resin File Repository";
092: else
093: return super .getDescriptor(key);
094: }
095:
096: /**
097: * Opens a new session, specifying the security credentials
098: * and a workspace.
099: *
100: * @param credentials the security credentials
101: * @param workspaceName select an optional workspace
102: */
103: public Session login(Credentials credentials, String workspaceName)
104: throws LoginException, NoSuchWorkspaceException,
105: RepositoryException {
106: return new FileSession(this);
107: }
108: }
|