You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/05/19 15:44:34 UTC
svn commit: r776313 -
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java
Author: jukka
Date: Tue May 19 13:44:34 2009
New Revision: 776313
URL: http://svn.apache.org/viewvc?rev=776313&view=rev
Log:
JCR-2119: Method to create default RepositoryConfig from just the repository directory
Use the new RepositoryConfig.install() method in TransientRepository. Add new TransientRepository constructor signatures for convenience.
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java?rev=776313&r1=776312&r2=776313&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java Tue May 19 13:44:34 2009
@@ -17,10 +17,8 @@
package org.apache.jackrabbit.core;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
@@ -34,7 +32,6 @@
import javax.jcr.Value;
import org.apache.commons.collections.map.ReferenceMap;
-import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.api.JackrabbitRepository;
import org.apache.jackrabbit.core.config.ConfigurationException;
import org.apache.jackrabbit.core.config.RepositoryConfig;
@@ -58,11 +55,6 @@
LoggerFactory.getLogger(TransientRepository.class);
/**
- * Resource path of the default repository configuration file.
- */
- private static final String DEFAULT_REPOSITORY_XML = "repository.xml";
-
- /**
* Name of the repository configuration file property.
*/
private static final String CONF_PROPERTY =
@@ -92,7 +84,7 @@
public interface RepositoryFactory {
/**
- * Creates and intializes a repository instance. The returned instance
+ * Creates and initializes a repository instance. The returned instance
* will be used and finally shut down by the caller of this method.
*
* @return initialized repository instance
@@ -133,9 +125,8 @@
* factory to initialize the underlying repository instances.
*
* @param factory repository factory
- * @throws IOException if the static repository descriptors cannot be loaded
*/
- public TransientRepository(RepositoryFactory factory) throws IOException {
+ public TransientRepository(RepositoryFactory factory) {
this.factory = factory;
this.repository = null;
this.descriptors = new Properties();
@@ -143,12 +134,16 @@
// FIXME: The current RepositoryImpl class does not allow static
// access to the repository descriptors, so we need to load them
// directly from the underlying property file.
- InputStream in =
- RepositoryImpl.class.getResourceAsStream("repository.properties");
try {
- descriptors.load(in);
- } finally {
- in.close();
+ InputStream in = RepositoryImpl.class.getResourceAsStream(
+ "repository.properties");
+ try {
+ descriptors.load(in);
+ } finally {
+ in.close();
+ }
+ } catch (IOException e) {
+ logger.warn("Unable to load static repository descriptors", e);
}
}
@@ -187,6 +182,32 @@
/**
* Creates a transient repository proxy that will use the given repository
* configuration file and home directory paths to initialize the underlying
+ * repository instances.
+ *
+ * @see #TransientRepository(File, File)
+ * @param config repository configuration file
+ * @param home repository home directory
+ * @throws IOException if the static repository descriptors cannot be loaded
+ */
+ public TransientRepository(String config, String home) {
+ this(new File(config), new File(home));
+ }
+
+ /**
+ * Creates a transient repository proxy based on the given repository
+ * home directory and the repository configuration file "repository.xml"
+ * contained in that directory.
+ *
+ * @since Apache Jackrabbit 1.6
+ * @param dir repository home directory
+ */
+ public TransientRepository(File dir) {
+ this(new File(dir, "repository.xml"), dir);
+ }
+
+ /**
+ * Creates a transient repository proxy that will use the given repository
+ * configuration file and home directory paths to initialize the underlying
* repository instances. The repository configuration file is reloaded
* whenever the repository is restarted, so it is safe to modify the
* configuration when all sessions have been closed.
@@ -198,48 +219,22 @@
* session starts. This is a convenience feature designed to reduce the
* need for manual configuration.
*
- * @param config repository configuration file
- * @param home repository home directory
- * @throws IOException if the static repository descriptors cannot be loaded
+ * @since Apache Jackrabbit 1.6
+ * @param xml repository configuration file
+ * @param dir repository home directory
*/
- public TransientRepository(final String config, final String home)
- throws IOException {
+ public TransientRepository(final File xml, final File dir) {
this(new RepositoryFactory() {
public RepositoryImpl getRepository() throws RepositoryException {
try {
- // Make sure that the repository configuration file exists
- File configFile = new File(config);
- if (!configFile.exists()) {
- logger.info("Copying default configuration to " + config);
- OutputStream output = new FileOutputStream(configFile);
- try {
- InputStream input =
- TransientRepository.class.getResourceAsStream(
- DEFAULT_REPOSITORY_XML);
- try {
- IOUtils.copy(input, output);
- } finally {
- input.close();
- }
- } finally {
- output.close();
- }
- }
- // Make sure that the repository home directory exists
- File homeDir = new File(home);
- if (!homeDir.exists()) {
- logger.info("Creating repository home directory " + home);
- homeDir.mkdirs();
- }
- // Load the configuration and create the repository
- RepositoryConfig rc = RepositoryConfig.create(config, home);
- return RepositoryImpl.create(rc);
+ return RepositoryImpl.create(
+ RepositoryConfig.install(xml, dir));
} catch (IOException e) {
throw new RepositoryException(
"Automatic repository configuration failed", e);
} catch (ConfigurationException e) {
throw new RepositoryException(
- "Invalid repository configuration: " + config, e);
+ "Invalid repository configuration file: " + xml, e);
}
}
});