Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF "Technology" (Ecore Tools, EMFatic, etc)  » [Teneo] Problem using ChangeRecorder with EObject(s) loaded with HB resource
[Teneo] Problem using ChangeRecorder with EObject(s) loaded with HB resource [message #129106] Wed, 27 August 2008 02:50 Go to next message
Eclipse UserFriend
Originally posted by: mduduzi.keswa.isizwe.com

This is a multi-part message in MIME format.
--------------040406070602040407090404
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

All,
I would like to use ChangeRecorder to capture changes made on HB
resource eobjects. I'm able to record changes when an EObject is newly
created but not when it is loaded from HB resource.
Please take a look at attached example.

P.S.: Martin, Ed, thanks for all your help and patience.

Rgs,
-Mdu

--------------040406070602040407090404
Content-Type: text/plain;
name="Dynamic.java"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="Dynamic.java"

/**
* <copyright>
*
* Copyright (c) 2005, 2006, 2007, 2008 Springsite BV (The Netherlands) and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Martin Taal
* </copyright>
*
* $Id: Dynamic.java,v 1.4 2008/02/28 07:07:51 mtaal Exp $
*/

package hbtutorial;

import java.awt.print.Book;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.EMap;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.change.ChangeDescription;
import org.eclipse.emf.ecore.change.ChangeKind;
import org.eclipse.emf.ecore.change.ChangePackage;
import org.eclipse.emf.ecore.change.FeatureChange;
import org.eclipse.emf.ecore.change.ListChange;
import org.eclipse.emf.ecore.change.util.ChangeRecorder;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
import org.eclipse.emf.teneo.hibernate.HbDataStore;
import org.eclipse.emf.teneo.hibernate.HbHelper;


import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Environment;

/**
* Dynamic Tutorial
*
* @author <a href="mailto:mtaal@elver.org">Martin Taal</a>
* @version $Revision: 1.4 $
*/
public class Dynamic {

/** The main method */
public static void main(String[] args) {

// create resource set and resource
ResourceSet resourceSet = new ResourceSetImpl();

// Register XML resource factory
resourceSet.getResourceFactoryRegistry().getExtensionToFacto ryMap().put( "xmi",
new XMIResourceFactoryImpl());

final EcoreFactory efactory = EcoreFactory.eINSTANCE;
final EcorePackage epackage = EcorePackage.eINSTANCE;
final XMLTypePackage xmlpackage = XMLTypePackage.eINSTANCE;
final EcorePackage ecorepackage = EcorePackage.eINSTANCE;
final ChangePackage changePackage = ChangePackage.eINSTANCE;



// first do the quick start with the correct dbname
String hbName = "MySF";

// create the HbDataStore
HbDataStore hbds = (HbDataStore)HbHelper.INSTANCE.createRegisterDataStore(hbNam e);
//EPackage pkg = EcoreFactory.eINSTANCE.createEPackage();
final Properties props = new Properties();
props.setProperty(Environment.DRIVER, "com.mysql.jdbc.Driver");
props.setProperty(Environment.USER, "root");
props.setProperty(Environment.URL, "jdbc:mysql://127.0.0.1:3306/dynamiclibrary");
props.setProperty(Environment.PASS, "root");
props.setProperty(Environment.DIALECT, org.hibernate.dialect.MySQLInnoDBDialect.class.getName());
hbds.setProperties(props);

EPackage companyPackage = efactory.createEPackage();
companyPackage.setName("company");
companyPackage.setNsPrefix("company");
companyPackage.setNsURI("http:///com.example.company.ecore");

// create the SchoolBook EClass
EClass schoolBookEClass = efactory.createEClass();
schoolBookEClass.setName("SchoolBook");

// create a new attribute for this EClass
EAttribute level = efactory.createEAttribute();
level.setName("level");
level.setEType(epackage.getEInt());
schoolBookEClass.getEStructuralFeatures().add(level);

// Set the supertype of SchoolBook to the Book
//schoolBookEClass.getESuperTypes().add(LibraryPackage.eINST ANCE.getBook());

// create a course
EClass courseEClass = efactory.createEClass();
courseEClass.setName("Course");

// give the Course a name
EAttribute courseName = efactory.createEAttribute();
courseName.setName("courseName");
courseName.setEType(epackage.getEString());
courseEClass.getEStructuralFeatures().add(courseName);

// A course always uses one SchoolBook
EReference courseBook = efactory.createEReference();
courseBook.setName("courseBook");
courseBook.setEType(schoolBookEClass);
courseBook.setContainment(false);
courseEClass.getEStructuralFeatures().add(courseBook);

// Create a new EPackage and add the new EClasses
EPackage schoolPackage = efactory.createEPackage();
schoolPackage.setName("elv");
schoolPackage.setNsPrefix("elv");
schoolPackage.setNsURI("http:///www.elver.org/School");
schoolPackage.getEClassifiers().add(courseEClass);
schoolPackage.getEClassifiers().add(schoolBookEClass);


EPackage.Registry.INSTANCE.put(schoolPackage.getNsURI(), schoolPackage);
EPackage.Registry.INSTANCE.put(companyPackage.getNsURI(), companyPackage);
EPackage.Registry.INSTANCE.put(xmlpackage.getNsURI(), xmlpackage);
EPackage.Registry.INSTANCE.put(ecorepackage.getNsURI(),ecore package);
EPackage.Registry.INSTANCE.put(changePackage.getNsURI(),chan gePackage);

//resourceSet.getPackageRegistry().put(companyPackage.getNsU RI(), companyPackage);

hbds.setEPackages(new EPackage[]{companyPackage,schoolPackage,xmlpackage,ecorepack age});

// print the hibernate.hbm.xml for demo purposes
//System.err.println(hbds.getMappingXML());


// This tutorial will create a new type of book which inherits from the standard
// Book



// Now reset the epackages in the datastore
//hbds.setEPackages(new EPackage[]{LibraryPackage.eINSTANCE, schoolPackage});

// recreate the database
hbds.initialize();

// print the hibernate.hbm.xml for demo purposes
//System.err.println(hbds.getMappingXML());

// and create a course
//course.eSet(courseBook, bk);

final SessionFactory sessionFactory = hbds.getSessionFactory();

EObject course = schoolPackage.getEFactoryInstance().create(courseEClass);
course.eSet(courseName, "Dutch Literature Level 1");
// now persist them all

Session session = sessionFactory.openSession();
Transaction tx = session.getTransaction();
//session.save(companyPackage);
/*
session.save(courseEClass);
session.save(schoolBookEClass);
session.save(schoolPackage);
*/

/*
tx.begin();
session.save(course);
tx.commit();
*/

// Now query for the books, at least one of them should be a SchoolBook
URI uri1 = URI.createURI("hibernate://?dsname=MySF&query1=FROM Course");
Resource res1 = resourceSet.createResource(uri1);


tx.begin();
try
{
res1.load(Collections.EMPTY_MAP);
}
catch (IOException e)
{
e.printStackTrace();
}
tx.commit();


tx.begin();
EObject eobject = res1.getContents().get(0);

ChangeRecorder cr = new ChangeRecorder(res1);
eobject.eSet(courseName,"English 1");
System.out.println(eobject);

ChangeDescription changeDescription = cr.endRecording();

EMap<EObject, EList<FeatureChange>> objectChanges = changeDescription.getObjectChanges();
System.out.println("change size: "+objectChanges.size());
course.eSet(courseName, "Dutch Literature Level 1");
tx.commit();

session.close();
}
}

--------------040406070602040407090404--
Re: [Teneo] Problem using ChangeRecorder with EObject(s) loaded with HB resource [message #129153 is a reply to message #129106] Thu, 28 August 2008 10:11 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
I tested this and with me it works fine. I used the following code (which is the same as yours):
URI uri1 = URI.createURI("hibernate://?dsname=Library&query1=FROM Course");
Resource res1 = new ResourceSetImpl().createResource(uri1);
try {
res1.load(Collections.EMPTY_MAP);
} catch (IOException e) {
e.printStackTrace();
}

eobject = res1.getContents().get(0);
ChangeRecorder cr = new ChangeRecorder(res1);
eobject.eSet(courseName, "English 1");
System.out.println(eobject);
System.out.println(eobject.eGet(courseName));

ChangeDescription changeDescription = cr.endRecording();

EMap<EObject, EList<FeatureChange>> objectChanges = changeDescription.getObjectChanges();
System.out.println("change size: " + objectChanges.size());

And the output is this:
org.eclipse.emf.ecore.impl.DynamicEObjectImpl@12dd538 (eClass:
org.eclipse.emf.ecore.impl.EClassImpl@15f1f9c (name: Course) (instanceClassName: null) (abstract:
false, interface: false))
English 1
change size: 1

which seemed fine.

btw, support for Teneo is given on the EMF newsgroup (which I cc-ed).

gr. Martin

Mdu wrote:
> All,
> I would like to use ChangeRecorder to capture changes made on HB
> resource eobjects. I'm able to record changes when an EObject is newly
> created but not when it is loaded from HB resource.
> Please take a look at attached example.
>
> P.S.: Martin, Ed, thanks for all your help and patience.
>
> Rgs,
> -Mdu


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Problem using ChangeRecorder with EObject(s) loaded with HB resource [message #129165 is a reply to message #129153] Thu, 28 August 2008 07:10 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mduduzi.keswa.isizwe.com

Martin, Thanks,
I originally thought the problem was with Teneo - but it is more
basic than that and thus my post in the .emft newsgroup 'How to retrieve
newValue for FeatureChange...'; and yes I was able to reproduce the same
results with code similar to yours.
As I understand it, ChangeDescription (somewhere) will contain
oldValue and newValue of courseName. I could then get oldValue by
calling FeatureChange.getValue() - but I couldn't access the newValue
within the FeatureChange.
Is it because my understanding of
ChangeRecorder/ChangeDescription/Featurechange is incorrect on what gets
recorded?
What is ListChange supposed to store within FeatureChange. Is it only
when attribute being changed is a reference?


Regards,
-Mdu


Martin Taal wrote:
> Hi Mdu,
> I tested this and with me it works fine. I used the following code
> (which is the same as yours):
> URI uri1 =
> URI.createURI("hibernate://?dsname=Library&query1=FROM Course");
> Resource res1 = new ResourceSetImpl().createResource(uri1);
> try {
> res1.load(Collections.EMPTY_MAP);
> } catch (IOException e) {
> e.printStackTrace();
> }
>
> eobject = res1.getContents().get(0);
> ChangeRecorder cr = new ChangeRecorder(res1);
> eobject.eSet(courseName, "English 1");
> System.out.println(eobject);
> System.out.println(eobject.eGet(courseName));
>
> ChangeDescription changeDescription = cr.endRecording();
>
> EMap<EObject, EList<FeatureChange>> objectChanges =
> changeDescription.getObjectChanges();
> System.out.println("change size: " + objectChanges.size());
>
> And the output is this:
> org.eclipse.emf.ecore.impl.DynamicEObjectImpl@12dd538 (eClass:
> org.eclipse.emf.ecore.impl.EClassImpl@15f1f9c (name: Course)
> (instanceClassName: null) (abstract: false, interface: false))
> English 1
> change size: 1
>
> which seemed fine.
>
> btw, support for Teneo is given on the EMF newsgroup (which I cc-ed).
>
> gr. Martin
>
> Mdu wrote:
>> All,
>> I would like to use ChangeRecorder to capture changes made on HB
>> resource eobjects. I'm able to record changes when an EObject is newly
>> created but not when it is loaded from HB resource.
>> Please take a look at attached example.
>>
>> P.S.: Martin, Ed, thanks for all your help and patience.
>>
>> Rgs,
>> -Mdu
>
>
Re: [Teneo] Problem using ChangeRecorder with EObject(s) loaded with HB resource [message #129178 is a reply to message #129165] Thu, 28 August 2008 13:06 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33133
Registered: July 2009
Senior Member
Mdu,

As it turns out, I think its an assumption you're making about the
nature of the change description. You're assuming it's a description of
how to get to the original state to the final state when in fact it's a
description from how to get to the current state to some other state.
Hence in this scenario, it's a reverse delta. The reason for this
design (often people ask, why did you do it like this?) is because the
change description is a model instance you can save. Hence when it
saves references to the objects that have changed, it needs to serialize
those based on the actual current state of those objects. Consider for
example if something was added to the tree via containment. The
reference needs to be to the new object containing within the resource.
If you did applyAndReverse, you'd see that result would be that the
object that was added is now contained by the ChangeDescription itself
and instead of a REMOVE the change has become an ADD...


Mdu wrote:
> Martin, Thanks,
> I originally thought the problem was with Teneo - but it is more
> basic than that and thus my post in the .emft newsgroup 'How to
> retrieve newValue for FeatureChange...'; and yes I was able to
> reproduce the same results with code similar to yours.
> As I understand it, ChangeDescription (somewhere) will contain
> oldValue and newValue of courseName. I could then get oldValue by
> calling FeatureChange.getValue() - but I couldn't access the newValue
> within the FeatureChange.
> Is it because my understanding of
> ChangeRecorder/ChangeDescription/Featurechange is incorrect on what
> gets recorded?
> What is ListChange supposed to store within FeatureChange. Is it only
> when attribute being changed is a reference?
>
>
> Regards,
> -Mdu
>
>
> Martin Taal wrote:
>> Hi Mdu,
>> I tested this and with me it works fine. I used the following code
>> (which is the same as yours):
>> URI uri1 =
>> URI.createURI("hibernate://?dsname=Library&query1=FROM Course");
>> Resource res1 = new ResourceSetImpl().createResource(uri1);
>> try {
>> res1.load(Collections.EMPTY_MAP);
>> } catch (IOException e) {
>> e.printStackTrace();
>> }
>>
>> eobject = res1.getContents().get(0);
>> ChangeRecorder cr = new ChangeRecorder(res1);
>> eobject.eSet(courseName, "English 1");
>> System.out.println(eobject);
>> System.out.println(eobject.eGet(courseName));
>>
>> ChangeDescription changeDescription = cr.endRecording();
>>
>> EMap<EObject, EList<FeatureChange>> objectChanges =
>> changeDescription.getObjectChanges();
>> System.out.println("change size: " + objectChanges.size());
>>
>> And the output is this:
>> org.eclipse.emf.ecore.impl.DynamicEObjectImpl@12dd538 (eClass:
>> org.eclipse.emf.ecore.impl.EClassImpl@15f1f9c (name: Course)
>> (instanceClassName: null) (abstract: false, interface: false))
>> English 1
>> change size: 1
>>
>> which seemed fine.
>>
>> btw, support for Teneo is given on the EMF newsgroup (which I cc-ed).
>>
>> gr. Martin
>>
>> Mdu wrote:
>>> All,
>>> I would like to use ChangeRecorder to capture changes made on HB
>>> resource eobjects. I'm able to record changes when an EObject is
>>> newly created but not when it is loaded from HB resource.
>>> Please take a look at attached example.
>>>
>>> P.S.: Martin, Ed, thanks for all your help and patience.
>>>
>>> Rgs,
>>> -Mdu
>>
>>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: [Teneo] Problem using ChangeRecorder with EObject(s) loaded with HB resource [message #620268 is a reply to message #129106] Thu, 28 August 2008 10:11 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
I tested this and with me it works fine. I used the following code (which is the same as yours):
URI uri1 = URI.createURI("hibernate://?dsname=Library&query1=FROM Course");
Resource res1 = new ResourceSetImpl().createResource(uri1);
try {
res1.load(Collections.EMPTY_MAP);
} catch (IOException e) {
e.printStackTrace();
}

eobject = res1.getContents().get(0);
ChangeRecorder cr = new ChangeRecorder(res1);
eobject.eSet(courseName, "English 1");
System.out.println(eobject);
System.out.println(eobject.eGet(courseName));

ChangeDescription changeDescription = cr.endRecording();

EMap<EObject, EList<FeatureChange>> objectChanges = changeDescription.getObjectChanges();
System.out.println("change size: " + objectChanges.size());

And the output is this:
org.eclipse.emf.ecore.impl.DynamicEObjectImpl@12dd538 (eClass:
org.eclipse.emf.ecore.impl.EClassImpl@15f1f9c (name: Course) (instanceClassName: null) (abstract:
false, interface: false))
English 1
change size: 1

which seemed fine.

btw, support for Teneo is given on the EMF newsgroup (which I cc-ed).

gr. Martin

Mdu wrote:
> All,
> I would like to use ChangeRecorder to capture changes made on HB
> resource eobjects. I'm able to record changes when an EObject is newly
> created but not when it is loaded from HB resource.
> Please take a look at attached example.
>
> P.S.: Martin, Ed, thanks for all your help and patience.
>
> Rgs,
> -Mdu


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Problem using ChangeRecorder with EObject(s) loaded with HB resource [message #620269 is a reply to message #129153] Thu, 28 August 2008 07:10 Go to previous message
Mdu Mising name is currently offline Mdu Mising nameFriend
Messages: 22
Registered: October 2009
Junior Member
Martin, Thanks,
I originally thought the problem was with Teneo - but it is more
basic than that and thus my post in the .emft newsgroup 'How to retrieve
newValue for FeatureChange...'; and yes I was able to reproduce the same
results with code similar to yours.
As I understand it, ChangeDescription (somewhere) will contain
oldValue and newValue of courseName. I could then get oldValue by
calling FeatureChange.getValue() - but I couldn't access the newValue
within the FeatureChange.
Is it because my understanding of
ChangeRecorder/ChangeDescription/Featurechange is incorrect on what gets
recorded?
What is ListChange supposed to store within FeatureChange. Is it only
when attribute being changed is a reference?


Regards,
-Mdu


Martin Taal wrote:
> Hi Mdu,
> I tested this and with me it works fine. I used the following code
> (which is the same as yours):
> URI uri1 =
> URI.createURI("hibernate://?dsname=Library&query1=FROM Course");
> Resource res1 = new ResourceSetImpl().createResource(uri1);
> try {
> res1.load(Collections.EMPTY_MAP);
> } catch (IOException e) {
> e.printStackTrace();
> }
>
> eobject = res1.getContents().get(0);
> ChangeRecorder cr = new ChangeRecorder(res1);
> eobject.eSet(courseName, "English 1");
> System.out.println(eobject);
> System.out.println(eobject.eGet(courseName));
>
> ChangeDescription changeDescription = cr.endRecording();
>
> EMap<EObject, EList<FeatureChange>> objectChanges =
> changeDescription.getObjectChanges();
> System.out.println("change size: " + objectChanges.size());
>
> And the output is this:
> org.eclipse.emf.ecore.impl.DynamicEObjectImpl@12dd538 (eClass:
> org.eclipse.emf.ecore.impl.EClassImpl@15f1f9c (name: Course)
> (instanceClassName: null) (abstract: false, interface: false))
> English 1
> change size: 1
>
> which seemed fine.
>
> btw, support for Teneo is given on the EMF newsgroup (which I cc-ed).
>
> gr. Martin
>
> Mdu wrote:
>> All,
>> I would like to use ChangeRecorder to capture changes made on HB
>> resource eobjects. I'm able to record changes when an EObject is newly
>> created but not when it is loaded from HB resource.
>> Please take a look at attached example.
>>
>> P.S.: Martin, Ed, thanks for all your help and patience.
>>
>> Rgs,
>> -Mdu
>
>
Re: [Teneo] Problem using ChangeRecorder with EObject(s) loaded with HB resource [message #620270 is a reply to message #129165] Thu, 28 August 2008 13:06 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33133
Registered: July 2009
Senior Member
Mdu,

As it turns out, I think its an assumption you're making about the
nature of the change description. You're assuming it's a description of
how to get to the original state to the final state when in fact it's a
description from how to get to the current state to some other state.
Hence in this scenario, it's a reverse delta. The reason for this
design (often people ask, why did you do it like this?) is because the
change description is a model instance you can save. Hence when it
saves references to the objects that have changed, it needs to serialize
those based on the actual current state of those objects. Consider for
example if something was added to the tree via containment. The
reference needs to be to the new object containing within the resource.
If you did applyAndReverse, you'd see that result would be that the
object that was added is now contained by the ChangeDescription itself
and instead of a REMOVE the change has become an ADD...


Mdu wrote:
> Martin, Thanks,
> I originally thought the problem was with Teneo - but it is more
> basic than that and thus my post in the .emft newsgroup 'How to
> retrieve newValue for FeatureChange...'; and yes I was able to
> reproduce the same results with code similar to yours.
> As I understand it, ChangeDescription (somewhere) will contain
> oldValue and newValue of courseName. I could then get oldValue by
> calling FeatureChange.getValue() - but I couldn't access the newValue
> within the FeatureChange.
> Is it because my understanding of
> ChangeRecorder/ChangeDescription/Featurechange is incorrect on what
> gets recorded?
> What is ListChange supposed to store within FeatureChange. Is it only
> when attribute being changed is a reference?
>
>
> Regards,
> -Mdu
>
>
> Martin Taal wrote:
>> Hi Mdu,
>> I tested this and with me it works fine. I used the following code
>> (which is the same as yours):
>> URI uri1 =
>> URI.createURI("hibernate://?dsname=Library&query1=FROM Course");
>> Resource res1 = new ResourceSetImpl().createResource(uri1);
>> try {
>> res1.load(Collections.EMPTY_MAP);
>> } catch (IOException e) {
>> e.printStackTrace();
>> }
>>
>> eobject = res1.getContents().get(0);
>> ChangeRecorder cr = new ChangeRecorder(res1);
>> eobject.eSet(courseName, "English 1");
>> System.out.println(eobject);
>> System.out.println(eobject.eGet(courseName));
>>
>> ChangeDescription changeDescription = cr.endRecording();
>>
>> EMap<EObject, EList<FeatureChange>> objectChanges =
>> changeDescription.getObjectChanges();
>> System.out.println("change size: " + objectChanges.size());
>>
>> And the output is this:
>> org.eclipse.emf.ecore.impl.DynamicEObjectImpl@12dd538 (eClass:
>> org.eclipse.emf.ecore.impl.EClassImpl@15f1f9c (name: Course)
>> (instanceClassName: null) (abstract: false, interface: false))
>> English 1
>> change size: 1
>>
>> which seemed fine.
>>
>> btw, support for Teneo is given on the EMF newsgroup (which I cc-ed).
>>
>> gr. Martin
>>
>> Mdu wrote:
>>> All,
>>> I would like to use ChangeRecorder to capture changes made on HB
>>> resource eobjects. I'm able to record changes when an EObject is
>>> newly created but not when it is loaded from HB resource.
>>> Please take a look at attached example.
>>>
>>> P.S.: Martin, Ed, thanks for all your help and patience.
>>>
>>> Rgs,
>>> -Mdu
>>
>>


Ed Merks
Professional Support: https://www.macromodeling.com/
Previous Topic:EMF workflow engine design issue
Next Topic:Ecore Diagram Shortcuts broken in latest patch release
Goto Forum:
  


Current Time: Tue Apr 16 06:16:18 GMT 2024

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

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

Back to the top