Connect later to remote repository in JCR explorer
[lgpl/argeo-commons.git] / server / plugins / org.argeo.jcr.ui.explorer / src / main / java / org / argeo / jcr / ui / explorer / model / RemoteRepositoryNode.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);