Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[m2m-atl-dev] Re: Questions regarding ATL and loading UML2 models (XMI)

Hello Dawid,

Now I understand where your problem lies: the current ATL no longer uses a static ResourceSet object. Instead, each EMFModelLoader has an internal ResourceSet object. The ModelLoader - and hence the ResourceSet - only exist for the duration of the transformation, after which they are cleaned up by the garbage collector.

I've tested all this in the ATL 2.1.0 branch (ATL_Dynamic_ResourceSet), and have recently ported this to HEAD (ATL 3.0). However, HEAD is under heavy development and cannot be relied upon for production use. Interfaces are all subject to change, so it's not wise to create dependencies on HEAD just yet.

If you do want to build on HEAD, check with William Piers, as he does the main development there.

Kind regards,
Dennis

Dawid Loubser wrote:
Hi Dennis,

Thank you for your reply. I have still not managed to load a UML model via ATL, but I think I have precisely tracked down when / where you have made changes (by spending a lot of time in your CVS history) which breaks our ability to
to access ATL's internal ResourceSet.

First of all, the only code I've seen (based on a couple of mailing list posts, etc)
that works to load UML2 models relies on

ASMEMFModel.getResourceSet()


(a static service) to get a handle to the resource set. Via this, we access the URI mapper and add the
pathmap entries needed in order to load the UML metamodel.

On Dec 16 last year, you merged a CVS branch called "ATL_Dynamic_ResourceSet" which took away the above mentioned service, and while you summarised in an e-mail to the
group what the main "changes" were:


------------------------------------------------------------------------




Dear devs,

Some time ago, I've created the ATL_Dynamic_ResourceSet branch to deal with the problem I've stated in my e-mail to this list of September 23rd, 2008. As I've done all the testing I could manage, I think it's time to open up this code to all ATL developers. I've you've any objections, please let me know as soon as possible. Otherwise, I plan to go ahead with the merge next week.

Main changes:
* Models are no longer loaded via an AtlModelHandler. Instead, use an AtlModelHandler to create a ModelLoader instance. It is recommended to use only one ModelLoader instance per handler type. After you're done with running ATL on the loaded models, you can just let go of the ModelLoader instance and the garbage collector takes care of the rest. * A call to Resource#unload() has been reintroduced in the UML model handler to avoid memory leak. I've found no leak in the ATL code and this leak also does not occur for any other meta-model than UML.

Kind regards, Dennis Wagelaar
(see http://dev.eclipse.org/mhonarc/lists/m2m-atl-dev/msg00087.html)

There is no mention made of what happened to the service we need. For some reason, nobody seems to have complained about this (a.k.a. neither of the other two people in the world who have tried to transform UML2 models have noticed). Perhaps if I can get a better understanding of what the whole idea behind this "dynamic resource sets" are, I can find out where I can "dynamically plug in entries to the URI mapper" ?

Thank you so much for the help, we are really desperate to get this working, but have in weeks not managed to load and transform a UML2 model outside of eclipse - something which is important for the toolset we are writing.

regards,
Dawid


On 18 May 2009, at 10:10 AM, Dennis Wagelaar wrote:

Dear Dawid,

I've never needed to load UML 2.1 models outside Eclipse, but I know that the Eclipse UML2 project documentation includes some information on this. It was something along the lines of manually registering the UML 2.1 meta-model and XMI loader in the EMF registry.

Dennis




Back to the top