import java.io.IOException;
import java.net.URI;
+import java.net.URISyntaxException;
import java.nio.file.FileSystem;
import java.nio.file.FileSystemAlreadyExistsException;
import java.nio.file.Path;
+import java.nio.file.spi.FileSystemProvider;
import java.util.HashMap;
import java.util.Map;
import org.argeo.api.NodeConstants;
import org.argeo.api.NodeUtils;
-import org.argeo.cms.CmsException;
import org.argeo.cms.auth.CurrentUser;
import org.argeo.jackrabbit.fs.AbstractJackrabbitFsProvider;
import org.argeo.jcr.fs.JcrFileSystem;
import org.argeo.jcr.fs.JcrFsException;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+/** Implementation of an {@link FileSystemProvider} based on Jackrabbit. */
public class CmsFsProvider extends AbstractJackrabbitFsProvider {
private Map<String, CmsFileSystem> fileSystems = new HashMap<>();
URI repoUri = new URI("http", uri.getUserInfo(), uri.getHost(), uri.getPort(), "/jcr/node", null, null);
RepositoryFactory repositoryFactory = bc.getService(bc.getServiceReference(RepositoryFactory.class));
Repository repository = NodeUtils.getRepositoryByUri(repositoryFactory, repoUri.toString());
-// Session session = repository.login("main");
CmsFileSystem fileSystem = new CmsFileSystem(this, repository);
fileSystems.put(username, fileSystem);
return fileSystem;
} else {
Repository repository = bc.getService(
- bc.getServiceReferences(Repository.class, "(cn=" + NodeConstants.EGO + ")").iterator().next());
+ bc.getServiceReferences(Repository.class, "(cn=" + NodeConstants.EGO_REPOSITORY + ")")
+ .iterator().next());
// Session session = repository.login();
CmsFileSystem fileSystem = new CmsFileSystem(this, repository);
fileSystems.put(username, fileSystem);
return fileSystem;
}
- } catch (Exception e) {
- throw new CmsException("Cannot open file system " + uri + " for user " + username, e);
+ } catch (InvalidSyntaxException | URISyntaxException e) {
+ throw new IllegalArgumentException("Cannot open file system " + uri + " for user " + username, e);
}
}
public Node getUserHome(Repository repository) {
try {
- Session session = repository.login(NodeConstants.HOME);
+ Session session = repository.login(NodeConstants.HOME_WORKSPACE);
return NodeUtils.getUserHome(session);
} catch (RepositoryException e) {
throw new IllegalStateException("Cannot get user home", e);