MPS/generator/templates/weavig rules
Разбираюсь с MPS,
Первый язык делал так, что формат сгенеренных java классов был неважен.
Лишь бы работало. В итоге получал набор классов, плюс некий огромный класс, который все классы объединяет в одну систему.
Теперь новая задача - на выходе получить класс с нужной мне структурой - реализацию абстрактного класса, который уже есть в библиотеке.
Класс содержит набор полей, конструктор, который получает значения этих полей, плюс набор геттеров/сеттерв (те же поля), плюс метод который работает с данными полями - упаковывает их в нужный формат, опять же в последовательности полей.
получается что мне нужно создать темплейт который содержит один темплейт-фрагмент поля, фрагмент аргумента конструктора, фрагмент геттера, и сеттер и фрагмент метода (упаковщика).
проходя по нодам, описанным в модели, я должен к базовому темплейту класса, добавить темплейт, описывающий добавляемые элементы для отдельного поля, и в итоге получить класс с набром нужных полей, аргументов, геттеров/сеттеров.
порывшись в исходниках предположил что для этого используется weaving rule в mapping configuration.
там есть
1. query для нодов (это понятно - список нужных полей, и уже работать с этим списком - штамповать темплейты) - либо я ошибаюсь?
2. ссылка на темплейт - ну это тоже поянтно, темлейт для полей/аргументов/геттеров-сеттереров.... каждый получает parentNode то самое поле, берет имя, данные и заполняет поля и аргументы.
3. и некий context - вот это совершенно не понятно, порывшись в исходниках, увидел работу с некой утилитой JavaModelUtil которая ищет нужный билдер для нода.
вопрос - кто знает как работать с weaving rules? просто очень интересно :) или weaving rules предназначены для другого и я не там рою?
реально первый язык который сделал, позволил действительно упростить систему. хочется теперь воспользоваться всей мощью MPS, но не хватает информации.
Первый язык делал так, что формат сгенеренных java классов был неважен.
Лишь бы работало. В итоге получал набор классов, плюс некий огромный класс, который все классы объединяет в одну систему.
Теперь новая задача - на выходе получить класс с нужной мне структурой - реализацию абстрактного класса, который уже есть в библиотеке.
Класс содержит набор полей, конструктор, который получает значения этих полей, плюс набор геттеров/сеттерв (те же поля), плюс метод который работает с данными полями - упаковывает их в нужный формат, опять же в последовательности полей.
получается что мне нужно создать темплейт который содержит один темплейт-фрагмент поля, фрагмент аргумента конструктора, фрагмент геттера, и сеттер и фрагмент метода (упаковщика).
проходя по нодам, описанным в модели, я должен к базовому темплейту класса, добавить темплейт, описывающий добавляемые элементы для отдельного поля, и в итоге получить класс с набром нужных полей, аргументов, геттеров/сеттеров.
порывшись в исходниках предположил что для этого используется weaving rule в mapping configuration.
там есть
1. query для нодов (это понятно - список нужных полей, и уже работать с этим списком - штамповать темплейты) - либо я ошибаюсь?
2. ссылка на темплейт - ну это тоже поянтно, темлейт для полей/аргументов/геттеров-сеттереров....
3. и некий context - вот это совершенно не понятно, порывшись в исходниках, увидел работу с некой утилитой JavaModelUtil которая ищет нужный билдер для нода.
вопрос - кто знает как работать с weaving rules? просто очень интересно :) или weaving rules предназначены для другого и я не там рою?
реально первый язык который сделал, позволил действительно упростить систему. хочется теперь воспользоваться всей мощью MPS, но не хватает информации.
