Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » ATL » UML2 to Java Literals
UML2 to Java Literals [message #873492] Fri, 18 May 2012 11:12 Go to next message
Rogério Costa is currently offline Rogério CostaFriend
Messages: 5
Registered: April 2012
Junior Member
By the advice of Ed Willink (thank again), I should post my last unanswered post here:
--- POST

I am developing a model-based tool, PIM -> PSM -> Code, and I am using EMF ATL to accomplish the M2M transformations. My problem is simple: My ATL mapping works betwen UML2 and Java metamodels, except in Primitive Types.

If some with more experience could look to my files and take a shot, it will help me a lot!

UML metamodel: By URI, but you could use that as reference: UML.ecore;
Java metamodel: Java-20040316.ecore; (To be built gradually);
ATL mapping: UML2JAVA.atl;

My (UML) input Model: exampleUMLModel_PIM.xmi;

My (Java) output Model: out.j2se5; ==> At line 18 it is supposed to have a Primitive Type, right?

tanks in advance

--- Continuation
This is my Atl configuration, hope this help a little more ... Should I need to register something more?

 * To change this template, choose Tools | Templates
 * and open the template in the editor.

public class UML2_2_JAVA extends AbstractPIMPSM_Factory
    private IInjector injector;
    private IExtractor extractor;
    private IReferenceModel sourceMetamodel;
    private IReferenceModel targetMetamodel;
    private String transformationFilepath = null;
    private String sourceMetaModelFilepath = null;
    private String targetMetaModelFilepath = null;
    private String sourceDataFilepath = null;
    private String targetDataFilepath = null;
    private IModel targetModel;
    private IModel sourceModel;
    private ModelFactory factory;
    private ILauncher launcher;
    public UML2_2_JAVA()

    public IModel getTargetModel()
        return this.targetModel;
    /// From now on, there are the functions
    public void doCore() throws ATLCoreException
        CoreService.registerLauncher("EMF-specific VM", EMFVMLauncher.class);
        CoreService.registerFactory("EMF", EMFModelFactory.class); 
        CoreService.registerExtractor("EMF", EMFExtractor.class);
        CoreService.registerInjector("EMF", EMFInjector.class);
        injector = CoreService.getInjector("EMF"); 
        extractor = CoreService.getExtractor("EMF"); 			
        // Defaults
        this.factory = CoreService.getModelFactory("EMF");
        /*Resource specification*/
        Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("ecore", new EcoreResourceFactoryImpl());
        Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xmi",  UMLResource.Factory.INSTANCE);
        Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
        /*Type specification*/
        EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
        EPackage.Registry.INSTANCE.put("ecore", EcorePackage.eINSTANCE);
        EPackage.Registry.INSTANCE.put("h**p://", UMLPackage.eINSTANCE);
        EPackage.Registry.INSTANCE.put("h**p://", UMLPackage.eINSTANCE);
        Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("j2se5", new EcoreResourceFactoryImpl());
    public void doMetaModels(String sourceTargetMMPath) throws ATLCoreException
    { this.doMetaModels(sourceTargetMMPath, null); }
    public void doMetaModels(String sourceMMPath, String targetMMPath) throws ATLCoreException
        // Metamodels
        this.sourceMetaModelFilepath = sourceMMPath;
        sourceMetamodel = factory.newReferenceModel();
        injector.inject(sourceMetamodel, UMLPackage.eNS_URI);

        if(targetMMPath != null) //This means, the metamodel is the same for both models (InputModel & OutputModel)
            this.targetMetaModelFilepath =  targetMMPath;
            targetMetamodel = factory.newReferenceModel();                                              
            injector.inject(targetMetamodel, URI.createFileURI(targetMetaModelFilepath).toString());
    public void doModels(String sourceDM) throws ATLCoreException
         /// Creating models
        sourceModel = factory.newModel(sourceMetamodel);
        if(this.targetMetamodel == null)
        { targetModel = factory.newModel(this.sourceMetamodel);}
        { targetModel = factory.newModel(this.targetMetamodel); }
        // Loading existing model
        this.sourceDataFilepath = sourceDM;
        injector.inject(sourceModel, URI.createFileURI(sourceDM).toString());         
    public void doTrans(String transformationPath) throws ATLCoreException, MalformedURLException, IOException
        // Getting launcher
        launcher = (EMFVMLauncher)CoreService.getLauncher("EMF-specific VM"); 
        launcher.initialize(Collections.<String, Object> emptyMap());

        // Launching //TODO: REVER ISTO
        launcher.addInModel(sourceModel,"IN", "UML");
        launcher.addOutModel(targetModel, "OUT", "JAVA");
        // the loadModule function requires an absolute path to the ASM file
        this.transformationFilepath = transformationPath;
        URL asmFile = new File(transformationPath).toURI().toURL();
        Object loadedModule = launcher.loadModule(asmFile.openStream());

        //launcher.addLibrary("libName", new File("path").toURI().toURL().openStream());
        Map <String, Object> optionsTransf = new  TreeMap <String, Object>();
        optionsTransf.put("showSummary", "true");
        optionsTransf.put("printExecutionTime", "true");
        optionsTransf.put("continueAfterError", "true");
        optionsTransf.put("allowInterModelReferences", "true");
        //optionsTransf.put("step", "true"); 
        launcher.launch(ILauncher.DEBUG_MODE, new NullProgressMonitor(), optionsTransf, loadedModule);           
    * Saving model
    public void doSave(String dataTargetfp) throws ATLCoreException
        this.targetMetaModelFilepath = dataTargetfp;
        //extractor.extract(targetModel, System.out, null);
        extractor.extract(targetModel, URI.createFileURI(dataTargetfp).toString());

Re: UML2 to Java Literals [message #873494 is a reply to message #873492] Fri, 18 May 2012 11:14 Go to previous messageGo to next message
Rogério Costa is currently offline Rogério CostaFriend
Messages: 5
Registered: April 2012
Junior Member
Files here: h**p://
Re: UML2 to Java Literals [message #899084 is a reply to message #873494] Mon, 30 July 2012 14:05 Go to previous message
Emwedish Endargachew is currently offline Emwedish EndargachewFriend
Messages: 27
Registered: April 2011
Junior Member
HI Rogério Costa,

I am having similar issue with literals, can you tell me what solved your problem, it it is solved.

thanks in advance,

[Updated on: Mon, 30 July 2012 14:06]

Report message to a moderator

Previous Topic:ATL:Package with URI not found
Next Topic:Error loading File
Goto Forum:

Current Time: Sun Dec 21 17:20:45 GMT 2014

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

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