]> git.argeo.org Git - lgpl/argeo-commons.git/blob - model/RemoteRepositoryNode.java
Prepare next development cycle
[lgpl/argeo-commons.git] / model / RemoteRepositoryNode.java
1 package org.argeo.jcr.ui.explorer.model;
2
3 import java.util.Arrays;
4
5 import javax.jcr.Node;
6 import javax.jcr.Repository;
7 import javax.jcr.RepositoryException;
8 import javax.jcr.Session;
9 import javax.jcr.SimpleCredentials;
10
11 import org.argeo.eclipse.ui.TreeParent;
12 import org.argeo.jcr.ArgeoNames;
13 import org.argeo.jcr.security.JcrKeyring;
14
15 /** Root of a remote repository */
16 public class RemoteRepositoryNode extends RepositoryNode {
17 private JcrKeyring jcrKeyring;
18 private String remoteNodePath;
19
20 public RemoteRepositoryNode(String alias, Repository repository,
21 TreeParent parent, JcrKeyring jcrKeyring, String remoteNodePath) {
22 super(alias, repository, parent);
23 this.jcrKeyring = jcrKeyring;
24 this.remoteNodePath = remoteNodePath;
25 }
26
27 @Override
28 protected Session repositoryLogin(String workspaceName)
29 throws RepositoryException {
30 Node remoteNode = jcrKeyring.getSession().getNode(remoteNodePath);
31 String userID = remoteNode.getProperty(ArgeoNames.ARGEO_USER_ID)
32 .getString();
33 char[] password = jcrKeyring.getAsChars(remoteNodePath + "/"
34 + ArgeoNames.ARGEO_PASSWORD);
35 try {
36 SimpleCredentials credentials = new SimpleCredentials(userID,
37 password);
38 return getRepository().login(credentials, workspaceName);
39 } finally {
40 Arrays.fill(password, 0, password.length, ' ');
41 }
42 }
43
44 }