X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fplugins%2Forg.argeo.jcr.ui.explorer%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjcr%2Fui%2Fexplorer%2Fcommands%2FAddRemoteRepository.java;h=e41edfca875163fa11fdd3353442e08f0e0fd1f2;hb=e567e77bace1738a88e06d09ec5c7f3c1fae3fc2;hp=b7d4e030a2439b9267f66158146e3517b69a2a09;hpb=0450e423bd759c9e27b43044670e659271392d71;p=lgpl%2Fargeo-commons.git diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/commands/AddRemoteRepository.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/commands/AddRemoteRepository.java index b7d4e030a..e41edfca8 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/commands/AddRemoteRepository.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/commands/AddRemoteRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2012 Mathieu Baudier + * Copyright (C) 2007-2012 Argeo GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,13 +26,14 @@ import javax.jcr.SimpleCredentials; import org.argeo.ArgeoException; import org.argeo.eclipse.ui.ErrorFeedback; +import org.argeo.eclipse.ui.utils.CommandUtils; import org.argeo.jcr.ArgeoJcrConstants; import org.argeo.jcr.ArgeoNames; import org.argeo.jcr.ArgeoTypes; import org.argeo.jcr.JcrUtils; import org.argeo.jcr.UserJcrUtils; -import org.argeo.jcr.security.JcrKeyring; import org.argeo.jcr.ui.explorer.JcrExplorerConstants; +import org.argeo.util.security.Keyring; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; @@ -62,12 +63,14 @@ public class AddRemoteRepository extends AbstractHandler implements JcrExplorerConstants, ArgeoNames { private RepositoryFactory repositoryFactory; - private JcrKeyring keyring; + private Repository nodeRepository; + private Keyring keyring; public Object execute(ExecutionEvent event) throws ExecutionException { RemoteRepositoryLoginDialog dlg = new RemoteRepositoryLoginDialog( Display.getDefault().getActiveShell()); if (dlg.open() == Dialog.OK) { + CommandUtils.callCommand(Refresh.ID); } return null; } @@ -76,10 +79,14 @@ public class AddRemoteRepository extends AbstractHandler implements this.repositoryFactory = repositoryFactory; } - public void setKeyring(JcrKeyring keyring) { + public void setKeyring(Keyring keyring) { this.keyring = keyring; } + public void setNodeRepository(Repository nodeRepository) { + this.nodeRepository = nodeRepository; + } + class RemoteRepositoryLoginDialog extends TitleAreaDialog { private Text name; private Text uri; @@ -106,7 +113,7 @@ public class AddRemoteRepository extends AbstractHandler implements setMessage("Login to remote repository", IMessageProvider.NONE); name = createLT(composite, "Name", "remoteRepository"); uri = createLT(composite, "URI", - "http://localhost:7070/org.argeo.jcr.webapp/remoting/node"); + "http://localhost:7070/data/jcr/node"); username = createLT(composite, "User", ""); password = createLP(composite, "Password"); @@ -157,8 +164,9 @@ public class AddRemoteRepository extends AbstractHandler implements @Override protected void okPressed() { + Session nodeSession = null; try { - Session nodeSession = keyring.getSession(); + nodeSession = nodeRepository.login(); Node home = UserJcrUtils.getUserHome(nodeSession); Node remote = home.hasNode(ARGEO_REMOTE) ? home @@ -171,11 +179,13 @@ public class AddRemoteRepository extends AbstractHandler implements ArgeoTypes.ARGEO_REMOTE_REPOSITORY); remoteRepository.setProperty(ARGEO_URI, uri.getText()); remoteRepository.setProperty(ARGEO_USER_ID, username.getText()); - Node pwd = remoteRepository.addNode(ARGEO_PASSWORD); - pwd.getSession().save(); - if (saveInKeyring.getSelection()) - keyring.set(pwd.getPath(), password.getText().toCharArray()); - keyring.getSession().save(); + nodeSession.save(); + if (saveInKeyring.getSelection()) { + String pwdPath = remoteRepository.getPath() + '/' + + ARGEO_PASSWORD; + keyring.set(pwdPath, password.getText().toCharArray()); + } + nodeSession.save(); MessageDialog.openInformation( getParentShell(), "Repository Added", @@ -185,6 +195,8 @@ public class AddRemoteRepository extends AbstractHandler implements super.okPressed(); } catch (Exception e) { ErrorFeedback.show("Cannot add remote repository", e); + } finally { + JcrUtils.logoutQuietly(nodeSession); } }