Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 75922 - [Plan Item] Content adapter for managing reverse of 1-way references (reference map)
Summary: [Plan Item] Content adapter for managing reverse of 1-way references (referen...
Status: VERIFIED FIXED
Alias: None
Product: EMF
Classification: Modeling
Component: Core (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows XP
: P1 enhancement with 6 votes (vote)
Target Milestone: Past   Edit
Assignee: Marcelo Paternostro CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 85179 101607
  Show dependency tree
 
Reported: 2004-10-08 12:57 EDT by Marcelo Paternostro CLA
Modified: 2008-01-28 16:48 EST (History)
9 users (show)

See Also:


Attachments
testcase. An uml2 resource containing all JDK classes (1.03 MB, application/zip)
2004-11-15 06:13 EST, Ermengol Bota CLA
no flags Details
Prototype implementation for dynamic maintaining inverses of uni-directional references (10.76 KB, application/octet-stream)
2005-10-21 09:07 EDT, Ed Merks CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Marcelo Paternostro CLA 2004-10-08 12:57:08 EDT
 
Comment 1 Ermengol Bota CLA 2004-11-15 06:13:55 EST
Created attachment 15854 [details]
testcase. An uml2 resource containing all JDK classes

Testcase:
It is an UML2 Resource (jdk.uml2) that contains all the classes from JDK
(rt.jar). 
It is an example of a big resource that makes unusable the destroy operation,
because it is too slow (it spend minutes to destroy a newly created package)
Comment 2 Ed Merks CLA 2005-02-18 07:28:36 EST
[plan pri=2 est=1w/]
Comment 3 Ed Merks CLA 2005-10-21 09:07:38 EDT
Created attachment 28596 [details]
Prototype implementation for dynamic maintaining inverses of uni-directional references

Feedback one the prototype will be welcome
Comment 4 Vishy Ramaswamy CLA 2005-11-08 13:14:37 EST
Hi Ed,
The implementation in the prototype is not accounting for derived references as
shown below:

protected boolean crossReference(EObject eObject, EReference eReference, 
EObject crossReferencedEObject) { 
return eReference.getEOpposite() == null && !eReference.isDerived();
} 

Ideally the following are required in order to find the entire set of 
references to an EObject:
Containment References:Can be computed at runtime using the EObject's 
eContainmentFeature
Non-Containment uni-directional References: Need to be stored in the map
Derived References: Need to be stored in the map since it cant be computed 
from the referenced EObject
References that are bi-directional(eopposite): Can be computed from the 
reference features of the EObject

So I think derived references should also be included in the map. Please 
correct me if any of the above assumptions are incorrect. Your thoughts?
Vishy
Comment 5 Ed Merks CLA 2005-11-09 15:23:20 EST
The prototype with the isDerived guard removed has been committed to CVS.
Comment 6 Nick Boldt CLA 2005-11-10 03:26:34 EST
Fixed in 2.2.0M3 (S200511100200)
Comment 7 Nick Boldt CLA 2008-01-28 16:48:11 EST
Move to verified as per bug 206558.