Community
Participate
Working Groups
Created attachment 173211 [details] Test project archive Open attached project. Run Test. Expected result: Test finished: no errors Actual result: Error found. index = 4 Error found. index = 5 Error found. index = 6 Test finished: errors found It seems that implementation of the org.eclipse.emf.ecore.util.DelegatingEcoreEList.contains(Object) method incorrect. in line 464: eObject.eContainerFeatureID() == getInverseFeatureID() eObject.eContainerFeatureID() - feature ID with offset getInverseFeatureID() - feature ID without offset It works ok with models with no multiple inheritance but fails with models that uses multiple inheritance.
I'm not set up to test CDO. Perhaps the test should be written as eObject.eContainingFeature() == getInverseEReference()
From what Rimvydas explains I have the *feeling* that it is obviously an EMF issue. Probably simple to fix, right?
Another possible fix is this, but I think that wouldn't perform as well. eObject.eBaseStructuralFeatureID(eObject.eContainerFeatureID(), getInverseFeatureClass()) == getInverseFeatureID() I think it should be equivalent to the other fix. Hopefully Eike can test these fixes out.
With the above change the Test now prints: refD collection class: org.eclipse.emf.ecore.impl.EStoreEObjectImpl$BasicEStoreEList Test finished: no errors
The fix is committed to CVS for 2.6.
The fix is available in the latest build for the stream.