]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeContentProvider.java
Adapt to changes in Commons
[gpl/argeo-slc.git] / org.argeo.slc.client.ui.dist / src / org / argeo / slc / client / ui / dist / controllers / DistTreeContentProvider.java
index b2c816be171ffce155c10e36494bb93c363690b6..0fc46d2f10cb111b7ee2ed4f98052d5f5e90ad7c 100644 (file)
@@ -12,16 +12,15 @@ import javax.jcr.RepositoryFactory;
 import javax.jcr.Session;
 import javax.jcr.nodetype.NodeType;
 
+import org.argeo.cms.ArgeoNames;
+import org.argeo.cms.ArgeoTypes;
 import org.argeo.eclipse.ui.TreeParent;
-import org.argeo.jcr.ArgeoJcrUtils;
-import org.argeo.jcr.ArgeoNames;
-import org.argeo.jcr.ArgeoTypes;
 import org.argeo.jcr.JcrUtils;
-import org.argeo.jcr.UserJcrUtils;
+import org.argeo.node.NodeUtils;
+import org.argeo.node.security.Keyring;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.client.ui.dist.model.RepoElem;
 import org.argeo.slc.repo.RepoConstants;
-import org.argeo.util.security.Keyring;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
@@ -30,13 +29,16 @@ import org.eclipse.jface.viewers.Viewer;
  * repository factory must be injected
  */
 public class DistTreeContentProvider implements ITreeContentProvider {
-       private Session nodeSession;
-       List<RepoElem> repositories = new ArrayList<RepoElem>();
+       private static final long serialVersionUID = -7640840211717811421L;
 
        /* DEPENDENCY INJECTION */
        private RepositoryFactory repositoryFactory;
        private Keyring keyring;
 
+       // Context
+       private Session nodeSession;
+       List<RepoElem> repositories = new ArrayList<RepoElem>();
+
        public Object[] getElements(Object input) {
                Repository nodeRepository = (Repository) input;
                try {
@@ -44,8 +46,7 @@ public class DistTreeContentProvider implements ITreeContentProvider {
                                dispose();
                        nodeSession = nodeRepository.login();
 
-                       String reposPath = UserJcrUtils.getUserHome(nodeSession).getPath()
-                                       + RepoConstants.REPOSITORIES_BASE_PATH;
+                       String reposPath = NodeUtils.getUserHome(nodeSession).getPath() + RepoConstants.REPOSITORIES_BASE_PATH;
 
                        if (!nodeSession.itemExists(reposPath))
                                initializeModel(nodeSession);
@@ -54,11 +55,9 @@ public class DistTreeContentProvider implements ITreeContentProvider {
                        while (repos.hasNext()) {
                                Node repoNode = repos.nextNode();
                                if (repoNode.isNodeType(ArgeoTypes.ARGEO_REMOTE_REPOSITORY)) {
-                                       String label = repoNode.isNodeType(NodeType.MIX_TITLE) ? repoNode
-                                                       .getProperty(Property.JCR_TITLE).getString()
-                                                       : repoNode.getName();
-                                       repositories.add(new RepoElem(repositoryFactory, keyring,
-                                                       repoNode, label));
+                                       String label = repoNode.isNodeType(NodeType.MIX_TITLE)
+                                                       ? repoNode.getProperty(Property.JCR_TITLE).getString() : repoNode.getName();
+                                       repositories.add(new RepoElem(repositoryFactory, keyring, repoNode, label));
                                }
                        }
                } catch (RepositoryException e) {
@@ -102,28 +101,24 @@ public class DistTreeContentProvider implements ITreeContentProvider {
 
        private void initializeModel(Session nodeSession) {
                try {
-
-                       Node homeNode = UserJcrUtils.getUserHome(nodeSession);
+                       Node homeNode = NodeUtils.getUserHome(nodeSession);
                        if (homeNode == null) // anonymous
                                throw new SlcException("User must be authenticated.");
 
                        // make sure base directory is available
-                       Node repos = JcrUtils.mkdirs(nodeSession, homeNode.getPath()
-                                       + RepoConstants.REPOSITORIES_BASE_PATH);
-                       nodeSession.save();
+                       Node repos = JcrUtils.mkdirs(homeNode, RepoConstants.REPOSITORIES_BASE_PATH,null);
+                       if (nodeSession.hasPendingChanges())
+                               nodeSession.save();
 
                        // register default local java repository
                        String alias = RepoConstants.DEFAULT_JAVA_REPOSITORY_ALIAS;
-                       Repository javaRepository = ArgeoJcrUtils.getRepositoryByAlias(
-                                       repositoryFactory, alias);
+                       Repository javaRepository = NodeUtils.getRepositoryByAlias(repositoryFactory, alias);
                        if (javaRepository != null) {
                                if (!repos.hasNode(alias)) {
-                                       Node repoNode = repos.addNode(alias,
-                                                       ArgeoTypes.ARGEO_REMOTE_REPOSITORY);
+                                       Node repoNode = repos.addNode(alias, ArgeoTypes.ARGEO_REMOTE_REPOSITORY);
                                        repoNode.setProperty(ArgeoNames.ARGEO_URI, "vm:///" + alias);
                                        repoNode.addMixin(NodeType.MIX_TITLE);
-                                       repoNode.setProperty(Property.JCR_TITLE,
-                                                       RepoConstants.DEFAULT_JAVA_REPOSITORY_LABEL);
+                                       repoNode.setProperty(Property.JCR_TITLE, RepoConstants.DEFAULT_JAVA_REPOSITORY_LABEL);
                                        nodeSession.save();
                                }
                        }