diff options
author | spingel | 2007-01-16 05:49:20 +0000 |
---|---|---|
committer | spingel | 2007-01-16 05:49:20 +0000 |
commit | 233992048e6e0676ebb6ff9feb08b770181d1a50 (patch) | |
tree | fdb30a74a77a1914ed0ec188eee2ecda17006107 /org.eclipse.mylyn.trac.ui | |
parent | a34fd78e5b176502bb9d0ce040eccd87f80e0931 (diff) | |
download | org.eclipse.mylyn.tasks-233992048e6e0676ebb6ff9feb08b770181d1a50.tar.gz org.eclipse.mylyn.tasks-233992048e6e0676ebb6ff9feb08b770181d1a50.tar.xz org.eclipse.mylyn.tasks-233992048e6e0676ebb6ff9feb08b770181d1a50.zip |
REOPENED - bug 169729: display warning if user has insufficient privileges for xml-rpc access
https://bugs.eclipse.org/bugs/show_bug.cgi?id=169729
Diffstat (limited to 'org.eclipse.mylyn.trac.ui')
-rw-r--r-- | org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java | 62 |
1 files changed, 45 insertions, 17 deletions
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java index fecef4d55..b684ebaa2 100644 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java +++ b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java @@ -17,12 +17,15 @@ import java.net.Proxy; import java.net.URL; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.mylar.internal.trac.core.ITracClient; import org.eclipse.mylar.internal.trac.core.TracClientFactory; import org.eclipse.mylar.internal.trac.core.TracException; import org.eclipse.mylar.internal.trac.core.TracLoginException; +import org.eclipse.mylar.internal.trac.core.TracPermissionDeniedException; import org.eclipse.mylar.internal.trac.core.ITracClient.Version; import org.eclipse.mylar.internal.trac.ui.TracUiPlugin; import org.eclipse.mylar.tasks.core.RepositoryTemplate; @@ -49,14 +52,6 @@ public class TracRepositorySettingsPage extends AbstractRepositorySettingsPage { private Combo accessTypeCombo; - // private static RepositoryTemplate[] REPOSITORY_TEMPLATES = { new - // RepositoryTemplate("Edgewall", - // "http://trac.edgewall.org", Version.TRAC_0_9.toString(), null, null, - // true), - // // new TracRepositoryInfo("Mylar Trac Client", - // // "http://mylar.eclipse.org/mylar-trac-client", true, Version.XML_RPC), - // }; - /** Supported access types. */ private Version[] versions; @@ -70,7 +65,7 @@ public class TracRepositorySettingsPage extends AbstractRepositorySettingsPage { @Override protected void createAdditionalControls(final Composite parent) { - + for (RepositoryTemplate template : connector.getTemplates()) { serverUrlCombo.add(template.label); } @@ -96,7 +91,7 @@ public class TracRepositorySettingsPage extends AbstractRepositorySettingsPage { } } }); - + Label accessTypeLabel = new Label(parent, SWT.NONE); accessTypeLabel.setText("Access Type: "); accessTypeCombo = new Combo(parent, SWT.READ_ONLY); @@ -177,17 +172,45 @@ public class TracRepositorySettingsPage extends AbstractRepositorySettingsPage { final Proxy proxy = createTaskRepository().getProxy(); final Version[] result = new Version[1]; + final IStatus[] status = new IStatus[1]; getWizard().getContainer().run(true, false, new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask("Validating server settings", IProgressMonitor.UNKNOWN); try { if (version != null) { - ITracClient client = TracClientFactory.createClient(serverUrl, version, username, password, proxy); + ITracClient client = TracClientFactory.createClient(serverUrl, version, username, password, + proxy); client.validate(); } else { - result[0] = TracClientFactory.probeClient(serverUrl, username, password, proxy); - } + // probe version: XML-RPC access first, then web + // access + try { + ITracClient client = TracClientFactory.createClient(serverUrl, Version.XML_RPC, + username, password, proxy); + client.validate(); + result[0] = Version.XML_RPC; + } catch (TracException e) { + try { + ITracClient client = TracClientFactory.createClient(serverUrl, Version.TRAC_0_9, + username, password, proxy); + client.validate(); + result[0] = Version.TRAC_0_9; + if (e instanceof TracPermissionDeniedException) { + status[0] = new Status( + IStatus.INFO, + TracUiPlugin.PLUGIN_ID, + IStatus.OK, + "Insufficient permissions for XML-RPC access, falling back to web access.", + null); + } + } catch (TracLoginException e2) { + throw e; + } catch (TracException e2) { + throw new TracException(); + } + } + } } catch (Exception e) { throw new InvocationTargetException(e); } finally { @@ -196,7 +219,9 @@ public class TracRepositorySettingsPage extends AbstractRepositorySettingsPage { } }); - if (username.length() > 0) { + if (status[0] != null) { + MessageDialog.openInformation(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, status[0].getMessage()); + } else if (username.length() > 0) { MessageDialog.openInformation(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, "Authentication credentials are valid."); } else { @@ -212,13 +237,15 @@ public class TracRepositorySettingsPage extends AbstractRepositorySettingsPage { } else if (e.getCause() instanceof TracLoginException) { MessageDialog.openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, "Unable to authenticate with repository. Login credentials invalid."); + } else if (e.getCause() instanceof TracPermissionDeniedException) { + MessageDialog.openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, + "Insufficient permissions for selected access type."); } else if (e.getCause() instanceof TracException) { String message = "No Trac repository found at url"; if (e.getCause().getMessage() != null) { message += ": " + e.getCause().getMessage(); } - MessageDialog - .openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, message); + MessageDialog.openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, message); } else { MessageDialog.openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, MESSAGE_FAILURE_UNKNOWN); } @@ -228,4 +255,5 @@ public class TracRepositorySettingsPage extends AbstractRepositorySettingsPage { super.getWizard().getContainer().updateButtons(); } -}
\ No newline at end of file + +} |