Change default workspace from 'main' to 'sys'.
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 22 Oct 2020 09:17:49 +0000 (11:17 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 22 Oct 2020 09:17:49 +0000 (11:17 +0200)
org.argeo.api/src/org/argeo/api/NodeConstants.java
org.argeo.cms.e4/src/org/argeo/cms/e4/jcr/handlers/AddRemoteRepository.java
org.argeo.cms.ui.rap/src/org/argeo/cms/ui/script/AppUi.java
org.argeo.cms.ui/src/org/argeo/cms/ui/jcr/model/RepositoryElem.java
org.argeo.cms/src/org/argeo/cms/internal/auth/CmsSessionImpl.java
org.argeo.cms/src/org/argeo/cms/internal/jcr/RepoConf.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsFsProvider.java
org.argeo.core/src/org/argeo/cli/jcr/JcrSync.java
org.argeo.jcr/src/org/argeo/jackrabbit/client/JackrabbitClient.java
org.argeo.jcr/src/org/argeo/jackrabbit/fs/DavexFsProvider.java

index f561591685b4cfe0f3fe9c6ffd73bbd6d6d05f5e..e53730ea79c2ec0a024d483cfd34147071e5d99a 100644 (file)
@@ -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
index 47eaa853d05ccf97de359ad786e7681c8a38bfe2..7b1e19d062fd185dc5d5082a46a9b894090cfecf 100644 (file)
@@ -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
index ad7cadc13328651206d6b583d5bb90edcee861a5..15b181780240f943caef71e1cf9bad18deecabc3 100644 (file)
@@ -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);
index 2df54164c6daea5193a292c583a975d1cb235997..5503484e0be329af865a53b820da6cd24a6c32e9 100644 (file)
@@ -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()))
index f8d5863e69321f530ca818fc89c86b23b5f9ed64..8761480fe29f8ebdc57a4d7336ab4c748ab4ffd1 100644 (file)
@@ -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<CmsSession> 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<CmsSession> 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);
                }
        }
 }
index 26017140e5f53348b246451c2fbd57c855c579e4..a48adccab0b1dcc5e1db759404534ea6c407d02d 100644 (file)
@@ -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 */
index 99c219b51040b24652e8c16bccf74b4ad4b6c5d2..e4ca87c12ab3a3742c2c62d0081894a713b3dc73 100644 (file)
@@ -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<String, CmsFileSystem> 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);
                }
        }
 
index a9ec6e26d5705487e8da3d92e2e43558d8ecbf7c..401f447c9d0b5fb4f357d33860231f3d745f02d3 100644 (file)
@@ -102,7 +102,8 @@ public class JcrSync implements DescribedCommand<SyncResult<Node>> {
                RepositoryFactory repositoryFactory = new ClientDavexRepositoryFactory();
                Map<String, String> params = new HashMap<String, String>();
                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);
        }
 
index 32b8c06d9fb085ada461fd97ad4d752410657fcd..e08f4d6c7202a7b965c40f43822d1191e11a6dc9 100644 (file)
@@ -83,7 +83,8 @@ public class JackrabbitClient {
                        };
                        Map<String, String> params = new HashMap<String, String>();
                        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);
index 5a0834d3062ec5500d37ee0d1702919db1294c91..bfd36b0486e71fee11f67897f279c9b8a743ae5b 100644 (file)
@@ -55,7 +55,8 @@ public class DavexFsProvider extends AbstractJackrabbitFsProvider {
                        throws IOException {
                Map<String, String> params = new HashMap<String, String>();
                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 {