I created a JET Transformation project in order to have some classes generated. Basically, my main.jet template looks like this:
<c:setVariable select="/input/project/srcFolder" var="srcFolder" />
<c:iterate select="/input/elmt/part" var="currPart">
<java:class name="{$currPart/name}Part" package="{$currPart/package}" srcFolder="{$srcFolder}" template="templates/part/MyNamePart.java.jet"/>
<java:class name="{$currPart/name}PartReqAO" package="{$currPart/package}" srcFolder="{$srcFolder}" template="templates/part/MyNamePartReqAO.java.jet"/>
<java:class name="Modele{$currPart/name}" package="{$currPart/package}" srcFolder="{$srcFolder}" template="templates/part/ModeleMyName.java.jet"/>
<java:class name="IModele{$currPart/name}" package="{$currPart/package}" srcFolder="{$srcFolder}" template="templates/part/IModeleMyName.java.jet"/>
<java:class name="Composite{$currPart/name}" package="{$currPart/package}" srcFolder="{$srcFolder}" template="templates/part/CompositeMyName.java.jet"/>
</c:iterate>
And my inputs are:
<input>
<project>
<bundleName>my.bundle.name</bundleName>
<srcFolder>my.bundle.name/src</srcFolder>
<author>me</author>
</project>
<elmt>
<part>
<package>com.blahblah.output</package>
<name>MyUC1</name>
</part>
</elmt>
</input>
All is working fine when using the Eclipse launcher. But then, I wanted my generation be accessible from an Eclipse menu. I follow: http://wiki.eclipse.org/M2T-JET-FAQ/How_do_I_run_a_JET_template_from_Java%3F thus have the following code:
Bundle bundle = Platform.getBundle("my.bundle.name");
InputStream inputStream = FileLocator.openStream(bundle, new Path("input.xml"), false);
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(inputStream);
final JET2Context jet2Context = JET2Helpers.createJETContext(doc, null);
final BufferedJET2Writer jet2Writer = JET2Helpers.createJETWriter();
JET2TemplateManager.run(new String[] {"my.bundle.name"}, new JET2TemplateManager.ITemplateOperation() {
public void run(ITemplateRunner templateRunner) {
templateRunner.generate("templates/main.jet", jet2Context, jet2Writer);
}
});
getConsoleSupport().println(jet2Writer.getContent());
But i couldn't manage generating my classes (only white spaces). If I replace templates/main.jet by templates/part/MyNamePart.java.jet, then I obtain an output (as currPart variable is defined in main.jet, not a very interesting one).
What is missing to invoke a "start template" (as said in the extension point: org.eclipse.jet.transform) from Java?
Thanks a lot for you help.
--andiqo