X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FCmsFsProvider.java;h=99c219b51040b24652e8c16bccf74b4ad4b6c5d2;hb=fb22feb37b0c2340d3d846dce4b6f47d0f728efb;hp=cf62493984f7e94da5add9bec3173f1b8e58b705;hpb=1b09095425a7c067c097eb91bed5b4a4a33f0dc8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsFsProvider.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsFsProvider.java index cf6249398..99c219b51 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsFsProvider.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsFsProvider.java @@ -9,21 +9,21 @@ import java.util.HashMap; import java.util.Map; import javax.jcr.Node; +import javax.jcr.Property; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.RepositoryFactory; import javax.jcr.Session; import javax.jcr.nodetype.NodeType; +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.JcrFileSystemProvider; import org.argeo.jcr.fs.JcrFsException; -import org.argeo.node.NodeConstants; -import org.argeo.node.NodeTypes; -import org.argeo.node.NodeUtils; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; @@ -52,15 +52,15 @@ public class CmsFsProvider extends AbstractJackrabbitFsProvider { 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, session); +// 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.HOME + ")").iterator().next()); - Session session = repository.login(); - CmsFileSystem fileSystem = new CmsFileSystem(this, session); + 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; } @@ -92,13 +92,18 @@ public class CmsFsProvider extends AbstractJackrabbitFsProvider { return fileSystems.get(username); } - public Node getUserHome(Session session) { - return NodeUtils.getUserHome(session); + public Node getUserHome(Repository repository) { + try { + Session session = repository.login(NodeConstants.HOME_WORKSPACE); + return NodeUtils.getUserHome(session); + } catch (RepositoryException e) { + throw new IllegalStateException("Cannot get user home", e); + } } static class CmsFileSystem extends JcrFileSystem { - public CmsFileSystem(JcrFileSystemProvider provider, Session session) throws IOException { - super(provider, session); + public CmsFileSystem(JcrFileSystemProvider provider, Repository repository) throws IOException { + super(provider, repository); } public boolean skipNode(Node node) throws RepositoryException { @@ -106,6 +111,9 @@ public class CmsFsProvider extends AbstractJackrabbitFsProvider { // || node.isNodeType(NodeTypes.NODE_GROUP_HOME)) if (node.isNodeType(NodeType.NT_HIERARCHY_NODE)) return false; + // FIXME Better identifies home + if (node.hasProperty(Property.JCR_ID)) + return false; return true; }