Bug 546773 : resolveWrapper() method for Mylyn handler
This method returns the original mylyn task given an
artifact wrapper.
diff --git a/bundles/org.eclipse.capra.handler.mylyn/META-INF/MANIFEST.MF b/bundles/org.eclipse.capra.handler.mylyn/META-INF/MANIFEST.MF
index 01ad864..65b00a7 100644
--- a/bundles/org.eclipse.capra.handler.mylyn/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.capra.handler.mylyn/META-INF/MANIFEST.MF
@@ -4,6 +4,7 @@
Bundle-SymbolicName: org.eclipse.capra.handler.mylyn;singleton:=true
Bundle-Version: 0.7.0.qualifier
Require-Bundle: org.eclipse.mylyn.tasks.core,
+ org.eclipse.mylyn.tasks.ui,
org.eclipse.capra.core,
org.eclipse.core.resources
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/bundles/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java b/bundles/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
index 050a367..9d373f7 100644
--- a/bundles/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
+++ b/bundles/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
@@ -13,8 +13,10 @@
*******************************************************************************/
package org.eclipse.capra.handler.mylyn;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
import org.eclipse.capra.core.adapters.Connection;
@@ -22,16 +24,21 @@
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
+import org.eclipse.mylyn.internal.tasks.core.TaskList;
+import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
import org.eclipse.mylyn.tasks.core.ITask;
/**
* A handler to allow tracing from and to tasks handled by Mylyn.
*/
+@SuppressWarnings("restriction")
public class MylynHandler extends AbstractArtifactHandler<ITask> {
@Override
public EObject createWrapper(ITask task, EObject artifactModel) {
ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
+
EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(), task.getUrl(),
task.getSummary(), task.getUrl());
return wrapper;
@@ -39,7 +46,15 @@
@Override
public ITask resolveWrapper(EObject wrapper) {
- // TODO Auto-generated method stub
+ ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
+ TaskList taskList = (TaskList) TasksUiInternal.getTaskList();
+ Collection<AbstractTask> allTasks = taskList.getAllTasks();
+ Optional<AbstractTask> task = allTasks.stream()
+ .filter(t -> t.getUrl().equals(adapter.getArtifactUri(wrapper)))
+ .findFirst();
+ if (task.isPresent()) {
+ return task.get();
+ } else
return null;
}