| Summary: | [delegates] Constraint cached not refreshed by Ecore change | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Modeling] OCL | Reporter: | Ed Willink <ed> | ||||
| Component: | Core | Assignee: | OCL Inbox <mdt-ocl-inbox> | ||||
| Status: | CLOSED FIXED | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | eclipse | ||||
| Version: | 3.1.0 | ||||||
| Target Milestone: | Indigo | ||||||
| Hardware: | PC | ||||||
| OS: | Windows Vista | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
|
Description
Ed Willink
Created attachment 196910 [details]
Eliminate delegate domain cache
For the pivot model, the persistence of a TypeManager in the cache is clearly invalid. Attached therefore eliminates it and adds a test to demonstrate flipping between Ecore resource versions.
For the mature code, it may take some quite detailed white box study to contrive a similar failure; certainly not an activity for RC3.
Please +1 the attached for the Pivot Model at RC3.
Ed, isn't the OCLDelegateDomain still cached in DelegateEPackageAdapter.delegateDomainMap? This cache seems to be relied upon also by the call to ePackageAdapter.getDelegateDomain(delegateURI) that your patch now does every time. If the EPackage is changed without entirely discarding and reloading it (e.g., by an in-place editing), the DelegateEPackageAdapter will reside in the package's adapters list, and so will its delegateDomainMap cache. Why is the patch only dealing with the more local cache in AbstractOCLDelegateFactory? (In reply to comment #2) > Ed, isn't the OCLDelegateDomain still cached in > DelegateEPackageAdapter.delegateDomainMap? Yes, but the DelegateEPackageAdapter is for an EPackage object so a reload creates a different Epackage and so different DelegateEPackageAdapter. The problem arises when caches are located by a String behind which an EObject chances unnoticed. Understood. Then: +1 This was committed in May. CLOSED after a year in the RESOLVED state. |