From 3877d57c9cdad93179d6362a09af6b18576a512c Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 22 Oct 2020 11:17:49 +0200 Subject: [PATCH] Change default workspace from 'main' to 'sys'. --- .../src/org/argeo/api/NodeConstants.java | 2 ++ .../e4/jcr/handlers/AddRemoteRepository.java | 2 +- .../src/org/argeo/cms/ui/script/AppUi.java | 8 +++++--- .../cms/ui/jcr/model/RepositoryElem.java | 3 ++- .../cms/internal/auth/CmsSessionImpl.java | 20 +++++++++---------- .../org/argeo/cms/internal/jcr/RepoConf.java | 3 ++- .../cms/internal/kernel/CmsFsProvider.java | 11 +++++----- .../src/org/argeo/cli/jcr/JcrSync.java | 3 ++- .../jackrabbit/client/JackrabbitClient.java | 3 ++- .../argeo/jackrabbit/fs/DavexFsProvider.java | 3 ++- 10 files changed, 34 insertions(+), 24 deletions(-) diff --git a/org.argeo.api/src/org/argeo/api/NodeConstants.java b/org.argeo.api/src/org/argeo/api/NodeConstants.java index f56159168..e53730ea7 100644 --- a/org.argeo.api/src/org/argeo/api/NodeConstants.java +++ b/org.argeo.api/src/org/argeo/api/NodeConstants.java @@ -29,10 +29,12 @@ public interface NodeConstants { */ String NODE_REPOSITORY = NODE; String EGO_REPOSITORY = "ego"; + String SYS_WORKSPACE = "sys"; String HOME_WORKSPACE = "home"; String SRV_WORKSPACE = "srv"; String GUESTS_WORKSPACE = "guests"; String PUBLIC_WORKSPACE = "public"; + String SECURITY_WORKSPACE = "security"; /* * BASE DNs diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/jcr/handlers/AddRemoteRepository.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/jcr/handlers/AddRemoteRepository.java index 47eaa853d..7b1e19d06 100644 --- a/org.argeo.cms.e4/src/org/argeo/cms/e4/jcr/handlers/AddRemoteRepository.java +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/jcr/handlers/AddRemoteRepository.java @@ -134,7 +134,7 @@ public class AddRemoteRepository { Repository repository = repositoryFactory.getRepository(params); if (username.getText().trim().equals("")) {// anonymous // FIXME make it more generic - session = repository.login("main"); + session = repository.login(NodeConstants.SYS_WORKSPACE); } else { // FIXME use getTextChars() when upgrading to 3.7 // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=297412 diff --git a/org.argeo.cms.ui.rap/src/org/argeo/cms/ui/script/AppUi.java b/org.argeo.cms.ui.rap/src/org/argeo/cms/ui/script/AppUi.java index ad7cadc13..15b181780 100644 --- a/org.argeo.cms.ui.rap/src/org/argeo/cms/ui/script/AppUi.java +++ b/org.argeo.cms.ui.rap/src/org/argeo/cms/ui/script/AppUi.java @@ -9,6 +9,7 @@ import javax.jcr.RepositoryException; import javax.script.Invocable; import javax.script.ScriptException; +import org.argeo.api.NodeConstants; import org.argeo.cms.ui.CmsUiProvider; import org.argeo.cms.ui.util.CmsPane; import org.argeo.cms.ui.util.CmsUiUtils; @@ -53,7 +54,8 @@ public class AppUi implements CmsUiProvider, Branding { public AppUi(CmsScriptApp app, String scriptPath) { this.app = app; - this.ui = new ScriptUi((BundleContext) app.getScriptEngine().get(CmsScriptRwtApplication.BC), app.getScriptEngine(), scriptPath); + this.ui = new ScriptUi((BundleContext) app.getScriptEngine().get(CmsScriptRwtApplication.BC), + app.getScriptEngine(), scriptPath); } public AppUi(CmsScriptApp app, CmsUiProvider uiProvider) { @@ -77,8 +79,8 @@ public class AppUi implements CmsUiProvider, Branding { EntryPointFactory entryPointFactory = new EntryPointFactory() { @Override public EntryPoint create() { - SimpleErgonomics ergonomics = new SimpleErgonomics(repository, "main", "/home/root/argeo:keyring", - AppUi.this, factoryProperties); + SimpleErgonomics ergonomics = new SimpleErgonomics(repository, NodeConstants.SYS_WORKSPACE, + "/home/root/argeo:keyring", AppUi.this, factoryProperties); // CmsUiProvider header = app.getHeader(); // if (header != null) // ergonomics.setHeader(header); diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/jcr/model/RepositoryElem.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/jcr/model/RepositoryElem.java index 2df54164c..5503484e0 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/jcr/model/RepositoryElem.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/jcr/model/RepositoryElem.java @@ -4,6 +4,7 @@ import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; +import org.argeo.api.NodeConstants; import org.argeo.eclipse.ui.EclipseUiException; import org.argeo.eclipse.ui.TreeParent; import org.argeo.jcr.JcrUtils; @@ -30,7 +31,7 @@ public class RepositoryElem extends TreeParent { public void login() { try { - defaultSession = repositoryLogin("main"); + defaultSession = repositoryLogin(NodeConstants.SYS_WORKSPACE); String[] wkpNames = defaultSession.getWorkspace().getAccessibleWorkspaceNames(); for (String wkpName : wkpNames) { if (wkpName.equals(defaultSession.getWorkspace().getName())) diff --git a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsSessionImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsSessionImpl.java index f8d5863e6..8761480fe 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsSessionImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsSessionImpl.java @@ -3,6 +3,7 @@ package org.argeo.cms.internal.auth; import java.security.AccessControlContext; import java.security.AccessController; import java.security.PrivilegedAction; +import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.time.ZonedDateTime; import java.util.Collection; @@ -28,7 +29,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.api.NodeConstants; import org.argeo.api.security.NodeSecurityUtils; -import org.argeo.cms.CmsException; import org.argeo.cms.auth.CmsSession; import org.argeo.jcr.JcrUtils; import org.osgi.framework.BundleContext; @@ -79,7 +79,7 @@ public class CmsSessionImpl implements CmsSession { this.userDn = new LdapName(authorization.getName()); this.anonymous = false; } catch (InvalidNameException e) { - throw new CmsException("Invalid user name " + authorization.getName(), e); + throw new IllegalArgumentException("Invalid user name " + authorization.getName(), e); } else { this.userDn = NodeSecurityUtils.ROLE_ANONYMOUS_NAME; @@ -135,7 +135,7 @@ public class CmsSessionImpl implements CmsSession { public synchronized Session getDataSession(String cn, String workspace, Repository repository) { // FIXME make it more robust if (workspace == null) - workspace = "main"; + workspace = NodeConstants.SYS_WORKSPACE; String path = cn + '/' + workspace; if (dataSessionsInUse.contains(path)) { try { @@ -173,8 +173,8 @@ public class CmsSessionImpl implements CmsSession { return repository.login(workspace); } }); - } catch (Exception e) { - throw new CmsException("Cannot log in " + userDn + " to JCR", e); + } catch (PrivilegedActionException e) { + throw new IllegalStateException("Cannot log in " + userDn + " to JCR", e); } } @@ -256,7 +256,7 @@ public class CmsSessionImpl implements CmsSession { try { sr = bc.getServiceReferences(CmsSession.class, "(" + CmsSession.SESSION_LOCAL_ID + "=" + localId + ")"); } catch (InvalidSyntaxException e) { - throw new CmsException("Cannot get CMS session for id " + localId, e); + throw new IllegalArgumentException("Cannot get CMS session for id " + localId, e); } ServiceReference cmsSessionRef; if (sr.size() == 1) { @@ -265,7 +265,7 @@ public class CmsSessionImpl implements CmsSession { } else if (sr.size() == 0) { return null; } else - throw new CmsException(sr.size() + " CMS sessions registered for " + localId); + throw new IllegalStateException(sr.size() + " CMS sessions registered for " + localId); } @@ -274,7 +274,7 @@ public class CmsSessionImpl implements CmsSession { try { sr = bc.getServiceReferences(CmsSession.class, "(" + CmsSession.SESSION_UUID + "=" + uuid + ")"); } catch (InvalidSyntaxException e) { - throw new CmsException("Cannot get CMS session for uuid " + uuid, e); + throw new IllegalArgumentException("Cannot get CMS session for uuid " + uuid, e); } ServiceReference cmsSessionRef; if (sr.size() == 1) { @@ -283,7 +283,7 @@ public class CmsSessionImpl implements CmsSession { } else if (sr.size() == 0) { return null; } else - throw new CmsException(sr.size() + " CMS sessions registered for " + uuid); + throw new IllegalStateException(sr.size() + " CMS sessions registered for " + uuid); } @@ -300,7 +300,7 @@ public class CmsSessionImpl implements CmsSession { } } } catch (InvalidSyntaxException e) { - throw new CmsException("Cannot get CMS sessions", e); + throw new IllegalArgumentException("Cannot get CMS sessions", e); } } } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/jcr/RepoConf.java b/org.argeo.cms/src/org/argeo/cms/internal/jcr/RepoConf.java index 26017140e..a48adccab 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/jcr/RepoConf.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/jcr/RepoConf.java @@ -1,5 +1,6 @@ package org.argeo.cms.internal.jcr; +import org.argeo.api.NodeConstants; import org.argeo.osgi.metatype.EnumAD; import org.argeo.osgi.metatype.EnumOCD; @@ -8,7 +9,7 @@ public enum RepoConf implements EnumAD { /** Repository type */ type("h2"), /** Default workspace */ - defaultWorkspace("main"), + defaultWorkspace(NodeConstants.SYS_WORKSPACE), /** Database URL */ dburl(null), /** Database user */ 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 99c219b51..e4ca87c12 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 @@ -2,6 +2,7 @@ package org.argeo.cms.internal.kernel; 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; @@ -18,7 +19,6 @@ 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; @@ -26,6 +26,7 @@ import org.argeo.jcr.fs.JcrFileSystemProvider; import org.argeo.jcr.fs.JcrFsException; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; +import org.osgi.framework.InvalidSyntaxException; public class CmsFsProvider extends AbstractJackrabbitFsProvider { private Map fileSystems = new HashMap<>(); @@ -52,20 +53,20 @@ 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, repository); fileSystems.put(username, fileSystem); return fileSystem; } else { Repository repository = bc.getService( - bc.getServiceReferences(Repository.class, "(cn=" + NodeConstants.EGO_REPOSITORY + ")").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); } } diff --git a/org.argeo.core/src/org/argeo/cli/jcr/JcrSync.java b/org.argeo.core/src/org/argeo/cli/jcr/JcrSync.java index a9ec6e26d..401f447c9 100644 --- a/org.argeo.core/src/org/argeo/cli/jcr/JcrSync.java +++ b/org.argeo.core/src/org/argeo/cli/jcr/JcrSync.java @@ -102,7 +102,8 @@ public class JcrSync implements DescribedCommand> { RepositoryFactory repositoryFactory = new ClientDavexRepositoryFactory(); Map params = new HashMap(); params.put(ClientDavexRepositoryFactory.JACKRABBIT_DAVEX_URI, uri.toString()); - params.put(ClientDavexRepositoryFactory.JACKRABBIT_REMOTE_DEFAULT_WORKSPACE, "main"); + // FIXME make it configurable + params.put(ClientDavexRepositoryFactory.JACKRABBIT_REMOTE_DEFAULT_WORKSPACE, "sys"); return repositoryFactory.getRepository(params); } diff --git a/org.argeo.jcr/src/org/argeo/jackrabbit/client/JackrabbitClient.java b/org.argeo.jcr/src/org/argeo/jackrabbit/client/JackrabbitClient.java index 32b8c06d9..e08f4d6c7 100644 --- a/org.argeo.jcr/src/org/argeo/jackrabbit/client/JackrabbitClient.java +++ b/org.argeo.jcr/src/org/argeo/jackrabbit/client/JackrabbitClient.java @@ -83,7 +83,8 @@ public class JackrabbitClient { }; Map params = new HashMap(); params.put(JACKRABBIT_DAVEX_URI, repoUri.toString()); - params.put(JACKRABBIT_REMOTE_DEFAULT_WORKSPACE, "main"); + // FIXME make it configurable + params.put(JACKRABBIT_REMOTE_DEFAULT_WORKSPACE, "sys"); try { repository = repositoryFactory.getRepository(params); diff --git a/org.argeo.jcr/src/org/argeo/jackrabbit/fs/DavexFsProvider.java b/org.argeo.jcr/src/org/argeo/jackrabbit/fs/DavexFsProvider.java index 5a0834d30..bfd36b048 100644 --- a/org.argeo.jcr/src/org/argeo/jackrabbit/fs/DavexFsProvider.java +++ b/org.argeo.jcr/src/org/argeo/jackrabbit/fs/DavexFsProvider.java @@ -55,7 +55,8 @@ public class DavexFsProvider extends AbstractJackrabbitFsProvider { throws IOException { Map params = new HashMap(); params.put(ClientDavexRepositoryFactory.JACKRABBIT_DAVEX_URI, repoUri.toString()); - params.put(ClientDavexRepositoryFactory.JACKRABBIT_REMOTE_DEFAULT_WORKSPACE, "main"); + // FIXME make it configurable + params.put(ClientDavexRepositoryFactory.JACKRABBIT_REMOTE_DEFAULT_WORKSPACE, "sys"); Repository repository = null; Session session = null; try { -- 2.30.2