Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF "Technology" (Ecore Tools, EMFatic, etc)  » EMF Compare and ecore models
EMF Compare and ecore models [message #522025] Fri, 19 March 2010 17:00 Go to next message
Tom H. is currently offline Tom H.Friend
Messages: 4
Registered: March 2010
Junior Member
Hi there,

I'm relatively new to the whole Eclipse universe and have a problem, where I'm currently stuck.
I have to compare two versions of a metamodel (i.e. one metamodel and a modified version of it). I need the differences between these two versions, e.g. that a attribute has been renamed or deleted, ...
So I found the example of EMF Compare ( http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.emf/org .eclipse.emf.compare/examples/org.eclipse.emf.compare.exampl es.standalone/src/org/eclipse/emf/compare/examples/standalon e/ExampleLauncher.java?revision=1.6&root=Modeling_Projec t) where you should be able to compare two models. I use the "families.ecore" file from http://www.eclipse.org/m2m/atl/basicExamples_Patterns/ as metamodel1 (from the first example 'Families2Persons.zip'). For the second version I just renamed the element 'Member' to 'NewMember' and let it calculate the differences.
The strange this is, when I debug the code and inspect the variable differences, it always has exactly one element
org.eclipse.emf.compare.diff.metamodel.impl.DiffGroupImpl@8ae59a (conflicting: false, kind: Addition, remote: false)

regardless what change I made to the metamodel. When I look at the result.emfdiff, it always states '0 differences'. Confused

Is it possible to compare two ecore files, containing two versions of a metamodel?
And if it is, what am I doing wrong?

Thanks in advance,

Tom

P.S.: I don't know if it is useful, but here is the output of the console:
Loading resources.

Matching models.

Differencing models.

Merging difference to args[1].

MatchModel :

<?xml version="1.0" encoding="Cp1252"?>
<match:MatchModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:match="http://www.eclipse.org/emf/compare/match/1.1">
  <matchedElements xsi:type="match:Match2Elements" similarity="0.9878048780487805">
    <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
      <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
        <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
          <leftElement href="Families.ecore#/0/Family/lastName/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Family/lastName/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Family/lastName"/>
        <rightElement href="Families2.ecore#/0/Family/lastName"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.9945701357466064">
        <subMatchElements xsi:type="match:Match2Elements" similarity="0.988">
          <leftElement href="Families.ecore#/0/Family/father/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Family/father/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Family/father"/>
        <rightElement href="Families2.ecore#/0/Family/father"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.9945701357466064">
        <subMatchElements xsi:type="match:Match2Elements" similarity="0.988">
          <leftElement href="Families.ecore#/0/Family/mother/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Family/mother/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Family/mother"/>
        <rightElement href="Families2.ecore#/0/Family/mother"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.994157740993184">
        <subMatchElements xsi:type="match:Match2Elements" similarity="0.9857142857142858">
          <leftElement href="Families.ecore#/0/Family/sons/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Family/sons/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Family/sons"/>
        <rightElement href="Families2.ecore#/0/Family/sons"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.9948141745894556">
        <subMatchElements xsi:type="match:Match2Elements" similarity="0.9903225806451613">
          <leftElement href="Families.ecore#/0/Family/daughters/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Family/daughters/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Family/daughters"/>
        <rightElement href="Families2.ecore#/0/Family/daughters"/>
      </subMatchElements>
      <leftElement href="Families.ecore#/0/Family"/>
      <rightElement href="Families2.ecore#/0/Family"/>
    </subMatchElements>
    <subMatchElements xsi:type="match:Match2Elements" similarity="0.7751479289940828">
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.8269230769230769">
        <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
          <leftElement href="Families.ecore#/0/Member/firstName/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Member/firstName/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Member/firstName"/>
        <rightElement href="Families2.ecore#/0/Member/firstName"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.8299595141700404">
        <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
          <leftElement href="Families.ecore#/0/Member/familyFather/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Member/familyFather/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Member/familyFather"/>
        <rightElement href="Families2.ecore#/0/Member/familyFather"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.8340080971659919">
        <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
          <leftElement href="Families.ecore#/0/Member/familyMother/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Member/familyMother/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Member/familyMother"/>
        <rightElement href="Families2.ecore#/0/Member/familyMother"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.829059829059829">
        <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
          <leftElement href="Families.ecore#/0/Member/familySon/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Member/familySon/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Member/familySon"/>
        <rightElement href="Families2.ecore#/0/Member/familySon"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.8311444652908068">
        <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
          <leftElement href="Families.ecore#/0/Member/familyDaughter/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Member/familyDaughter/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Member/familyDaughter"/>
        <rightElement href="Families2.ecore#/0/Member/familyDaughter"/>
      </subMatchElements>
      <leftElement href="Families.ecore#/0/Member"/>
      <rightElement href="Families2.ecore#/0/Member"/>
    </subMatchElements>
    <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
      <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
        <leftElement href="Families.ecore#/1/String"/>
        <rightElement href="Families2.ecore#/1/String"/>
      </subMatchElements>
      <leftElement href="Families.ecore#/1"/>
      <rightElement href="Families2.ecore#/1"/>
    </subMatchElements>
    <leftElement href="Families.ecore#/0"/>
    <rightElement href="Families2.ecore#/0"/>
  </matchedElements>
  <leftRoots href="Families.ecore#/0"/>
  <leftRoots href="Families.ecore#/1"/>
  <rightRoots href="Families2.ecore#/0"/>
  <rightRoots href="Families2.ecore#/1"/>
</match:MatchModel>

DiffModel :

<?xml version="1.0" encoding="Cp1252"?>
<diff:DiffModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:diff="http://www.eclipse.org/emf/compare/diff/1.1">
  <leftRoots href="Families.ecore#/0"/>
  <leftRoots href="Families.ecore#/1"/>
  <rightRoots href="Families2.ecore#/0"/>
  <rightRoots href="Families2.ecore#/1"/>
</diff:DiffModel>

saving emfdiff as "result.emfdiff"

[Updated on: Fri, 19 March 2010 17:03]

Report message to a moderator

Re: EMF Compare and ecore models [message #522369 is a reply to message #522025] Mon, 22 March 2010 09:06 Go to previous messageGo to next message
Laurent Goubet is currently offline Laurent GoubetFriend
Messages: 1902
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------040801010801080703000500
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Tom,

Comparing two ecore files is possible, and it seems to me you're doing
it right. Your issue is that you have not changed anything between your
two versions, thus EMF Compare detecting no difference at all.

> </subMatchElements>
> <leftElement href="Families.ecore#/0/Member"/>
> <rightElement href="Families2.ecore#/0/Member"/>
> </subMatchElements>

means that "Member" in Families.ecore is still "Member" in
Families2.ecore, which would imply you haven't saved the change from
"Member" to "NewMember" you're talking about.

Laurent Goubet
Obeo

Tom H. wrote:
> Hi there,
>
> I'm relatively new to the whole Eclipse universe and have a problem,
> where I'm currently stuck.
> I have to compare two versions of a metamodel (i.e. one metamodel and a
> modified version of it). I need the differences between these two
> versions, e.g. that a attribute has been renamed or deleted, ...
> So I found the example of EMF Compare
> ( http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.emf/org .eclipse.emf.compare/examples/org.eclipse.emf.compare.exampl es.standalone/src/org/eclipse/emf/compare/examples/standalon e/ExampleLauncher.java?revision=1.6&root=Modeling_Projec t)
> where you should be able to compare two models. I use the
> "families.ecore" file from
> http://www.eclipse.org/m2m/atl/basicExamples_Patterns/ as metamodel1.
> For the second version I just renamed the element 'Member' to
> 'NewMember' and let it calculate the differences.
> The strange this is, when I debug the code and inspect the variable
> differences, it always has exactly one element
> org.eclipse.emf.compare.diff.metamodel.impl.DiffGroupImpl@8ae59a
> (conflicting: false, kind: Addition, remote: false)
> regardless what change I made to the metamodel. When I look at the
> result.emfdiff, it always states '0 differences'. :?
> Is it possible to compare two ecore files, containing two versions of a
> metamodel?
> And if it is, what am I doing wrong?
>
> Thanks in advance,
>
> Tom
>
> P.S.: I don't know if it is useful, but here is the output of the console:
> Loading resources.
>
> Matching models.
>
> Differencing models.
>
> Merging difference to args[1].
>
> MatchModel :
>
> <?xml version="1.0" encoding="Cp1252"?>
> <match:MatchModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:match="http://www.eclipse.org/emf/compare/match/1.1">
> <matchedElements xsi:type="match:Match2Elements"
> similarity="0.9878048780487805">
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <leftElement
> href="Families.ecore#/0/Family/lastName/@eGenericType"/>
> <rightElement
> href="Families2.ecore#/0/Family/lastName/@eGenericType"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Family/lastName"/>
> <rightElement href="Families2.ecore#/0/Family/lastName"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.9945701357466064">
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.988">
> <leftElement
> href="Families.ecore#/0/Family/father/@eGenericType"/>
> <rightElement
> href="Families2.ecore#/0/Family/father/@eGenericType"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Family/father"/>
> <rightElement href="Families2.ecore#/0/Family/father"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.9945701357466064">
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.988">
> <leftElement
> href="Families.ecore#/0/Family/mother/@eGenericType"/>
> <rightElement
> href="Families2.ecore#/0/Family/mother/@eGenericType"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Family/mother"/>
> <rightElement href="Families2.ecore#/0/Family/mother"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.994157740993184">
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.9857142857142858">
> <leftElement href="Families.ecore#/0/Family/sons/@eGenericType"/>
> <rightElement
> href="Families2.ecore#/0/Family/sons/@eGenericType"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Family/sons"/>
> <rightElement href="Families2.ecore#/0/Family/sons"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.9948141745894556">
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.9903225806451613">
> <leftElement
> href="Families.ecore#/0/Family/daughters/@eGenericType"/>
> <rightElement
> href="Families2.ecore#/0/Family/daughters/@eGenericType"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Family/daughters"/>
> <rightElement href="Families2.ecore#/0/Family/daughters"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Family"/>
> <rightElement href="Families2.ecore#/0/Family"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.7751479289940828">
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.8269230769230769">
> <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
> <leftElement
> href="Families.ecore#/0/Member/firstName/@eGenericType"/>
> <rightElement
> href="Families2.ecore#/0/Member/firstName/@eGenericType"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Member/firstName"/>
> <rightElement href="Families2.ecore#/0/Member/firstName"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.8299595141700404">
> <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
> <leftElement
> href="Families.ecore#/0/Member/familyFather/@eGenericType"/ >
> <rightElement
> href="Families2.ecore#/0/Member/familyFather/@eGenericType"/ >
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Member/familyFather"/>
> <rightElement href="Families2.ecore#/0/Member/familyFather"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.8340080971659919">
> <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
> <leftElement
> href="Families.ecore#/0/Member/familyMother/@eGenericType"/ >
> <rightElement
> href="Families2.ecore#/0/Member/familyMother/@eGenericType"/ >
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Member/familyMother"/>
> <rightElement href="Families2.ecore#/0/Member/familyMother"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.829059829059829">
> <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
> <leftElement
> href="Families.ecore#/0/Member/familySon/@eGenericType"/>
> <rightElement
> href="Families2.ecore#/0/Member/familySon/@eGenericType"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Member/familySon"/>
> <rightElement href="Families2.ecore#/0/Member/familySon"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.8311444652908068">
> <subMatchElements xsi:type="match:Match2Elements" similarity="0.9">
> <leftElement
> href="Families.ecore#/0/Member/familyDaughter/@eGenericType "/>
> <rightElement
> href="Families2.ecore#/0/Member/familyDaughter/@eGenericType "/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Member/familyDaughter"/>
> <rightElement href="Families2.ecore#/0/Member/familyDaughter"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Member"/>
> <rightElement href="Families2.ecore#/0/Member"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <leftElement href="Families.ecore#/1/String"/>
> <rightElement href="Families2.ecore#/1/String"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/1"/>
> <rightElement href="Families2.ecore#/1"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0"/>
> <rightElement href="Families2.ecore#/0"/>
> </matchedElements>
> <leftRoots href="Families.ecore#/0"/>
> <leftRoots href="Families.ecore#/1"/>
> <rightRoots href="Families2.ecore#/0"/>
> <rightRoots href="Families2.ecore#/1"/>
> </match:MatchModel>
>
> DiffModel :
>
> <?xml version="1.0" encoding="Cp1252"?>
> <diff:DiffModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
> xmlns:diff="http://www.eclipse.org/emf/compare/diff/1.1">
> <leftRoots href="Families.ecore#/0"/>
> <leftRoots href="Families.ecore#/1"/>
> <rightRoots href="Families2.ecore#/0"/>
> <rightRoots href="Families2.ecore#/1"/>
> </diff:DiffModel>
>
> saving emfdiff as "result.emfdiff"
>


--------------040801010801080703000500
Content-Type: text/x-vcard; charset=utf-8;
name="laurent_goubet.vcf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="laurent_goubet.vcf"

YmVnaW46dmNhcmQNCmZuOkxhdXJlbnQgR291YmV0DQpuOkdvdWJldDtMYXVy ZW50DQpvcmc6
PGEgaHJlZj0iaHR0cDovL3d3dy5vYmVvLmZyIj5PYmVvPC9hPg0KZW1haWw7 aW50ZXJuZXQ6
bGF1cmVudC5nb3ViZXRAb2Jlby5mcg0KdXJsOmh0dHA6Ly93d3cub2Jlby5m cg0KdmVyc2lv
bjoyLjENCmVuZDp2Y2FyZA0KDQo=
--------------040801010801080703000500--
Re: EMF Compare and ecore models [message #522470 is a reply to message #522025] Mon, 22 March 2010 17:49 Go to previous messageGo to next message
Tom H. is currently offline Tom H.Friend
Messages: 4
Registered: March 2010
Junior Member
Hello Mr. Goubet,

thanks for your answer.

> means that "Member" in Families.ecore is still "Member" in
> Families2.ecore, which would imply you haven't saved the change from
> "Member" to "NewMember" you're talking about.

I have saved the changed to the modified ecore file. So that's not the problem.

I have set up a new project, just containing the ExampleLauncher.java. The first ecore-file is again the Families.ecore. The second one is a copy where I deleted the whole class Member and saved the changes to the file Smile .
When I run the project, I get the following output on the console:
Loading resources.

Matching models.

Differencing models.

Merging difference to args[1].

MatchModel :

<?xml version="1.0" encoding="Cp1252"?>
<match:MatchModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:match="http://www.eclipse.org/emf/compare/match/1.1">
  <matchedElements xsi:type="match:Match2Elements" similarity="0.9812500000000001">
    <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
      <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
        <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
          <leftElement href="Families.ecore#/0/Family/lastName/@eGenericType"/>
          <rightElement href="Families2.ecore#/0/Family/lastName/@eGenericType"/>
        </subMatchElements>
        <leftElement href="Families.ecore#/0/Family/lastName"/>
        <rightElement href="Families2.ecore#/0/Family/lastName"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.9526627218934911">
        <leftElement href="Families.ecore#/0/Family/father"/>
        <rightElement href="Families2.ecore#/0/Family/father"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.9408284023668639">
        <leftElement href="Families.ecore#/0/Family/mother"/>
        <rightElement href="Families2.ecore#/0/Family/mother"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.9466248037676608">
        <leftElement href="Families.ecore#/0/Family/sons"/>
        <rightElement href="Families2.ecore#/0/Family/sons"/>
      </subMatchElements>
      <subMatchElements xsi:type="match:Match2Elements" similarity="0.9373219373219374">
        <leftElement href="Families.ecore#/0/Family/daughters"/>
        <rightElement href="Families2.ecore#/0/Family/daughters"/>
      </subMatchElements>
      <leftElement href="Families.ecore#/0/Family"/>
      <rightElement href="Families2.ecore#/0/Family"/>
    </subMatchElements>
    <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
      <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
        <leftElement href="Families.ecore#/1/String"/>
        <rightElement href="Families2.ecore#/1/String"/>
      </subMatchElements>
      <leftElement href="Families.ecore#/1"/>
      <rightElement href="Families2.ecore#/1"/>
    </subMatchElements>
    <leftElement href="Families.ecore#/0"/>
    <rightElement href="Families2.ecore#/0"/>
  </matchedElements>
  <unmatchedElements>
    <element href="Families.ecore#/0/Family/mother/@eGenericType"/>
  </unmatchedElements>
  <unmatchedElements>
    <element href="Families.ecore#/0/Member"/>
  </unmatchedElements>
  <unmatchedElements>
    <element href="Families.ecore#/0/Family/father/@eGenericType"/>
  </unmatchedElements>
  <unmatchedElements>
    <element href="Families.ecore#/0/Family/daughters/@eGenericType"/>
  </unmatchedElements>
  <unmatchedElements>
    <element href="Families.ecore#/0/Family/sons/@eGenericType"/>
  </unmatchedElements>
  <leftRoots href="Families.ecore#/0"/>
  <leftRoots href="Families.ecore#/1"/>
  <rightRoots href="Families2.ecore#/0"/>
  <rightRoots href="Families2.ecore#/1"/>
</match:MatchModel>

DiffModel :

<?xml version="1.0" encoding="Cp1252"?>
<diff:DiffModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:diff="http://www.eclipse.org/emf/compare/diff/1.1">
  <leftRoots href="Families.ecore#/0"/>
  <leftRoots href="Families.ecore#/1"/>
  <rightRoots href="Families2.ecore#/0"/>
  <rightRoots href="Families2.ecore#/1"/>
</diff:DiffModel>

saving emfdiff as "result.emfdiff"



Opening the result.emfdiff in the default editor gets again the strange results:
- at the top the message: "0 differences in resource Families.ecore"
- at the left bottom: the tree of Families.ecore
- at the right bottom: the tree of Families2.ecore where the whole class Member is missing

So, the two trees show the correct representation of the ecore files, but the differences are empty.

Really strange thing. Confused

Regards,
Tom

[Updated on: Mon, 22 March 2010 21:25]

Report message to a moderator

Re: EMF Compare and ecore models [message #522581 is a reply to message #522470] Tue, 23 March 2010 09:03 Go to previous message
Laurent Goubet is currently offline Laurent GoubetFriend
Messages: 1902
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------050501040504040607060905
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Tom,

Yup, I can't say I understand what's happening behind the scenes here as
your match model is correct :

> <unmatchedElements>
> <element href="Families.ecore#/0/Member"/>
> </unmatchedElements>

means EMF Compare didn't manage to match the element "Member" ... and
yet the DiffModel you obtain is empty. This isn't the expected behavior,
yet I have no idea why : I never observed such failures. Could you open
a bugzilla with your example models attached?

Laurent Goubet
Obeo

Tom H. wrote:
> Hello Mr. Goubet,
>
> thanks for your answer.
>
>> means that "Member" in Families.ecore is still "Member" in
>> Families2.ecore, which would imply you haven't saved the change from
>> "Member" to "NewMember" you're talking about.
>
> I have saved the changed to the modified ecore file. So that's not the
> problem.
>
> I set up a new project, just containing the ExampleLauncher.java. The
> first ecore-file is again the Families.ecore. The second one is a copy
> where I deleted the class Member and saved the changed to the file :) .
> When I run the project, I get the following output on the console:
>
> Loading resources.
>
> Matching models.
>
> Differencing models.
>
> Merging difference to args[1].
>
> MatchModel :
>
> <?xml version="1.0" encoding="Cp1252"?>
> <match:MatchModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:match="http://www.eclipse.org/emf/compare/match/1.1">
> <matchedElements xsi:type="match:Match2Elements"
> similarity="0.9812500000000001">
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <leftElement
> href="Families.ecore#/0/Family/lastName/@eGenericType"/>
> <rightElement
> href="Families2.ecore#/0/Family/lastName/@eGenericType"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Family/lastName"/>
> <rightElement href="Families2.ecore#/0/Family/lastName"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.9526627218934911">
> <leftElement href="Families.ecore#/0/Family/father"/>
> <rightElement href="Families2.ecore#/0/Family/father"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.9408284023668639">
> <leftElement href="Families.ecore#/0/Family/mother"/>
> <rightElement href="Families2.ecore#/0/Family/mother"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.9466248037676608">
> <leftElement href="Families.ecore#/0/Family/sons"/>
> <rightElement href="Families2.ecore#/0/Family/sons"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements"
> similarity="0.9373219373219374">
> <leftElement href="Families.ecore#/0/Family/daughters"/>
> <rightElement href="Families2.ecore#/0/Family/daughters"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0/Family"/>
> <rightElement href="Families2.ecore#/0/Family"/>
> </subMatchElements>
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <subMatchElements xsi:type="match:Match2Elements" similarity="1.0">
> <leftElement href="Families.ecore#/1/String"/>
> <rightElement href="Families2.ecore#/1/String"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/1"/>
> <rightElement href="Families2.ecore#/1"/>
> </subMatchElements>
> <leftElement href="Families.ecore#/0"/>
> <rightElement href="Families2.ecore#/0"/>
> </matchedElements>
> <unmatchedElements>
> <element href="Families.ecore#/0/Family/mother/@eGenericType"/>
> </unmatchedElements>
> <unmatchedElements>
> <element href="Families.ecore#/0/Member"/>
> </unmatchedElements>
> <unmatchedElements>
> <element href="Families.ecore#/0/Family/father/@eGenericType"/>
> </unmatchedElements>
> <unmatchedElements>
> <element href="Families.ecore#/0/Family/daughters/@eGenericType"/>
> </unmatchedElements>
> <unmatchedElements>
> <element href="Families.ecore#/0/Family/sons/@eGenericType"/>
> </unmatchedElements>
> <leftRoots href="Families.ecore#/0"/>
> <leftRoots href="Families.ecore#/1"/>
> <rightRoots href="Families2.ecore#/0"/>
> <rightRoots href="Families2.ecore#/1"/>
> </match:MatchModel>
>
> DiffModel :
>
> <?xml version="1.0" encoding="Cp1252"?>
> <diff:DiffModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
> xmlns:diff="http://www.eclipse.org/emf/compare/diff/1.1">
> <leftRoots href="Families.ecore#/0"/>
> <leftRoots href="Families.ecore#/1"/>
> <rightRoots href="Families2.ecore#/0"/>
> <rightRoots href="Families2.ecore#/1"/>
> </diff:DiffModel>
>
> saving emfdiff as "result.emfdiff"
>
>
>
> Opening the result.emfdiff in the default editor gets again the strange
> results: - at the top the message: "0 differences in resource
> Families.ecore"
> - at the left bottom: the tree of Families.ecore
> - at the right bottom: the tree of Families2.ecore where the whole class
> Member is missing
>
> So, the two trees show the correct representation of the ecore files,
> but the differences are empty.
>
> Really strange thing. :?
> Regards,
> Tom


--------------050501040504040607060905
Content-Type: text/x-vcard; charset=utf-8;
name="laurent_goubet.vcf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="laurent_goubet.vcf"

YmVnaW46dmNhcmQNCmZuOkxhdXJlbnQgR291YmV0DQpuOkdvdWJldDtMYXVy ZW50DQpvcmc6
PGEgaHJlZj0iaHR0cDovL3d3dy5vYmVvLmZyIj5PYmVvPC9hPg0KZW1haWw7 aW50ZXJuZXQ6
bGF1cmVudC5nb3ViZXRAb2Jlby5mcg0KdXJsOmh0dHA6Ly93d3cub2Jlby5m cg0KdmVyc2lv
bjoyLjENCmVuZDp2Y2FyZA0KDQo=
--------------050501040504040607060905--
Previous Topic:[EMF/EEF] Duplicate attribute names in model classes
Next Topic:EMF Compare and ecore models
Goto Forum:
  


Current Time: Sat Sep 21 02:00:40 GMT 2024

Powered by FUDForum. Page generated in 0.04342 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top