[EMF Compare] reference lists seem to be handled differently than containment lists [message #125171] |
Thu, 05 June 2008 20:01  |
Eclipse User |
|
|
|
Hi All,
I have XSD like this:
<xsd:complexType name="Floor">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="roomList"
type="com.ibm.example.building:Room"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="fakeList"
type="com.ibm.example.building:Room"/>
</xsd:sequence>
<xsd:attribute name="level" type="xsd:ID"/>
</xsd:complexType>
I remove an item from the roomlist and get this diff node:
<subDiffElements xsi:type="diff:RemoveModelElement">
<rightParent href="altered.xml#2"/>
<leftElement href="original.xml#bed_2"/>
</subDiffElements>
That tells me that bed_2 was removed from floor 2, but it doesn't tell
me which list used to contain the item. Was it the roomList or the
fakeList?
With references, this is no problem:
<subDiffElements xsi:type="diff:RemoveReferenceValue">
<reference
href=" http:///com/ibm/example/Building.ecore#//Room/connectsToList"
/>
<rightElement href="altered.xml#stairs_L2"/>
<leftElement href="original.xml#stairs_L2"/>
<leftRemovedTarget href="original.xml#attic"/>
</subDiffElements>
I can see from the reference url which list was altered (In this
example, connectsToList). Am I doing something wrong that prevents this
from working when I use containment?
Thanks,
Jason Henriksen
|
|
|
|
Re: [EMF Compare] reference lists seem to be handled differently than containment lists [message #125382 is a reply to message #125343] |
Fri, 06 June 2008 19:11  |
Eclipse User |
|
|
|
Originally posted by: merks.ca.ibm.com
Jason,
Just don't cast to EObjectImpl. Cast to EObject instead. If you even
need to; what's the type?
jason henriksen wrote:
>
> Ha! Sorted it out!
>
> With references I get the reference spelled out for me:
>
> <subDiffElements xsi:type="diff:RemoveReferenceValue">
> <reference
> href=" http:///com/ibm/example/Building.ecore#//Room/connectsToList"
> />
> <rightElement href="altered.xml#stairs_L2"/>
> <leftElement href="original.xml#stairs_L2"/>
> <leftRemovedTarget href="original.xml#attic"/>
> </subDiffElements>
>
>
> With containment, I don't need it spelled out for me because I can call:
>
> EObjectImpl target = (EObjectImpl)cur.getRightElement();
> EStructuralFeature esf = target.eContainingFeature();
>
> which I was not previously aware of. From the structural feature I
> get the same info that I needed the reference tag for above.
>
> Jason
|
|
|
|
Re: [EMF Compare] reference lists seem to be handled differently than containment lists [message #619211 is a reply to message #125343] |
Fri, 06 June 2008 19:11  |
Eclipse User |
|
|
|
Jason,
Just don't cast to EObjectImpl. Cast to EObject instead. If you even
need to; what's the type?
jason henriksen wrote:
>
> Ha! Sorted it out!
>
> With references I get the reference spelled out for me:
>
> <subDiffElements xsi:type="diff:RemoveReferenceValue">
> <reference
> href=" http:///com/ibm/example/Building.ecore#//Room/connectsToList"
> />
> <rightElement href="altered.xml#stairs_L2"/>
> <leftElement href="original.xml#stairs_L2"/>
> <leftRemovedTarget href="original.xml#attic"/>
> </subDiffElements>
>
>
> With containment, I don't need it spelled out for me because I can call:
>
> EObjectImpl target = (EObjectImpl)cur.getRightElement();
> EStructuralFeature esf = target.eContainingFeature();
>
> which I was not previously aware of. From the structural feature I
> get the same info that I needed the reference tag for above.
>
> Jason
|
|
|
Powered by
FUDForum. Page generated in 0.03549 seconds