Skip to main content

Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » ATL » Running an ATL Transformation from Java
Running an ATL Transformation from Java [message #1220718] Fri, 13 December 2013 09:28 Go to next message
Daniele G is currently offline Daniele GFriend
Messages: 6
Registered: October 2013
Junior Member
Hi all,

I am trying to run an ATL Transformation using the ATL Core API as described in

To get a feel about the process, I modified the RunTransfoJava program: it seems to work (no errors/exceptions) but it does not produce the output model.
Anyone can help?

I'm using:
Eclipse Modeling Tools
Version: Juno Service Release 2
Build id: 20130225-0426

And here is my code:
package com.greco.myfirstjavaatl;

import java.util.HashMap;

import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.m2m.atl.core.ATLCoreException;
import org.eclipse.m2m.atl.core.IExtractor;
import org.eclipse.m2m.atl.core.IInjector;
import org.eclipse.m2m.atl.core.IModel;
import org.eclipse.m2m.atl.core.IReferenceModel;
import org.eclipse.m2m.atl.core.ModelFactory;
import org.eclipse.m2m.atl.core.emf.EMFExtractor;
import org.eclipse.m2m.atl.core.emf.EMFInjector;
import org.eclipse.m2m.atl.core.emf.EMFModel;
import org.eclipse.m2m.atl.core.emf.EMFModelFactory;
import org.eclipse.m2m.atl.core.emf.EMFReferenceModel;
import org.eclipse.m2m.atl.core.launch.ILauncher;
import org.eclipse.m2m.atl.engine.emfvm.launch.EMFVMLauncher;
import org.eclipse.emf.common.notify.Notifier;

public class RunTransfoJava {

	public static void main(String[] args) {
		try {

			 * Paths 
			String inModelPath = "models/Example.drd";
			String outModelPath = "models/";
			String DRDMetamodelPath = "metamodels/DRD.ecore";
			String AIdMetamodelPath = "metamodels/AI.ecore";                	

			System.out.println("inModelPath: " + inModelPath);
			System.out.println("outModelPath: " + outModelPath);
			System.out.println("DRDMetamodelPath: " + DRDMetamodelPath);
			System.out.println("AIdMetamodelPath: " + AIdMetamodelPath);

			 * Initializations
			ILauncher transformationLauncher = new EMFVMLauncher();
			ModelFactory modelFactory = new EMFModelFactory();
			IInjector injector = new EMFInjector();
			IExtractor extractor = new EMFExtractor();

			 * Load metamodels
			IReferenceModel drdMetamodel = modelFactory.newReferenceModel();
			injector.inject(drdMetamodel, DRDMetamodelPath);

			IReferenceModel aiMetamodel = modelFactory.newReferenceModel();
			injector.inject(aiMetamodel, AIdMetamodelPath);;
			System.out.println("Metamodels loaded.");

			 * Load models and run transformation
			IModel inModel = modelFactory.newModel(drdMetamodel);
			IModel outModel = modelFactory.newModel(aiMetamodel);
			System.out.println("IN, OUT models loaded.");

			System.out.print("Running ATL trasformation...");
			transformationLauncher.initialize(new HashMap<String,Object>());
			transformationLauncher.addInModel(inModel, "IN", "DRD");
			transformationLauncher.addOutModel(outModel, "OUT", "AI");

			transformationLauncher.launch(ILauncher.RUN_MODE, new NullProgressMonitor(), new HashMap<String,Object>(),
					new FileInputStream("transformations/DRD2AI.asm"));

			System.out.print("Extracting OUT model...");
			extractor.extract(outModel, outModelPath);

			 * Unload all models and metamodels (EMF-specific)
			EMFModelFactory emfModelFactory = (EMFModelFactory) modelFactory;
			emfModelFactory.unload((EMFModel) inModel);
			emfModelFactory.unload((EMFModel) outModel);
			emfModelFactory.unload((EMFReferenceModel) drdMetamodel);
			emfModelFactory.unload((EMFReferenceModel) aiMetamodel);

		} catch (ATLCoreException e) {
		} catch (FileNotFoundException e) {

Re: Running an ATL Transformation from Java [message #1220726 is a reply to message #1220718] Fri, 13 December 2013 09:59 Go to previous messageGo to next message
Hugo Bruneliere is currently offline Hugo BruneliereFriend
Messages: 667
Registered: July 2009
Senior Member

Have you refreshed your project after running the Java program launching the transformation to ensure that the output model has not been created at the expected location?
If yes, then there may be an error with the given path according to the program's base directory.

Hugo Bruneliere - R&D Engineer
AtlanMod research team (Inria, EMN & LINA)
Ecole des Mines de Nantes
Nantes - France
Re: Running an ATL Transformation from Java [message #1220788 is a reply to message #1220726] Fri, 13 December 2013 15:25 Go to previous message
Daniele G is currently offline Daniele GFriend
Messages: 6
Registered: October 2013
Junior Member
It was only a refresh issue, Smile.
Previous Topic:[ATL] Containment references cannot span across models
Next Topic:Is there a way to stop a running ATL transformation {and, or} return something to the launcher?
Goto Forum:

Current Time: Sat Jun 23 16:18:19 GMT 2018

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

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

Back to the top