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=b7d4e030a2439b9267f66158146e3517b69a2a09;hb=0450e423bd759c9e27b43044670e659271392d71;hp=209dcdc6a1ebd68c7709b6573af6292db47a8f22;hpb=6bb0606505be3e99021c5ff9771c719eb1e1f2e7;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 209dcdc6a..b7d4e030a 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,3 +1,18 @@ +/* + * Copyright (C) 2007-2012 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.argeo.jcr.ui.explorer.commands; import java.net.URI; @@ -15,6 +30,7 @@ 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.eclipse.core.commands.AbstractHandler; @@ -37,7 +53,6 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; -import org.osgi.framework.BundleContext; /** * Connect to a remote repository and, if successful publish it as an OSGi @@ -47,37 +62,13 @@ public class AddRemoteRepository extends AbstractHandler implements JcrExplorerConstants, ArgeoNames { private RepositoryFactory repositoryFactory; - private BundleContext bundleContext; - private JcrKeyring keyring; public Object execute(ExecutionEvent event) throws ExecutionException { - String uri = null; - if (event.getParameters().containsKey(PARAM_REPOSITORY_URI)) { - // FIXME remove this - uri = event.getParameter(PARAM_REPOSITORY_URI); - if (uri == null) - return null; - - try { - Hashtable params = new Hashtable(); - params.put(ArgeoJcrConstants.JCR_REPOSITORY_URI, uri); - // by default we use the URI as alias - params.put(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS, uri); - Repository repository = repositoryFactory.getRepository(params); - bundleContext.registerService(Repository.class.getName(), - repository, params); - } catch (Exception e) { - ErrorFeedback.show("Cannot add remote repository " + uri, e); - } - } else { - RemoteRepositoryLoginDialog dlg = new RemoteRepositoryLoginDialog( - Display.getDefault().getActiveShell()); - if (dlg.open() == Dialog.OK) { - // uri = dlg.getUri(); - } + RemoteRepositoryLoginDialog dlg = new RemoteRepositoryLoginDialog( + Display.getDefault().getActiveShell()); + if (dlg.open() == Dialog.OK) { } - return null; } @@ -85,10 +76,6 @@ public class AddRemoteRepository extends AbstractHandler implements this.repositoryFactory = repositoryFactory; } - public void setBundleContext(BundleContext bundleContext) { - this.bundleContext = bundleContext; - } - public void setKeyring(JcrKeyring keyring) { this.keyring = keyring; } @@ -98,6 +85,7 @@ public class AddRemoteRepository extends AbstractHandler implements private Text uri; private Text username; private Text password; + private Button saveInKeyring; public RemoteRepositoryLoginDialog(Shell parentShell) { super(parentShell); @@ -121,6 +109,8 @@ public class AddRemoteRepository extends AbstractHandler implements "http://localhost:7070/org.argeo.jcr.webapp/remoting/node"); username = createLT(composite, "User", ""); password = createLP(composite, "Password"); + + saveInKeyring = createLC(composite, "Remember password", false); parent.pack(); return composite; } @@ -144,9 +134,6 @@ public class AddRemoteRepository extends AbstractHandler implements Hashtable params = new Hashtable(); params.put(ArgeoJcrConstants.JCR_REPOSITORY_URI, checkedUriStr); - // by default we use the URI as alias - params.put(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS, - checkedUriStr); Repository repository = repositoryFactory.getRepository(params); if (username.getText().trim().equals("")) {// anonymous session = repository.login(); @@ -172,7 +159,8 @@ public class AddRemoteRepository extends AbstractHandler implements protected void okPressed() { try { Session nodeSession = keyring.getSession(); - Node home = JcrUtils.getUserHome(nodeSession); + Node home = UserJcrUtils.getUserHome(nodeSession); + Node remote = home.hasNode(ARGEO_REMOTE) ? home .getNode(ARGEO_REMOTE) : home.addNode(ARGEO_REMOTE); if (remote.hasNode(name.getText())) @@ -184,13 +172,16 @@ public class AddRemoteRepository extends AbstractHandler implements remoteRepository.setProperty(ARGEO_URI, uri.getText()); remoteRepository.setProperty(ARGEO_USER_ID, username.getText()); Node pwd = remoteRepository.addNode(ARGEO_PASSWORD); - keyring.set(pwd.getPath(), password.getText().toCharArray()); - nodeSession.save(); + pwd.getSession().save(); + if (saveInKeyring.getSelection()) + keyring.set(pwd.getPath(), password.getText().toCharArray()); + keyring.getSession().save(); MessageDialog.openInformation( getParentShell(), "Repository Added", "Remote repository '" + username.getText() + "@" + uri.getText() + "' added"); + super.okPressed(); } catch (Exception e) { ErrorFeedback.show("Cannot add remote repository", e); @@ -206,6 +197,16 @@ public class AddRemoteRepository extends AbstractHandler implements return text; } + /** Creates label and check. */ + protected Button createLC(Composite parent, String label, + Boolean initial) { + new Label(parent, SWT.NONE).setText(label); + Button check = new Button(parent, SWT.CHECK); + check.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + check.setSelection(initial); + return check; + } + protected Text createLP(Composite parent, String label) { new Label(parent, SWT.NONE).setText(label); Text text = new Text(parent, SWT.SINGLE | SWT.LEAD | SWT.BORDER