Community
Participate
Working Groups
When merging changes, the org.eclipse.emf.compare.diff.internal.merge.impl.ReferenceOrderChangeMerger computes the new value to set (which is a collection) using Google collections (in the doUndoInTarget() and doApplyInOrigin() methods). But when calling EFactory.eSet with this value, this may cause a class cast exception, as if the DelegatingEcoreEList.set(Object newValue) method is called, it casts the new value as a list (although the ReferenceORderChangeMerger created a com.google.common.collect.Collections2$FilteredCollection). Issue can be easilly resolved by creating a list out of the filtered collection (for example with Lists.newArrayList(Collections2.filter(...)). Caused by: java.lang.ClassCastException: com.google.common.collect.Collections2$FilteredCollection cannot be cast to java.util.List at org.eclipse.emf.ecore.util.DelegatingEcoreEList.set(DelegatingEcoreEList.java:564) at org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSettingDelegateMany.dynamicSet(EStructuralFeatureImpl.java:1734) at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicSet(BasicEObjectImpl.java:1137) at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:1111) at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:1081) at org.eclipse.emf.compare.util.EFactory.eSet(EFactory.java:335) at org.eclipse.emf.compare.diff.internal.merge.impl.ReferenceOrderChangeMerger.doUndoInTarget(ReferenceOrderChangeMerger.java:76) at org.eclipse.emf.compare.diff.merge.DefaultMerger.undoInTarget(DefaultMerger.java:174) at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:176) at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:140) at org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMerger.undoInTarget(DiffGroupMerger.java:47) at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:176) at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:140) at org.eclipse.emf.compare.diff.internal.merge.impl.DiffGroupMerger.undoInTarget(DiffGroupMerger.java:47) at org.eclipse.emf.compare.diff.merge.service.MergeService.doMerge(MergeService.java:176) at org.eclipse.emf.compare.diff.merge.service.MergeService.merge(MergeService.java:140)
Fixed in commit c308a0e015525ed83903914dafb6a0b1c50f544d
batch-closing a bunch of "RESOLVED" bugs.