Community
Participate
Working Groups
If a resource has a relative URI, the resolution of QNames pointing to objects in the same resource does not work, because there is nothing to resolve against in QNameURIHandler.resolve (URI resolution needs an absolute base URI). A reference to an object in the same file is thus loaded as a proxy with URI "#ID" (only fragment), while it should be "uriOfResource#ID". The former can not be resolved by EcoreUtil.resolve.
Fix coming soon.
Created attachment 182034 [details] mylyn/context/zip
Fixed in 6737ae93cec4ae2f77a85683630a15b3e7695f0a
Reiner noticed that the fix lead to the creation of proxies for IDREF references and subsequent problems with abstract target types (FlowNode). A new commit (61aec4a2ab2776081bbaf4b07d9d6ab729edbdc4) fixes this by not converting what could be a QName in case of IDREFs (resolve proxies = false). The behaviour is checked by three test cases: XMLSerializationTest.testIDReferenceToAbstractType; QNameReferenceTest.testIntraModelReferencesRelative / Absolute