| Summary: | Incorrect implementation of DelegatingEcoreEList.contains() method | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Modeling] EMF | Reporter: | Rimvydas <rimvydas> | ||||
| Component: | Core | Assignee: | Ed Merks <Ed.Merks> | ||||
| Status: | CLOSED FIXED | QA Contact: | |||||
| Severity: | blocker | ||||||
| Priority: | P3 | CC: | stepper | ||||
| Version: | 2.6.0 | ||||||
| Target Milestone: | --- | ||||||
| Hardware: | PC | ||||||
| OS: | Windows XP | ||||||
| Whiteboard: | |||||||
| Bug Depends on: | |||||||
| Bug Blocks: | 324521 | ||||||
| Attachments: |
|
||||||
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. |
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.