Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfbecker2011-01-08 21:46:29 +0000
committerfbecker2011-01-08 21:46:29 +0000
commitdb9744deed061c7bc9b23390a28ea0ba146e451f (patch)
tree0168311a65cfe748fff40b4d0c369909ab8405af
parent8cdb47f7346f84339770f72b55f052ec91e09ac3 (diff)
downloadorg.eclipse.mylyn.tasks-db9744deed061c7bc9b23390a28ea0ba146e451f.tar.gz
org.eclipse.mylyn.tasks-db9744deed061c7bc9b23390a28ea0ba146e451f.tar.xz
org.eclipse.mylyn.tasks-db9744deed061c7bc9b23390a28ea0ba146e451f.zip
ASSIGNED - bug 333779: better way to handle configuration changes
https://bugs.eclipse.org/bugs/show_bug.cgi?id=333779
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF3
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java69
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/Messages.java4
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/messages.properties2
4 files changed, 73 insertions, 5 deletions
diff --git a/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF
index f35e757db..9ae4b4019 100644
--- a/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF
@@ -18,7 +18,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.mylyn.commons.core;bundle-version="[3.0.0,4.0.0)",
org.eclipse.mylyn.tasks.ui;bundle-version="[3.0.0,4.0.0)",
org.eclipse.mylyn.tasks.core;bundle-version="[3.0.0,4.0.0)",
- org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)"
+ org.eclipse.mylyn.commons.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.mylyn.commons.net;bundle-version="[3.0.0,4.0.0)"
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.mylyn.internal.bugzilla.ui;x-internal:=true,
org.eclipse.mylyn.internal.bugzilla.ui.action;x-internal:=true,
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java
index f09c9f2f3..7290249fd 100644
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java
@@ -24,9 +24,13 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.mylyn.commons.net.AuthenticationCredentials;
+import org.eclipse.mylyn.commons.net.AuthenticationType;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaClientFactory;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin;
@@ -35,9 +39,12 @@ import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaStatus;
import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants;
import org.eclipse.mylyn.internal.bugzilla.core.RepositoryConfiguration;
+import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil;
import org.eclipse.mylyn.internal.tasks.core.IRepositoryConstants;
import org.eclipse.mylyn.internal.tasks.core.RepositoryTemplateManager;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
+import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
+import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.RepositoryStatus;
import org.eclipse.mylyn.tasks.core.RepositoryTemplate;
import org.eclipse.mylyn.tasks.core.TaskRepository;
@@ -89,8 +96,6 @@ public class BugzillaRepositorySettingsPage extends AbstractRepositorySettingsPa
protected Text descriptorFile;
- private String oldDescriptorFile;
-
private Button cleanQAContact;
private RepositoryConfiguration repositoryConfiguration = null;
@@ -319,7 +324,6 @@ public class BugzillaRepositorySettingsPage extends AbstractRepositorySettingsPa
String file = repository.getProperty((IBugzillaConstants.BUGZILLA_DESCRIPTOR_FILE));
if (file != null) {
descriptorFile.setText(file);
- oldDescriptorFile = file;
}
}
}
@@ -452,7 +456,27 @@ public class BugzillaRepositorySettingsPage extends AbstractRepositorySettingsPa
@SuppressWarnings({ "restriction" })
@Override
- public void applyTo(TaskRepository repository) {
+ public void applyTo(final TaskRepository repository) {
+ AuthenticationCredentials repositoryAuth = repository.getCredentials(AuthenticationType.REPOSITORY);
+ AuthenticationCredentials httpAuth = repository.getCredentials(AuthenticationType.HTTP);
+ AuthenticationCredentials proxyAuth = repository.getCredentials(AuthenticationType.PROXY);
+ boolean changed = repository.getCharacterEncoding() != getCharacterEncoding()
+ || repository.getSavePassword(AuthenticationType.REPOSITORY) != getSavePassword()
+ || !repositoryAuth.getUserName().equals(getUserName())
+ || !repositoryAuth.getPassword().equals(getPassword())
+ || !repository.getProperty(TaskRepository.PROXY_HOSTNAME).equals(getProxyHostname())
+ || !repository.getProperty(TaskRepository.PROXY_PORT).equals(getProxyPort())
+ || Boolean.parseBoolean(repository.getProperty(IBugzillaConstants.BUGZILLA_USE_XMLRPC)) != useXMLRPCstatusTransitions.getSelection()
+ || !repository.getProperty(IBugzillaConstants.BUGZILLA_DESCRIPTOR_FILE)
+ .equals(descriptorFile.getText());
+ if (httpAuth != null) {
+ changed = changed || !httpAuth.getUserName().equals(getHttpAuthUserId())
+ || !httpAuth.getPassword().equals(getHttpAuthPassword());
+ }
+ if (proxyAuth != null) {
+ changed = changed || !proxyAuth.getUserName().equals(getProxyUserName())
+ || !proxyAuth.getPassword().equals(getProxyPassword());
+ }
super.applyTo(repository);
repository.setProperty(IRepositoryConstants.PROPERTY_CATEGORY, IRepositoryConstants.CATEGORY_BUGS);
repository.setProperty(IBugzillaConstants.REPOSITORY_SETTING_SHORT_LOGIN,
@@ -482,6 +506,43 @@ public class BugzillaRepositorySettingsPage extends AbstractRepositorySettingsPa
Boolean.toString(!usebugaliases.getSelection()));
repository.setProperty(IBugzillaConstants.BUGZILLA_PARAM_USE_SEE_ALSO,
Boolean.toString(!use_see_also.getSelection()));
+ if (changed) {
+ final String jobName = MessageFormat.format(
+ Messages.BugzillaRepositorySettingsPage_Updating_repository_configuration_for_X,
+ repository.getRepositoryUrl());
+ Job updateJob = new Job(jobName) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ monitor.beginTask(jobName, IProgressMonitor.UNKNOWN);
+ try {
+ performUpdate(repository, connector, monitor);
+ } finally {
+ monitor.done();
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ // show the progress in the system task bar if this is a user job (i.e. forced)
+ updateJob.setProperty(WorkbenchUtil.SHOW_IN_TASKBAR_ICON_PROPERTY, Boolean.TRUE);
+ updateJob.setUser(true);
+ updateJob.schedule();
+
+ }
+ }
+
+ public void performUpdate(final TaskRepository repository, final AbstractRepositoryConnector connector,
+ IProgressMonitor monitor) {
+ try {
+ connector.updateRepositoryConfiguration(repository, monitor);
+ } catch (final CoreException e) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ TasksUiInternal.displayStatus(
+ Messages.BugzillaRepositorySettingsPage_Error_updating_repository_configuration,
+ e.getStatus());
+ }
+ });
+ }
}
@Override
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/Messages.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/Messages.java
index 62ab2c246..b94398ebb 100644
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/Messages.java
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/Messages.java
@@ -81,6 +81,8 @@ public class Messages extends NLS {
public static String BugzillaRepositorySettingsPage_DescriptorFileNotExists;
+ public static String BugzillaRepositorySettingsPage_Error_updating_repository_configuration;
+
public static String BugzillaRepositorySettingsPage_local_users_enabled;
public static String BugzillaRepositorySettingsPage_override_auto_detection_of_platform;
@@ -107,6 +109,8 @@ public class Messages extends NLS {
public static String BugzillaRepositorySettingsPage_usetargetmilestone;
+ public static String BugzillaRepositorySettingsPage_Updating_repository_configuration_for_X;
+
public static String BugzillaRepositorySettingsPage_UseXmlRpc;
public static String BugzillaRepositorySettingsPage_Validating_server_settings;
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/messages.properties b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/messages.properties
index 7b9b6902f..932315c93 100644
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/messages.properties
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/messages.properties
@@ -39,6 +39,7 @@ BugzillaRepositorySettingsPage_Language_=Language:
BugzillaRepositorySettingsPage_descriptor_file=Workflow description file:
BugzillaRepositorySettingsPage_DescriptorCannotBeApplied=<Not available -- please initialize repository.>
BugzillaRepositorySettingsPage_DescriptorFileNotExists=Descriptor File does not exist
+BugzillaRepositorySettingsPage_Error_updating_repository_configuration=Error updating repository configuration
BugzillaRepositorySettingsPage_local_users_enabled=Local users enabled:
BugzillaRepositorySettingsPage_override_auto_detection_of_platform=Override auto detection of Platform and OS for new bug reports.
BugzillaRepositorySettingsPage_RequiresBugzilla3_6=Requires Bugzilla > 3.6
@@ -52,6 +53,7 @@ BugzillaRepositorySettingsPage_useclassification=Classification
BugzillaRepositorySettingsPage_useqacontact=QA Contact
BugzillaRepositorySettingsPage_usestatuswhiteboard=Status Whiteboard
BugzillaRepositorySettingsPage_usetargetmilestone=Target Milestone
+BugzillaRepositorySettingsPage_Updating_repository_configuration_for_X=Updating repository configuration for {0}
BugzillaRepositorySettingsPage_UseXmlRpc=Use xmlrpc.cgi
BugzillaRepositorySettingsPage_Validating_server_settings=Validating server settings
BugzillaTaskAttachmentPage_Advanced=Advanced

Back to the top