Skip to content
Snippets Groups Projects
Commit ee9fd73f authored by Stephan Eberle's avatar Stephan Eberle
Browse files

ASSIGNED - 446340: Add support for dynamic execution of MWE workflows

such that workflows can have direct access shared model instances
already loaded in Sphinx
https://bugs.eclipse.org/bugs/show_bug.cgi?id=446340

Optimized algorithm for retrieving model elements from selection for
performance and made sure that wrapped transitent item providers get
properly unwrapped before attempting to access the children of the
latter
parent ba04ffeb
Branches
Tags
No related merge requests found
......@@ -15,6 +15,7 @@
package org.eclipse.sphinx.emf.mwe.dynamic.ui.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.core.resources.IFile;
......@@ -106,35 +107,34 @@ public class WorkflowRunnerActionHandlerHelper {
}
protected List<EObject> getModelObjects(Object object) {
List<EObject> modelObjects = new ArrayList<EObject>();
// Model file or model resource
Resource resource = null;
if (object instanceof IFile) {
resource = EcorePlatformUtil.getResource((IFile) object);
}
if (object instanceof Resource) {
resource = (Resource) object;
}
if (resource != null) {
modelObjects.addAll(resource.getContents());
// Wrapped model object or model object
object = AdapterFactoryEditingDomain.unwrap(object);
if (object instanceof EObject) {
return Collections.singletonList((EObject) object);
}
// Group of model objects
if (object instanceof TransientItemProvider) {
TransientItemProvider provider = (TransientItemProvider) object;
List<EObject> modelObjects = new ArrayList<EObject>();
for (Object child : provider.getChildren(object)) {
modelObjects.addAll(getModelObjects(child));
}
return modelObjects;
}
// Wrapped model object or model object
object = AdapterFactoryEditingDomain.unwrap(object);
if (object instanceof EObject) {
modelObjects.add((EObject) object);
// Model file or model resource
Resource resource = null;
if (object instanceof IFile) {
resource = EcorePlatformUtil.getResource((IFile) object);
}
if (object instanceof Resource) {
resource = (Resource) object;
}
if (resource != null) {
return resource.getContents();
}
return modelObjects;
return Collections.emptyList();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment