From 409b6d70d9c29aa3d7dad8a0d6b17ce8458c108c Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 8 Nov 2012 13:22:53 +0000 Subject: [PATCH] Connect later to remote repository in JCR explorer git-svn-id: https://svn.argeo.org/commons/trunk@5741 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../explorer/model/RemoteRepositoryNode.java | 23 +++++++++++++++---- .../ui/explorer/model/RepositoriesNode.java | 8 +------ .../jcr/ui/explorer/model/RepositoryNode.java | 2 +- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RemoteRepositoryNode.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RemoteRepositoryNode.java index 19ca3990b..5a67f92af 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RemoteRepositoryNode.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RemoteRepositoryNode.java @@ -20,11 +20,13 @@ import java.util.Arrays; import javax.jcr.Node; import javax.jcr.Repository; import javax.jcr.RepositoryException; +import javax.jcr.RepositoryFactory; import javax.jcr.Session; import javax.jcr.SimpleCredentials; import org.argeo.ArgeoException; import org.argeo.eclipse.ui.TreeParent; +import org.argeo.jcr.ArgeoJcrUtils; import org.argeo.jcr.ArgeoNames; import org.argeo.util.security.Keyring; @@ -38,10 +40,15 @@ public class RemoteRepositoryNode extends RepositoryNode { private final Session userSession; private final String remoteNodePath; - public RemoteRepositoryNode(String alias, Repository repository, - TreeParent parent, Session userSession, Keyring keyring, - String remoteNodePath) { - super(alias, repository, parent); + private final RepositoryFactory repositoryFactory; + private final String uri; + + public RemoteRepositoryNode(String alias, + RepositoryFactory repositoryFactory, String uri, TreeParent parent, + Session userSession, Keyring keyring, String remoteNodePath) { + super(alias, null, parent); + this.repositoryFactory = repositoryFactory; + this.uri = uri; this.keyring = keyring; this.userSession = userSession; this.remoteNodePath = remoteNodePath; @@ -66,6 +73,14 @@ public class RemoteRepositoryNode extends RepositoryNode { } } + @Override + public Repository getRepository() { + if (repository == null) + repository = ArgeoJcrUtils.getRepositoryByUri(repositoryFactory, + uri); + return super.getRepository(); + } + public void remove() { try { Node remoteNode = userSession.getNode(remoteNodePath); diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java index fe8293235..d36736a2c 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java @@ -105,14 +105,8 @@ public class RepositoriesNode extends TreeParent implements ArgeoNames { Node remoteNode = it.nextNode(); String uri = remoteNode.getProperty(ARGEO_URI).getString(); try { - Hashtable params = new Hashtable(); - params.put(ArgeoJcrConstants.JCR_REPOSITORY_URI, uri); - params.put(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS, - remoteNode.getName()); - Repository repository = repositoryFactory - .getRepository(params); RemoteRepositoryNode remoteRepositoryNode = new RemoteRepositoryNode( - remoteNode.getName(), repository, this, + remoteNode.getName(), repositoryFactory, uri, this, userSession, jcrKeyring, remoteNode.getPath()); super.addChild(remoteRepositoryNode); } catch (Exception e) { diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoryNode.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoryNode.java index 9d54647d7..9dd935201 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoryNode.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoryNode.java @@ -30,7 +30,7 @@ import org.argeo.eclipse.ui.TreeParent; public class RepositoryNode extends TreeParent implements UiNode { private String alias; - private final Repository repository; + protected Repository repository; private Session defaultSession = null; /** Create a new repository with alias = name */ -- 2.30.2