Я бы использовал более новый синтаксис JET2. Вы должны быть в состоянии создать новое преобразование JET с помощью New -> Other.
Что касается того, что происходит на высоком уровне, у вас будет шаблон с именем main.jet, который будет действовать как контроллер. Сам по себе он не создает никакого текстового контента, но будет управлять генерацией проектов, папок и файлов.
Я понимаю, что вы хотите использовать объект класса в качестве входных данных, но я рекомендую вам создать свои шаблоны для использования XML-файла в качестве входных данных. Как то так:
<root>
<object name="A">
<method name="m1" returns="void">
<arg name="x" type="int" />
<arg name="y" type="int" />
</method>
<method name="m2" returns="int">
<arg name="a" type="Object" />
</method>
<method name="m3" returns="Object">
</method>
</object>
</root>
Вы можете видеть, что с помощью класса мы можем "легко" создать такой XML-документ.
Таким образом, main.jet будет выглядеть примерно так:
<%@taglib prefix="ws" id="org.eclipse.jet.workspaceTags" %>
<c:iterate select="/root/object" var="object"
<c:set select="$object" name="impl" ><c:get select="$object/@name"/>Implementation</c:set>
<c:set select="$object" name="interface" ><c:get select="$object/@name"/></c:set>
</c:iterate>
<c:iterate select="/root/object" var="object">
<ws:file path="my project/src/a/b/c/{$object/@interface}.java" template="interface.jet" />
<ws:file path="my project/src/a/b/c/{$object/@impl}.java" template="impl.jet" />
</c:iterate>
По сути, вы перебираете каждый объект (вы можете определить сколько угодно), вы создаете имена реализации и интерфейса и сохраняете эти имена обратно в модель.
Выполнив все соглашения об именах, вы перебираете элементы объекта и применяете шаблоны к модели, используя тег ws: file. Тег сообщает, какой шаблон использовать, а затем указывает имя файла, которое необходимо создать с результатами генерации.
Файл interface.jet может выглядеть примерно так:
package a.b.c;
interface <c:get select="$object/@interface"/> {
<c:iterate select="$object/method" var="method" >
<c:get select="$method/@returns"/> <c:get select="$method/@name"/>(int x, int y);
</c:iterate>
}
Обратите внимание, что я жестко запрограммировал пакет как a.b.c. Вы можете создать эту переменную, добавив атрибут в файл XML, возможно, к элементу объекта и используя тег c: get, чтобы вставить его в источник. Я также оставил аргументы жестко запрограммированными, но вы можете использовать другой тег итерации для итерации по вложенным элементам в модели для записи сигнатуры метода.
Так что я остановлюсь здесь, чтобы посмотреть, если это то, что вы искали. Возможно, вы захотите задать больше в комментариях или оставить больше вопросов.