import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jackrabbit.jcr2dav.Jcr2davRepositoryFactory;
+import org.argeo.cms.internal.jcr.RepoConf;
import org.argeo.jcr.ArgeoJcrException;
import org.argeo.node.NodeConstants;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
-import org.springframework.core.io.Resource;
/**
* OSGi-aware Jackrabbit repository factory which can retrieve/publish
protected Repository getRepositoryByAlias(String alias) {
try {
Collection<ServiceReference<Repository>> srs = bundleContext.getServiceReferences(Repository.class,
- "(" + NodeConstants.JCR_REPOSITORY_ALIAS + "=" + alias + ")");
+ "(" + NodeConstants.CN + "=" + alias + ")");
if (srs.size() == 0)
throw new ArgeoJcrException("No repository with alias " + alias + " found in OSGi registry");
else if (srs.size() > 1)
// check if remote
Repository repository;
String uri = null;
- if (parameters.containsKey(NodeConstants.JCR_REPOSITORY_URI))
- uri = parameters.get(NodeConstants.JCR_REPOSITORY_URI).toString();
+ if (parameters.containsKey(RepoConf.labeledUri.name()))
+ uri = parameters.get(NodeConstants.LABELED_URI).toString();
else if (parameters.containsKey(KernelConstants.JACKRABBIT_REPOSITORY_URI))
uri = parameters.get(KernelConstants.JACKRABBIT_REPOSITORY_URI).toString();
if (uri != null) {
- if (uri.startsWith("http"))// http, https
- repository = createRemoteRepository(uri);
- else if (uri.startsWith("file"))// http, https
+ if (uri.startsWith("http")) {// http, https
+ Object defaultWorkspace = parameters.get(RepoConf.defaultWorkspace.name());
+ repository = createRemoteRepository(uri, defaultWorkspace != null ? defaultWorkspace.toString() : null);
+ } else if (uri.startsWith("file"))// http, https
repository = createFileRepository(uri, parameters);
else if (uri.startsWith("vm")) {
// log.warn("URI " + uri + " should have been managed by generic
}
- else if (parameters.containsKey(NodeConstants.JCR_REPOSITORY_ALIAS)) {
+ else if (parameters.containsKey(NodeConstants.CN)) {
// Properties properties = new Properties();
// properties.putAll(parameters);
- String alias = parameters.get(NodeConstants.JCR_REPOSITORY_ALIAS).toString();
+ String alias = parameters.get(NodeConstants.CN).toString();
// publish(alias, repository, properties);
// log.info("Registered JCR repository under alias '" + alias + "'
// with properties " + properties);
return repository;
}
- protected Repository createRemoteRepository(String uri) throws RepositoryException {
+ protected Repository createRemoteRepository(String uri, String defaultWorkspace) throws RepositoryException {
Map<String, String> params = new HashMap<String, String>();
params.put(KernelConstants.JACKRABBIT_REPOSITORY_URI, uri);
+ if (defaultWorkspace != null)
+ params.put(KernelConstants.JACKRABBIT_REMOTE_DEFAULT_WORKSPACE, defaultWorkspace);
Repository repository = new Jcr2davRepositoryFactory().getRepository(params);
if (repository == null)
throw new ArgeoJcrException("Remote Davex repository " + uri + " not found");
}
/**
- * Called after the repository has been initialised. Does nothing by
- * default.
+ * Called after the repository has been initialised. Does nothing by default.
*/
@SuppressWarnings("rawtypes")
protected void postInitialization(Repository repository, Map parameters) {
}
-
- public void setFileRepositoryConfiguration(Resource fileRepositoryConfiguration) {
-// this.fileRepositoryConfiguration = fileRepositoryConfiguration;
- }
-
}