Connect later to remote repository in JCR explorer
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 8 Nov 2012 13:22:53 +0000 (13:22 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 8 Nov 2012 13:22:53 +0000 (13:22 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@5741 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RemoteRepositoryNode.java
server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java
server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoryNode.java

index 19ca3990b2a00540f2b61e516753427c3c822c63..5a67f92afef388e4d71a5f389f2b2cbffccb0e09 100644 (file)
@@ -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);
index fe82932354cc1bcfa850f43f06946adca60085b3..d36736a2c55aac226034703aa78da0a01ff3b9fb 100644 (file)
@@ -105,14 +105,8 @@ public class RepositoriesNode extends TreeParent implements ArgeoNames {
                                Node remoteNode = it.nextNode();
                                String uri = remoteNode.getProperty(ARGEO_URI).getString();
                                try {
-                                       Hashtable<String, String> params = new Hashtable<String, String>();
-                                       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) {
index 9d54647d7e77a59dc1d440b0657f6d1132c87189..9dd935201312aa0e4bee311e77cce9ae78b44740 100644 (file)
@@ -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 */