Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspingel2007-01-16 05:49:20 +0000
committerspingel2007-01-16 05:49:20 +0000
commit233992048e6e0676ebb6ff9feb08b770181d1a50 (patch)
treefdb30a74a77a1914ed0ec188eee2ecda17006107 /org.eclipse.mylyn.trac.ui
parenta34fd78e5b176502bb9d0ce040eccd87f80e0931 (diff)
downloadorg.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.java62
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
+
+}

Back to the top