Lines 11-25
Link Here
|
11 |
|
11 |
|
12 |
package org.eclipse.mylyn.internal.tasks.core.sync; |
12 |
package org.eclipse.mylyn.internal.tasks.core.sync; |
13 |
|
13 |
|
|
|
14 |
import java.util.Collections; |
15 |
import java.util.List; |
14 |
import java.util.Set; |
16 |
import java.util.Set; |
15 |
|
17 |
|
16 |
import org.eclipse.core.runtime.CoreException; |
18 |
import org.eclipse.core.runtime.CoreException; |
17 |
import org.eclipse.core.runtime.IProgressMonitor; |
19 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
|
20 |
import org.eclipse.core.runtime.ISafeRunnable; |
18 |
import org.eclipse.core.runtime.IStatus; |
21 |
import org.eclipse.core.runtime.IStatus; |
19 |
import org.eclipse.core.runtime.OperationCanceledException; |
22 |
import org.eclipse.core.runtime.OperationCanceledException; |
|
|
23 |
import org.eclipse.core.runtime.SafeRunner; |
20 |
import org.eclipse.core.runtime.Status; |
24 |
import org.eclipse.core.runtime.Status; |
21 |
import org.eclipse.mylyn.commons.core.StatusHandler; |
|
|
22 |
import org.eclipse.mylyn.commons.net.Policy; |
23 |
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; |
25 |
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; |
24 |
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants.MutexSchedulingRule; |
26 |
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants.MutexSchedulingRule; |
25 |
import org.eclipse.mylyn.internal.tasks.core.TaskTask; |
27 |
import org.eclipse.mylyn.internal.tasks.core.TaskTask; |
Lines 28-33
Link Here
|
28 |
import org.eclipse.mylyn.tasks.core.ITask; |
30 |
import org.eclipse.mylyn.tasks.core.ITask; |
29 |
import org.eclipse.mylyn.tasks.core.RepositoryResponse; |
31 |
import org.eclipse.mylyn.tasks.core.RepositoryResponse; |
30 |
import org.eclipse.mylyn.tasks.core.RepositoryStatus; |
32 |
import org.eclipse.mylyn.tasks.core.RepositoryStatus; |
|
|
33 |
import org.eclipse.mylyn.tasks.core.TaskJobEvent; |
34 |
import org.eclipse.mylyn.tasks.core.TaskJobListener; |
31 |
import org.eclipse.mylyn.tasks.core.TaskRepository; |
35 |
import org.eclipse.mylyn.tasks.core.TaskRepository; |
32 |
import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler; |
36 |
import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler; |
33 |
import org.eclipse.mylyn.tasks.core.data.TaskAttribute; |
37 |
import org.eclipse.mylyn.tasks.core.data.TaskAttribute; |
Lines 49-69
Link Here
|
49 |
|
53 |
|
50 |
private ITask task; |
54 |
private ITask task; |
51 |
|
55 |
|
|
|
56 |
private final ITask originalTask; |
57 |
|
52 |
private final Set<TaskAttribute> oldAttributes; |
58 |
private final Set<TaskAttribute> oldAttributes; |
53 |
|
59 |
|
54 |
private final TaskDataManager taskDataManager; |
60 |
private final TaskDataManager taskDataManager; |
55 |
|
61 |
|
56 |
private RepositoryResponse response; |
62 |
private RepositoryResponse response; |
57 |
|
63 |
|
|
|
64 |
private final List<TaskJobListener> taskJobListeners; |
65 |
|
58 |
public SubmitTaskJob(TaskDataManager taskDataManager, AbstractRepositoryConnector connector, |
66 |
public SubmitTaskJob(TaskDataManager taskDataManager, AbstractRepositoryConnector connector, |
59 |
TaskRepository taskRepository, ITask task, TaskData taskData, Set<TaskAttribute> oldAttributes) { |
67 |
TaskRepository taskRepository, ITask task, TaskData taskData, Set<TaskAttribute> oldAttributes) { |
|
|
68 |
this(taskDataManager, connector, taskRepository, task, taskData, oldAttributes, |
69 |
Collections.<TaskJobListener> emptyList()); |
70 |
} |
71 |
|
72 |
public SubmitTaskJob(TaskDataManager taskDataManager, AbstractRepositoryConnector connector, |
73 |
TaskRepository taskRepository, ITask task, TaskData taskData, Set<TaskAttribute> oldAttributes, |
74 |
List<TaskJobListener> taskJobListeners) { |
60 |
super("Submitting Task"); //$NON-NLS-1$ |
75 |
super("Submitting Task"); //$NON-NLS-1$ |
61 |
this.taskDataManager = taskDataManager; |
76 |
this.taskDataManager = taskDataManager; |
62 |
this.connector = connector; |
77 |
this.connector = connector; |
63 |
this.taskRepository = taskRepository; |
78 |
this.taskRepository = taskRepository; |
64 |
this.task = task; |
79 |
this.task = task; |
|
|
80 |
this.originalTask = task; |
65 |
this.taskData = taskData; |
81 |
this.taskData = taskData; |
66 |
this.oldAttributes = oldAttributes; |
82 |
this.oldAttributes = oldAttributes; |
|
|
83 |
this.taskJobListeners = taskJobListeners; |
67 |
setRule(new MutexSchedulingRule()); |
84 |
setRule(new MutexSchedulingRule()); |
68 |
} |
85 |
} |
69 |
|
86 |
|
Lines 75-81
Link Here
|
75 |
try { |
92 |
try { |
76 |
monitor.beginTask(Messages.SubmitTaskJob_Submitting_task, |
93 |
monitor.beginTask(Messages.SubmitTaskJob_Submitting_task, |
77 |
2 * (1 + getSubmitJobListeners().length) * 100); |
94 |
2 * (1 + getSubmitJobListeners().length) * 100); |
78 |
|
95 |
fireTaskAboutToSubmit(); |
79 |
// post task data |
96 |
// post task data |
80 |
AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
97 |
AbstractTaskDataHandler taskDataHandler = connector.getTaskDataHandler(); |
81 |
monitor.subTask(Messages.SubmitTaskJob_Sending_data); |
98 |
monitor.subTask(Messages.SubmitTaskJob_Sending_data); |
Lines 96-101
Link Here
|
96 |
task = createTask(monitor, updatedTaskData); |
113 |
task = createTask(monitor, updatedTaskData); |
97 |
taskDataManager.putSubmittedTaskData(task, updatedTaskData, monitor); |
114 |
taskDataManager.putSubmittedTaskData(task, updatedTaskData, monitor); |
98 |
fireTaskSynchronized(monitor); |
115 |
fireTaskSynchronized(monitor); |
|
|
116 |
fireTaskSubmissionComplete(); |
99 |
} catch (CoreException e) { |
117 |
} catch (CoreException e) { |
100 |
errorStatus = e.getStatus(); |
118 |
errorStatus = e.getStatus(); |
101 |
} catch (OperationCanceledException e) { |
119 |
} catch (OperationCanceledException e) { |
Lines 115-120
Link Here
|
115 |
} |
133 |
} |
116 |
} |
134 |
} |
117 |
|
135 |
|
|
|
136 |
protected void fireTaskAboutToSubmit() { |
137 |
for (final TaskJobListener listener : taskJobListeners) { |
138 |
SafeRunner.run(new ISafeRunnable() { |
139 |
public void run() throws Exception { |
140 |
listener.aboutToSubmit(new TaskJobEvent(originalTask, task)); |
141 |
} |
142 |
|
143 |
public void handleException(Throwable e) { |
144 |
StatusHandler.log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, |
145 |
"Error thrown by TaskJobListener", e)); //$NON-NLS-1$ |
146 |
} |
147 |
}); |
148 |
} |
149 |
} |
150 |
|
151 |
protected void fireTaskSubmissionComplete() { |
152 |
for (final TaskJobListener listener : taskJobListeners) { |
153 |
SafeRunner.run(new ISafeRunnable() { |
154 |
public void run() throws Exception { |
155 |
listener.taskSubmitted(new TaskJobEvent(originalTask, task)); |
156 |
} |
157 |
|
158 |
public void handleException(Throwable e) { |
159 |
StatusHandler.log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, |
160 |
"Error thrown by TaskJobListener", e)); //$NON-NLS-1$ |
161 |
} |
162 |
}); |
163 |
} |
164 |
} |
165 |
|
118 |
private ITask createTask(IProgressMonitor monitor, TaskData updatedTaskData) throws CoreException { |
166 |
private ITask createTask(IProgressMonitor monitor, TaskData updatedTaskData) throws CoreException { |
119 |
if (taskData.isNew()) { |
167 |
if (taskData.isNew()) { |
120 |
task = new TaskTask(connector.getConnectorKind(), taskRepository.getRepositoryUrl(), |
168 |
task = new TaskTask(connector.getConnectorKind(), taskRepository.getRepositoryUrl(), |