Skip to main content



      Home
Home » Modeling » M2T (model-to-text transformation) » running jet application
running jet application [message #20695] Wed, 06 June 2007 02:49 Go to next message
Eclipse UserFriend
Originally posted by: alexjaquet.gmail.com

Hi,

I would like to know to run jet from a gmf application.

Thanks,

Regards,
Alexandre
Re: running jet application [message #20771 is a reply to message #20695] Wed, 06 June 2007 08:48 Go to previous messageGo to next message
Eclipse UserFriend
JET has an API:

JET2Platform.runTransformOnObject(transformID, documentRoot,
progressMonitor)

Get the EMF Resource object for your GMF model, and use that as the
documentRoot value.

If you JET transform uses the predefined variable
org.eclipse.jet.resource.project.name, it will not be defined when using
this API. You can define it yourself, however:

Map variables = new HashMap();
variables.put("org.eclipse.jet.resource.project.name",
theNameOfTheProjectContainingTheEMFResource);
JET2Platform.runTransformOnObject(transformID, documentRoot, variables,
progressMonitor)

Paul

"Alexandre Jaquet" <alexjaquet@gmail.com> wrote in message
news:f45ldt$r60$1@build.eclipse.org...
> Hi,
>
> I would like to know to run jet from a gmf application.
>
> Thanks,
>
> Regards,
> Alexandre
>
Re: running jet application [message #20807 is a reply to message #20771] Wed, 06 June 2007 09:50 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: alexjaquet.gmail.com

Thanks Paul,

Regards,
Alexandre

"Paul Elder" <pelder@ca.ibm.com> a
Re: running jet application [message #25247 is a reply to message #20771] Sun, 08 July 2007 12:15 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: woodri.us.ibm.com

Paul,

Thanks, that worked. I was able to load and run a template.

But there is a classloader problem. Another project that does work on a
model (call it com.xyz.myproject) uses templates to do part of the work.
A JET2 project manages the templates (call this project jet2test) - so
com.xyz.myproject runs a jet2test template.

When com.xyz.myproject passes one of its objects into the template's
generate() method via JET2Context's setVariable(), the template's
classloader can't find the object. The classloader is a
DefaultClassLoader, whose delegate is a BundleLoader. I looked at the
JET2 APIs, and didn't see access to classloader in JET2TemplateManager,
JET2TemplateLoader, or JET2Context.

Here's the setup:
- the context object is part of com.xyz.myproject, which exports package
com.xyz.myproject.stuff.
- the template is in project jet2test, which sees com.xyz.myproject as a
required project on the build path.

I'm debugging com.xyz.myproject, which loads a template from jet2test:

<%@ jet package="library.Writer.name" class="template1"
imports="com.xyz.myproject.stuff.MyClass" %>
<% MyClass instance = (MyClass) context.getVariable("MyClass"); %>
<%= instance.getSomeValue() %>

this compiles to:

...
import com.xyz.myproject.stuff.MyClass;
...
public void generate(final JET2Context context, final JET2Writer
__out) {
JET2Writer out = __out;
MyClass instance = (MyClass) context.getVariable("MyClass");
out.write( instance.getSomeValue() );
out.write(NL);
}

When context.getVariable("MyClass") runs, the classloader throws this
exception:

java.lang.NoClassDefFoundError: com.xyz.myproject.stuff.MyClass
at library.Writer.name.template1.generate(template1.java)
at
org.eclipse.jet.JET2TemplateManager$TemplateRunnerImpl.gener ate(JET2TemplateManager.java)
at com.xyz.myproject.template.Jet2Template$1.run(Jet2Template.j ava:52)
at org.eclipse.jet.JET2TemplateManager.run(JET2TemplateManager. java:147)
at com.xyz.myproject.template.Jet2Template.generate(Jet2Templat e.java:47)
at ...


Paul Elder wrote:
> JET has an API:
>
> JET2Platform.runTransformOnObject(transformID, documentRoot,
> progressMonitor)
>
> Get the EMF Resource object for your GMF model, and use that as the
> documentRoot value.
>
> If you JET transform uses the predefined variable
> org.eclipse.jet.resource.project.name, it will not be defined when using
> this API. You can define it yourself, however:
>
> Map variables = new HashMap();
> variables.put("org.eclipse.jet.resource.project.name",
> theNameOfTheProjectContainingTheEMFResource);
> JET2Platform.runTransformOnObject(transformID, documentRoot, variables,
> progressMonitor)
>
> Paul
>
> "Alexandre Jaquet" <alexjaquet@gmail.com> wrote in message
> news:f45ldt$r60$1@build.eclipse.org...
>> Hi,
>>
>> I would like to know to run jet from a gmf application.
>>
>> Thanks,
>>
>> Regards,
>> Alexandre
>>
>
>
Re: running jet application [message #25289 is a reply to message #25247] Sun, 08 July 2007 12:16 Go to previous message
Eclipse UserFriend
Originally posted by: woodri.us.ibm.com

Whoa - sorry, replied to the wrong message. Should have been "invoke
template from java with string return?"

- Rick

Rick Wood wrote:
> Paul,
>
> Thanks, that worked. I was able to load and run a template.
>
> But there is a classloader problem. Another project that does work on a
> model (call it com.xyz.myproject) uses templates to do part of the work.
> A JET2 project manages the templates (call this project jet2test) - so
> com.xyz.myproject runs a jet2test template.
>
> When com.xyz.myproject passes one of its objects into the template's
> generate() method via JET2Context's setVariable(), the template's
> classloader can't find the object. The classloader is a
> DefaultClassLoader, whose delegate is a BundleLoader. I looked at the
> JET2 APIs, and didn't see access to classloader in JET2TemplateManager,
> JET2TemplateLoader, or JET2Context.
>
> Here's the setup:
> - the context object is part of com.xyz.myproject, which exports package
> com.xyz.myproject.stuff.
> - the template is in project jet2test, which sees com.xyz.myproject as a
> required project on the build path.
>
> I'm debugging com.xyz.myproject, which loads a template from jet2test:
>
> <%@ jet package="library.Writer.name" class="template1"
> imports="com.xyz.myproject.stuff.MyClass" %>
> <% MyClass instance = (MyClass) context.getVariable("MyClass"); %>
> <%= instance.getSomeValue() %>
>
> this compiles to:
>
> ...
> import com.xyz.myproject.stuff.MyClass;
> ...
> public void generate(final JET2Context context, final JET2Writer
> __out) {
> JET2Writer out = __out;
> MyClass instance = (MyClass) context.getVariable("MyClass");
> out.write( instance.getSomeValue() );
> out.write(NL);
> }
>
> When context.getVariable("MyClass") runs, the classloader throws this
> exception:
>
> java.lang.NoClassDefFoundError: com.xyz.myproject.stuff.MyClass
> at library.Writer.name.template1.generate(template1.java)
> at
> org.eclipse.jet.JET2TemplateManager$TemplateRunnerImpl.gener ate(JET2TemplateManager.java)
>
> at com.xyz.myproject.template.Jet2Template$1.run(Jet2Template.j ava:52)
> at
> org.eclipse.jet.JET2TemplateManager.run(JET2TemplateManager. java:147)
> at
> com.xyz.myproject.template.Jet2Template.generate(Jet2Templat e.java:47)
> at ...
>
>
> Paul Elder wrote:
>> JET has an API:
>>
>> JET2Platform.runTransformOnObject(transformID, documentRoot,
>> progressMonitor)
>>
>> Get the EMF Resource object for your GMF model, and use that as the
>> documentRoot value.
>>
>> If you JET transform uses the predefined variable
>> org.eclipse.jet.resource.project.name, it will not be defined when
>> using this API. You can define it yourself, however:
>>
>> Map variables = new HashMap();
>> variables.put("org.eclipse.jet.resource.project.name",
>> theNameOfTheProjectContainingTheEMFResource);
>> JET2Platform.runTransformOnObject(transformID, documentRoot,
>> variables, progressMonitor)
>>
>> Paul
>>
>> "Alexandre Jaquet" <alexjaquet@gmail.com> wrote in message
>> news:f45ldt$r60$1@build.eclipse.org...
>>> Hi,
>>>
>>> I would like to know to run jet from a gmf application.
>>>
>>> Thanks,
>>>
>>> Regards,
>>> Alexandre
>>>
>>
>>
Previous Topic:Content assist/Locating error in JETEditor
Next Topic:Re: invoke template from java with string return?
Goto Forum:
  


Current Time: Tue Jul 01 16:03:00 EDT 2025

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

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

Back to the top