diff options
4 files changed, 23 insertions, 0 deletions
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/ITracClient.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/ITracClient.java index 5bf39f461..934afb101 100644 --- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/ITracClient.java +++ b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/ITracClient.java @@ -189,4 +189,6 @@ public interface ITracClient { void setProxy(Proxy proxy); + Date getTicketLastChanged(Integer id) throws TracException; + } diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java index 62b656a67..309908c5b 100644 --- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java +++ b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java @@ -180,6 +180,17 @@ public class TracRepositoryConnector extends AbstractRepositoryConnector { return false; } + if (ids.size() == 1) { + // getChangedTickets() is expected to always return at least one ticket because + // the repository synchronization timestamp is set to the most recent modification date + Integer id = ids.iterator().next(); + Date lastChanged = client.getTicketLastChanged(id); + if (since.equals(lastChanged)) { + // repository didn't actually change + return false; + } + } + for (AbstractTask task : tasks) { Integer id = getTicketId(task.getTaskId()); if (ids.contains(id)) { diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracWebClient.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracWebClient.java index a49d8ac37..9d16ac4e1 100644 --- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracWebClient.java +++ b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracWebClient.java @@ -699,4 +699,8 @@ public class TracWebClient extends AbstractTracClient { } + public Date getTicketLastChanged(Integer id) { + throw new UnsupportedOperationException(); + } + } diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracXmlRpcClient.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracXmlRpcClient.java index 0818811d2..aabf52984 100644 --- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracXmlRpcClient.java +++ b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracXmlRpcClient.java @@ -640,4 +640,10 @@ public class TracXmlRpcClient extends AbstractTracClient { } } + + public Date getTicketLastChanged(Integer id) throws TracException { + Object[] result = (Object[]) call("ticket.get", id); + return parseDate(result[2]); + } + }
\ No newline at end of file |