/**
* Created on Sep 23, 2005
*
* $Id: RepositoryFactoryBean.java,v 1.1 2005/12/20 17:38:30 costin Exp $
* $Revision: 1.1 $
*/
package org.springmodules.jcr.jeceira;
import javax.jcr.Repository;
import org.springframework.core.io.ClassPathResource;
import com.jeceira.config.ConfigManager;
import com.jeceira.config.DefaultConfigManager;
import com.jeceira.repository.RepositoryFactory;
/**
* FactoryBean for creating a Jeceira (JCR-170) repository through Spring
* configuration files.
*
* @author Costin Leau
*
*/
public class RepositoryFactoryBean extends org.springmodules.jcr.RepositoryFactoryBean {
/**
* Default repository configuration file.
*/
private static final String DEFAULT_CONF_FILE = "jeceira.xml";
private String repositoryName;
/**
* Used if the user wants to supply his own configuration manager
* (configuration created dynamically).
*/
private ConfigManager configManager;
/**
* @see org.springmodules.jcr.RepositoryFactoryBean#createRepository()
*/
protected Repository createRepository() throws Exception {
RepositoryFactory factory = RepositoryFactory.getInstance(configManager);
return factory.getRepository(repositoryName);
}
/**
* @see org.springmodules.jcr.RepositoryFactoryBean#resolveConfigurationResource()
*/
protected void resolveConfigurationResource() throws Exception {
if (repositoryName == null)
throw new IllegalArgumentException("repositoryName is required");
if (configManager == null)
{
// resolve the configuration
if (configuration == null) {
if (log.isDebugEnabled())
log.debug("no configuration resource specified, using the default one:" + DEFAULT_CONF_FILE);
configuration = new ClassPathResource(DEFAULT_CONF_FILE);
}
configManager = new DefaultConfigManager(configuration.getInputStream());
}
}
/**
* @return Returns the repositoryName.
*/
public String getRepositoryName() {
return repositoryName;
}
/**
* @param repositoryName
* The repositoryName to set.
*/
public void setRepositoryName(String repositoryName) {
this.repositoryName = repositoryName;
}
/**
* @return Returns the configManager.
*/
public ConfigManager getConfigManager() {
return this.configManager;
}
/**
* @param configManager
* The configManager to set.
*/
public void setConfigManager(ConfigManager configManager) {
this.configManager = configManager;
}
}