Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrelves2011-03-03 04:31:56 +0000
committerrelves2011-03-03 04:31:56 +0000
commitc6199eb84a3f25a9acb7985a4d4f8d497c15b37d (patch)
tree5e4d2d7eb17ab045922678dff496604d0640ab77 /org.eclipse.mylyn.tasks.core
parent7f0b86d3bf0589c39d21413867ef9e067e51ba9f (diff)
downloadorg.eclipse.mylyn.tasks-c6199eb84a3f25a9acb7985a4d4f8d497c15b37d.tar.gz
org.eclipse.mylyn.tasks-c6199eb84a3f25a9acb7985a4d4f8d497c15b37d.tar.xz
org.eclipse.mylyn.tasks-c6199eb84a3f25a9acb7985a4d4f8d497c15b37d.zip
338763: [api] support propagating data object to ITaskDataManagerListener
https://bugs.eclipse.org/bugs/show_bug.cgi?id=338763
Diffstat (limited to 'org.eclipse.mylyn.tasks.core')
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java15
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManagerEvent.java22
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SubmitTaskJob.java2
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java2
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java26
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/SynchronizationJob.java1
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/TaskJob.java1
7 files changed, 48 insertions, 21 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java
index e71965989..a96fadcc4 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManager.java
@@ -25,6 +25,8 @@ import org.eclipse.core.runtime.ISafeRunnable;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.SafeRunner;
import org.eclipse.core.runtime.Status;
+import org.eclipse.mylyn.commons.core.DelegatingProgressMonitor;
+import org.eclipse.mylyn.commons.core.IDelegatingProgressMonitor;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.ITaskListRunnable;
@@ -178,6 +180,11 @@ public class TaskDataManager implements ITaskDataManager {
public void putUpdatedTaskData(final ITask itask, final TaskData taskData, final boolean user, Object token)
throws CoreException {
+ putUpdatedTaskData(itask, taskData, user, null, null);
+ }
+
+ public void putUpdatedTaskData(final ITask itask, final TaskData taskData, final boolean user, Object token,
+ IProgressMonitor monitor) throws CoreException {
final AbstractTask task = (AbstractTask) itask;
Assert.isNotNull(task);
Assert.isNotNull(taskData);
@@ -187,6 +194,10 @@ public class TaskDataManager implements ITaskDataManager {
final boolean taskDataChanged = connector.hasTaskChanged(repository, task, taskData);
final TaskDataManagerEvent event = new TaskDataManagerEvent(this, itask, taskData, token);
event.setTaskDataChanged(taskDataChanged);
+ IDelegatingProgressMonitor delegatingMonitor = DelegatingProgressMonitor.getMonitorFrom(monitor);
+ if (delegatingMonitor != null) {
+ event.setData(delegatingMonitor.getData());
+ }
final boolean[] synchronizationStateChanged = new boolean[1];
if (taskDataChanged || user) {
taskList.run(new ITaskListRunnable() {
@@ -407,7 +418,8 @@ public class TaskDataManager implements ITaskDataManager {
return findFile(task, kind).exists();
}
- public void putSubmittedTaskData(final ITask itask, final TaskData taskData) throws CoreException {
+ public void putSubmittedTaskData(final ITask itask, final TaskData taskData, IDelegatingProgressMonitor monitor)
+ throws CoreException {
final AbstractTask task = (AbstractTask) itask;
Assert.isNotNull(task);
Assert.isNotNull(taskData);
@@ -416,6 +428,7 @@ public class TaskDataManager implements ITaskDataManager {
task.getRepositoryUrl());
final TaskDataManagerEvent event = new TaskDataManagerEvent(this, itask, taskData, null);
event.setTaskDataChanged(true);
+ event.setData(((DelegatingProgressMonitor) monitor).getData());
taskList.run(new ITaskListRunnable() {
public void execute(IProgressMonitor monitor) throws CoreException {
if (!taskData.isPartial()) {
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManagerEvent.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManagerEvent.java
index 1cd4196ba..859f9b9fc 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManagerEvent.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/data/TaskDataManagerEvent.java
@@ -25,6 +25,8 @@ public class TaskDataManagerEvent extends EventObject {
private static final long serialVersionUID = 1L;
+ private Object data;
+
private final ITask task;
private boolean taskChanged;
@@ -37,6 +39,14 @@ public class TaskDataManagerEvent extends EventObject {
private final Object token;
+ public TaskDataManagerEvent(ITaskDataManager source, ITask task) {
+ super(source);
+ Assert.isNotNull(task);
+ this.task = task;
+ this.taskData = null;
+ this.token = null;
+ }
+
public TaskDataManagerEvent(ITaskDataManager source, ITask task, TaskData taskData, Object token) {
super(source);
Assert.isNotNull(task);
@@ -46,12 +56,8 @@ public class TaskDataManagerEvent extends EventObject {
this.token = token;
}
- public TaskDataManagerEvent(ITaskDataManager source, ITask task) {
- super(source);
- Assert.isNotNull(task);
- this.task = task;
- this.taskData = null;
- this.token = null;
+ public Object getData() {
+ return data;
}
public ITask getTask() {
@@ -78,6 +84,10 @@ public class TaskDataManagerEvent extends EventObject {
return token;
}
+ public void setData(Object data) {
+ this.data = data;
+ }
+
public void setTaskChanged(boolean taskChanged) {
this.taskChanged = taskChanged;
}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SubmitTaskJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SubmitTaskJob.java
index d65b7f475..c7df9ffaa 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SubmitTaskJob.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SubmitTaskJob.java
@@ -94,7 +94,7 @@ public class SubmitTaskJob extends SubmitJob {
TaskData updatedTaskData = connector.getTaskData(taskRepository, taskId,
Policy.subMonitorFor(monitor, 100));
task = createTask(monitor, updatedTaskData);
- taskDataManager.putSubmittedTaskData(task, updatedTaskData);
+ taskDataManager.putSubmittedTaskData(task, updatedTaskData, monitor);
fireTaskSynchronized(monitor);
} catch (CoreException e) {
errorStatus = e.getStatus();
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java
index 8e15390a0..54adc439f 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeQueriesJob.java
@@ -173,7 +173,7 @@ public class SynchronizeQueriesJob extends SynchronizationJob {
@Override
public void putTaskData(ITask task, TaskData taskData) throws CoreException {
boolean changed = connector.hasTaskChanged(repository, task, taskData);
- taskDataManager.putUpdatedTaskData(task, taskData, isUser(), this);
+ taskDataManager.putUpdatedTaskData(task, taskData, isUser(), this, monitor);
if (taskData.isPartial()) {
if (changed && connector.canSynchronizeTask(repository, task)) {
markStale(task);
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java
index 3348f171d..bee3c788f 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/sync/SynchronizeTasksJob.java
@@ -194,6 +194,9 @@ public class SynchronizeTasksJob extends SynchronizationJob {
}
private void runInternal(Set<ITask> tasks, IProgressMonitor monitor) {
+ if (!isUser()) {
+ monitor = Policy.backgroundMonitorFor(monitor);
+ }
try {
monitor.beginTask(Messages.SynchronizeTasksJob_Processing, tasks.size() * 100);
if (canGetMultiTaskData(taskRepository)) {
@@ -241,7 +244,7 @@ public class SynchronizeTasksJob extends SynchronizationJob {
String taskId = task.getTaskId();
TaskData taskData = connector.getTaskData(taskRepository, taskId, monitor);
if (taskData != null) {
- updateFromTaskData(taskRepository, task, taskData);
+ updateFromTaskData(taskRepository, task, taskData, monitor);
return;
}
throw new CoreException(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN,
@@ -256,7 +259,7 @@ public class SynchronizeTasksJob extends SynchronizationJob {
TaskData taskData = connector.getTaskData(taskRepository, taskId, monitor);
if (taskData != null) {
- return createFromTaskData(taskRepository, taskId, taskData);
+ return createFromTaskData(taskRepository, taskId, taskData, monitor);
}
throw new CoreException(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN,
@@ -270,7 +273,7 @@ public class SynchronizeTasksJob extends SynchronizationJob {
}
}
- private void synchronizeTasks(IProgressMonitor monitor, final TaskRepository repository, Set<ITask> tasks)
+ private void synchronizeTasks(final IProgressMonitor monitor, final TaskRepository repository, Set<ITask> tasks)
throws CoreException {
monitor.subTask(MessageFormat.format(Messages.SynchronizeTasksJob_Receiving_X_tasks_from_X, tasks.size(),
repository.getRepositoryLabel()));
@@ -285,7 +288,7 @@ public class SynchronizeTasksJob extends SynchronizationJob {
public void accept(TaskData taskData) {
ITask task = idToTask.remove(taskData.getTaskId());
if (task != null) {
- updateFromTaskData(repository, task, taskData);
+ updateFromTaskData(repository, task, taskData, monitor);
}
}
@@ -298,16 +301,15 @@ public class SynchronizeTasksJob extends SynchronizationJob {
}
};
- if (!isUser()) {
- monitor = Policy.backgroundMonitorFor(monitor);
- }
Set<String> taskIds = Collections.unmodifiableSet(new HashSet<String>(idToTask.keySet()));
connector.getTaskDataHandler().getMultiTaskData(repository, taskIds, collector, monitor);
}
- private void updateFromTaskData(TaskRepository taskRepository, ITask task, TaskData taskData) {
+ private void updateFromTaskData(TaskRepository taskRepository, ITask task, TaskData taskData,
+ IProgressMonitor monitor) {
try {
- taskDataManager.putUpdatedTaskData(task, taskData, isUser(), getSession());
+
+ taskDataManager.putUpdatedTaskData(task, taskData, isUser(), getSession(), monitor);
if (updateRelations) {
Collection<TaskRelation> relations = connector.getTaskRelations(taskData);
if (relations != null) {
@@ -319,11 +321,11 @@ public class SynchronizeTasksJob extends SynchronizationJob {
}
}
- private ITask createFromTaskData(TaskRepository taskRepository, String taskId, TaskData taskData)
- throws CoreException {
+ private ITask createFromTaskData(TaskRepository taskRepository, String taskId, TaskData taskData,
+ IProgressMonitor monitor) throws CoreException {
ITask task = tasksModel.createTask(taskRepository, taskData.getTaskId());
((AbstractTask) task).setSynchronizationState(SynchronizationState.INCOMING_NEW);
- taskDataManager.putUpdatedTaskData(task, taskData, isUser(), getSession());
+ taskDataManager.putUpdatedTaskData(task, taskData, isUser(), getSession(), monitor);
return task;
}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/SynchronizationJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/SynchronizationJob.java
index 77e7addb5..4cc00d282 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/SynchronizationJob.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/SynchronizationJob.java
@@ -37,6 +37,7 @@ public abstract class SynchronizationJob extends Job {
public SynchronizationJob(String name) {
super(name);
this.monitor = new DelegatingProgressMonitor();
+ this.monitor.setData(this);
}
// public boolean isChangedTasksSynchronization() {
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/TaskJob.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/TaskJob.java
index 47d95d0d0..91dd8f4b3 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/TaskJob.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/sync/TaskJob.java
@@ -33,6 +33,7 @@ public abstract class TaskJob extends Job {
public TaskJob(String name) {
super(name);
this.monitor = new DelegatingProgressMonitor();
+ this.monitor.setData(this);
}
/**

Back to the top