X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.client.ui.dist%2Fsrc%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fcontrollers%2FDistTreeContentProvider.java;h=b7e25d1ee47295433c29f481fdf36eb173307bfa;hb=e07ded4632e53f8b8869763bc1f1f4091361e76e;hp=b2c816be171ffce155c10e36494bb93c363690b6;hpb=2db415932b071525adb52c6374e021174512a924;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeContentProvider.java b/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeContentProvider.java index b2c816be1..b7e25d1ee 100644 --- a/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeContentProvider.java +++ b/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeContentProvider.java @@ -12,16 +12,16 @@ import javax.jcr.RepositoryFactory; import javax.jcr.Session; import javax.jcr.nodetype.NodeType; +import org.argeo.api.NodeConstants; +import org.argeo.api.NodeUtils; +import org.argeo.api.security.Keyring; +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.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,22 +30,24 @@ import org.eclipse.jface.viewers.Viewer; * repository factory must be injected */ public class DistTreeContentProvider implements ITreeContentProvider { - private Session nodeSession; - List repositories = new ArrayList(); + private static final long serialVersionUID = -7640840211717811421L; /* DEPENDENCY INJECTION */ private RepositoryFactory repositoryFactory; private Keyring keyring; + // Context + private Session nodeSession; + List repositories = new ArrayList(); + public Object[] getElements(Object input) { Repository nodeRepository = (Repository) input; try { if (nodeSession != null) dispose(); - nodeSession = nodeRepository.login(); + nodeSession = nodeRepository.login(NodeConstants.HOME_WORKSPACE); - 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 +56,10 @@ 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() + String label = repoNode.isNodeType(NodeType.MIX_TITLE) + ? repoNode.getProperty(Property.JCR_TITLE).getString() : repoNode.getName(); - repositories.add(new RepoElem(repositoryFactory, keyring, - repoNode, label)); + repositories.add(new RepoElem(repositoryFactory, keyring, repoNode, label)); } } } catch (RepositoryException e) { @@ -102,28 +103,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(); } }