Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2m-atl-dev] [ATL] org.eclipse.m2m.atl.engine.emfvm.libextension extension point

This extension point allow to modify the emfvm execution environment. Modifications are applied before the transformation launch. To register an operation, you must first create it (you can find examples in org.eclipse.m2m.atl.engine.emfvm.lib.ExecEnv), then use the ExecEnv#registerOperation(Object type, Operation oper, String name), where name is the operation name and type the context type of the operation. The type defines on which elements the operation will be available. So to add an operation to an existing ATL type you have to refer to the java type the ATL type refers to. The mapping between java and atl types is defined into the org.eclipse.m2m.atl.engine.emfvm.lib.OclType class.

For instance, to add the operation myOp to the ATL "Sequence", you have to do:
Operation myOp = new Operation(<N: number of parameters, including self){
   public Object exec(AbstractStackFrame frame) {
               Object[] localVars = frame.getLocalVars();
               String self = (String)localVars[0];
               Object arg1 = localVars[1];
            ...
               Object argN = localVars[N];
               Object ret = null;
            ... <operation code here>
               return ret;
           }
}
execEnv.registerOperation(ArrayList.class, myOp, "myOp"); // ArrayList is mapped with the "Sequence" type in the emfvm

Best regards,

William

Pierre Kubryk a écrit :
Thanks for the response.

Is this the good way to solve my problem or am i obliged to use code like
((Map)ASMOclType.getVMOperations().get(context)).put(myOp.getName(), myOp);
?



2009/5/14 William Piers <william.piers@xxxxxxx <mailto:william.piers@xxxxxxx>>

    Hello,

    The .exsd files were not exported by the build... it has been
    corrected on CVS and will be effective on the next ATL build.

    Thanks for reporting it !

    William

    Pierre Kubryk a écrit :

        Hi !

        I am currently trying to extend the operations supported for a
        given ATL type and i am searching for a clean way to do it.

        I have found the org.eclipse.m2m.atl.engine.emfvm.libextension
        extension point from the org.eclipse.m2m.atl.engine.emfvm
        plug-in in version 3.0.0.v200905050615 when importing as
        source code the atl plug-ins, but this extension doesn't seems
        to have the related extension point schema (besides, there is
        no schema folder in this plug-in and no .exsd).
        Therefore i don't know if this extension point fit my problem
        and i haven't found any documentation about this.

        I tried to use the same extension point syntax than used in
        org.eclipse.m2m.atl.engine :

        <extension
                 point="org.eclipse.m2m.atl.engine.emfvm.libextension">
              <libextension
                    class="some class implementing
        org.eclipse.m2m.atl.engine.emfvm.lib.LibExtension"
                    name="xxx">
              </libextension>
           </extension>

        but it doesn't work since the extension point is not detected
        by eclipse when using the packaged plug-ins ( is supposed that
        .exsd absence explain this issue).

        If it is the good way to solve my problem, is there any solution ?

        Best regards,

-- Pierre Kubryk
        ------------------------------------------------------------------------

        _______________________________________________
        m2m-atl-dev mailing list
        m2m-atl-dev@xxxxxxxxxxx <mailto:m2m-atl-dev@xxxxxxxxxxx>
        https://dev.eclipse.org/mailman/listinfo/m2m-atl-dev


    _______________________________________________
    m2m-atl-dev mailing list
    m2m-atl-dev@xxxxxxxxxxx <mailto:m2m-atl-dev@xxxxxxxxxxx>
    https://dev.eclipse.org/mailman/listinfo/m2m-atl-dev




--
Pierre Kubryk
------------------------------------------------------------------------

_______________________________________________
m2m-atl-dev mailing list
m2m-atl-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2m-atl-dev

begin:vcard
fn:William Piers
n:Piers;William
org:Obeo
adr:2 rue Robert Schumann;;lot 24;NANTES;;44408;France
email;internet:william.piers@xxxxxxx
title:MDA Consultant
tel;work:+33 (0)2 51 13 50 53
tel;cell:+33 (0)6 20 31 75 98
url:http://www.obeo.fr
version:2.1
end:vcard


Back to the top