X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.suite.e4.rap%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Frap%2FArgeoSuiteLoginLifecycle.java;h=da41b4248ba6578d80c5c813c7de925720d8496e;hb=f411a28296bb744b02fd9dc9acba4db8e4722bde;hp=32623110eae8006d672cfc07e5988758057a594a;hpb=91ba500dcfe75cde313a513e341b7f9f57d64d75;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/ArgeoSuiteLoginLifecycle.java b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/ArgeoSuiteLoginLifecycle.java index 3262311..da41b42 100644 --- a/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/ArgeoSuiteLoginLifecycle.java +++ b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/ArgeoSuiteLoginLifecycle.java @@ -15,6 +15,7 @@ import org.apache.commons.logging.LogFactory; import org.argeo.cms.e4.rap.CmsLoginLifecycle; import org.argeo.connect.ui.SystemWorkbenchService; import org.argeo.jcr.JcrUtils; +import org.argeo.node.NodeConstants; public class ArgeoSuiteLoginLifecycle extends CmsLoginLifecycle { private final static Log log = LogFactory.getLog(ArgeoSuiteLoginLifecycle.class); @@ -36,31 +37,34 @@ public class ArgeoSuiteLoginLifecycle extends CmsLoginLifecycle { private void loadState() { String state = getState(); - if (state != null && state.startsWith("/")) { - Session session = null; - try { - Subject subject = getSubject(); - session = Subject.doAs(subject, new PrivilegedExceptionAction() { + // for the time being we systematically open a session, in order to make sure + // that home is initialised + Session session = null; + try { + Subject subject = getSubject(); + session = Subject.doAs(subject, new PrivilegedExceptionAction() { - @Override - public Session run() throws PrivilegedActionException { - try { - return repository.login(); - } catch (RepositoryException e) { - throw new PrivilegedActionException(e); - } + @Override + public Session run() throws PrivilegedActionException { + try { + return repository.login(NodeConstants.HOME); + } catch (RepositoryException e) { + throw new PrivilegedActionException(e); } + } - }); + }); + if (state != null && state.startsWith("/")) { if (state.startsWith("/")) { Node node = session.getNode(state); systemWorkbenchService.openEntityEditor(node); } - } catch (RepositoryException | PrivilegedActionException e) { - log.error("Cannot load state " + state, e); - } finally { - JcrUtils.logoutQuietly(session); } + } catch (RepositoryException | PrivilegedActionException e) { + log.error("Cannot load state " + state, e); + getBrowserNavigation().pushState("~", null); + } finally { + JcrUtils.logoutQuietly(session); } } }