1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public static void updateObject(EObject source, EObject newValue) {
// Search for all references to this object
EditingDomain editingDomain = AdapterFactoryEditingDomain.getEditingDomainFor(source);
Collection<EObject> eObjects = new LinkedHashSet<EObject>();
eObjects.add(source);
for (Iterator<EObject> j = (source).eAllContents(); j.hasNext(); )
{
eObjects.add(j.next());
}
Map<EObject, Collection<EStructuralFeature.Setting>> usages = EcoreUtil.UsageCrossReferencer.findAll(eObjects, editingDomain.getResourceSet());
// Browse all references in order to update the object
for (Iterator<EStructuralFeature.Setting> ite = usages.get(source).iterator(); ite.hasNext();) {
EStructuralFeature.Setting setting = ite.next();
EcoreUtil.replace(setting, setting.getEObject(), newValue);
}
EcoreUtil.replace(source, newValue);
} |
Partager