Make sure home has been created
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 14 May 2018 13:20:57 +0000 (15:20 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 14 May 2018 13:20:57 +0000 (15:20 +0200)
org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/ArgeoSuiteLoginLifecycle.java

index 32623110eae8006d672cfc07e5988758057a594a..0b2d1527b5577893a2868750ea2d9f480db5a946 100644 (file)
@@ -4,6 +4,7 @@ import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 
 import javax.inject.Inject;
 import java.security.PrivilegedExceptionAction;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 import javax.jcr.Node;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Node;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
@@ -22,6 +23,7 @@ public class ArgeoSuiteLoginLifecycle extends CmsLoginLifecycle {
        SystemWorkbenchService systemWorkbenchService;
 
        @Inject
        SystemWorkbenchService systemWorkbenchService;
 
        @Inject
+       @Named("(cn=home)")
        Repository repository;
 
        @Override
        Repository repository;
 
        @Override
@@ -36,31 +38,33 @@ public class ArgeoSuiteLoginLifecycle extends CmsLoginLifecycle {
 
        private void loadState() {
                String state = getState();
 
        private void loadState() {
                String state = getState();
-               if (state != null && state.startsWith("/")) {
-                       Session session = null;
-                       try {
-                               Subject subject = getSubject();
-                               session = Subject.doAs(subject, new PrivilegedExceptionAction<Session>() {
+               // 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<Session>() {
 
 
-                                       @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();
+                                       } catch (RepositoryException e) {
+                                               throw new PrivilegedActionException(e);
                                        }
                                        }
+                               }
 
 
-                               });
+                       });
+                       if (state != null && state.startsWith("/")) {
                                if (state.startsWith("/")) {
                                        Node node = session.getNode(state);
                                        systemWorkbenchService.openEntityEditor(node);
                                }
                                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);
+               } finally {
+                       JcrUtils.logoutQuietly(session);
                }
        }
 }
                }
        }
 }