Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfbecker2010-08-15 19:03:57 +0000
committerfbecker2010-08-15 19:03:57 +0000
commit773d3a50a32e756ca365e39a103938ade5aa355b (patch)
tree98547f33038958a4da0f0228202729cf23cb8a32
parent1d50a596eee74e568b1bd88d272dd234ed363766 (diff)
downloadorg.eclipse.mylyn.tasks-773d3a50a32e756ca365e39a103938ade5aa355b.tar.gz
org.eclipse.mylyn.tasks-773d3a50a32e756ca365e39a103938ade5aa355b.tar.xz
org.eclipse.mylyn.tasks-773d3a50a32e756ca365e39a103938ade5aa355b.zip
ASSIGNED - bug 321054: (automatic) updates of configuration can cause loss of attribute options
https://bugs.eclipse.org/bugs/show_bug.cgi?id=321054
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaClient.java7
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java21
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java28
3 files changed, 50 insertions, 6 deletions
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaClient.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaClient.java
index 2dab796ae..6be626b5e 100644
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaClient.java
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaClient.java
@@ -27,6 +27,7 @@ import java.nio.charset.Charset;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -696,6 +697,12 @@ public class BugzillaClient {
} else {
repositoryConfiguration.setETagValue(null);
}
+ Header lastModifiedHeader = method.getResponseHeader("Last-Modified"); //$NON-NLS-1$
+ if (lastModifiedHeader != null) {
+ repositoryConfiguration.setLastModifiedHeader(lastModifiedHeader.getValue());
+ } else {
+ repositoryConfiguration.setLastModifiedHeader((Date) null);
+ }
if (repositoryConfiguration != null) {
boolean useXMLRPC = Boolean.parseBoolean(configParameters.get(IBugzillaConstants.BUGZILLA_USE_XMLRPC));
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java
index 5baf68e78..01dfb97fb 100644
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java
@@ -739,18 +739,29 @@ public class BugzillaRepositoryConnector extends AbstractRepositoryConnector {
configuration = repositoryConfigurations.get(repository.getRepositoryUrl());
if (configuration == null || forceRefresh) {
String eTag = null;
+ Date lastModifiedHeader = null;
if (configuration != null && !forceRefresh) {
eTag = configuration.getETagValue();
+ lastModifiedHeader = configuration.getLastModifiedHeader();
}
BugzillaClient client = getClientManager().getClient(repository, monitor);
configuration = client.getRepositoryConfiguration(monitor, eTag);
+ boolean newer = true;
if (configuration != null) {
- String configVersion = configuration.getInstallVersion().toString();
- String repositoryVersion = repository.getVersion();
- if (!configVersion.equals(repositoryVersion)) {
- repository.setVersion(configVersion);
+ if (lastModifiedHeader != null) {
+ Date configLastModifiedHeader = configuration.getLastModifiedHeader();
+ if (configLastModifiedHeader != null) {
+ newer = !configLastModifiedHeader.before(lastModifiedHeader);
+ }
+ }
+ if (newer) {
+ String configVersion = configuration.getInstallVersion().toString();
+ String repositoryVersion = repository.getVersion();
+ if (!configVersion.equals(repositoryVersion)) {
+ repository.setVersion(configVersion);
+ }
+ internalAddConfiguration(configuration);
}
- internalAddConfiguration(configuration);
}
}
}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java
index 138b24537..bf3eef050 100644
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java
@@ -13,8 +13,12 @@
package org.eclipse.mylyn.internal.bugzilla.core;
import java.io.Serializable;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -33,10 +37,13 @@ import org.eclipse.mylyn.tasks.core.data.TaskOperation;
*
* @author Rob Elves
* @author Charley Wang
+ * @author Frank Becker
*/
public class RepositoryConfiguration implements Serializable {
- private static final long serialVersionUID = -7248029094079799975L;
+ // old value private static final long serialVersionUID = -7248029094079799975L;
+
+ private static final long serialVersionUID = -7051029281842783666L;
private String repositoryUrl = "<unknown>"; //$NON-NLS-1$
@@ -80,6 +87,8 @@ public class RepositoryConfiguration implements Serializable {
private String eTagValue = null;
+ private Date lastModifiedHeader = null;
+
public RepositoryConfiguration() {
}
@@ -960,4 +969,21 @@ public class RepositoryConfiguration implements Serializable {
entry.setDefaultMilestone(defaultMilestone);
}
+ public Date getLastModifiedHeader() {
+ return lastModifiedHeader;
+ }
+
+ public void setLastModifiedHeader(Date lastModifiedHeader) {
+ this.lastModifiedHeader = lastModifiedHeader;
+ }
+
+ public void setLastModifiedHeader(String lastModifiedHeader) {
+ DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US); //$NON-NLS-1$
+ try {
+ this.lastModifiedHeader = df.parse(lastModifiedHeader);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ }
+
}

Back to the top