diff options
Diffstat (limited to 'plugins/org.eclipse.xtend.util.stdlib/src/org/eclipse/xtend/util/stdlib/EmfUtils.java')
-rw-r--r-- | plugins/org.eclipse.xtend.util.stdlib/src/org/eclipse/xtend/util/stdlib/EmfUtils.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/plugins/org.eclipse.xtend.util.stdlib/src/org/eclipse/xtend/util/stdlib/EmfUtils.java b/plugins/org.eclipse.xtend.util.stdlib/src/org/eclipse/xtend/util/stdlib/EmfUtils.java new file mode 100644 index 00000000..4f6fe2f8 --- /dev/null +++ b/plugins/org.eclipse.xtend.util.stdlib/src/org/eclipse/xtend/util/stdlib/EmfUtils.java @@ -0,0 +1,26 @@ +package org.eclipse.xtend.util.stdlib; + +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EStructuralFeature.Setting; +import org.eclipse.emf.ecore.util.EcoreUtil.CrossReferencer; + +public class EmfUtils { + + public static final List<EObject> getReferencingObjects(EObject target) { + LinkedList<EObject> result = new LinkedList<EObject>(); + Collection<EStructuralFeature.Setting> settings = CrossReferencer.find(target.eResource().getContents()).get(target); + if (settings == null) { + return Collections.emptyList(); + } + for (Setting setting : settings) { + result.add(setting.getEObject()); + } + return result; + } +} |