Возможно ли генерировать Java-код из метамодели Ecore без зависимостей EMF? Создайте «чистый код», как если бы это было поколение из UML-модели.Как создать Java-код из метамодели Ecore без зависимостей jff?
ответ
Простым способом является установка опции GenModel «Подавление типов EMF» в разделе «Стандартные параметры модели» узла верхнего уровня ... Есть набор дыр соответствующих параметров. Подробную информацию см. В книге EMF (2-е издание).
Вы также можете использовать JET для генерации собственного кода Java из модели ECore. Посмотрите на «Metamodeling with EMF: Generating concrete, reusable Java snippets» за довольно подробное описание.
Не все может быть удалено с помощью редактора модели EMF. Методы #eSet
, #eGet
и т. Д. Должны быть удалены в базовом шаблоне. Метод eInvoke
можно удалить с помощью параметра «Operation Reflection» = false. Пакет утилиты можно удалить, установив конфигурацию уровня пакета «Factory Factory» = false. Существуют другие изменения, которые можно управлять из конфигурации genmodel - более подробно см. В книге EMF Modeling Framework, раздел 12.3.1.
Обратите внимание, что «Подавить EMF типов» удаляют тип EMF из EOperation
и EReference
добытчиков и сеттеров только, но не от заявленного Ивар или конструктора, используемого в вашем геттере (если список пустой). Они должны быть изменены в шаблоне - Class.javajet, чтобы быть конкретным. Подробнее о том, как заменить базовые шаблоны EMF, см. using-dynamic-templates-in-emf.
Для Ивар, используйте Feature#getImportedType
, не Feature#getImportedInternalType
:
protected <%=genFeature.getImportedType(genClass)%> <%=genFeature.getSafeName()%>;
Эта линия повторяет комментарий раздел, содержащий следующее, что находится в пределах теста isListType:
<%} else if (genFeature.isListType() || genFeature.isReferenceType()) {%>
<%if (genClass.isField(genFeature)) {%>
/**
* The cached value of the '{@link #<%=genFeature.getGetAccessor()%>() <em><%=genFeature.getFormattedName()%></em>}' <%=genFeature.getFeatureKind()%>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
Для аксессору, использовать что-то например, заменить EMF EList
имп. с ArrayList
:
<%=genFeature.getSafeName()%> = new <%=genModel.getImportedName("java.util.ArrayList")%><<%=genFeature.getListItemType()%>>();
instead of:
<%=genFeature.getSafeName()%> = new <%=genClass.getListConstructor(genFeature)%>;
Можно утверждать, что если вам нужно изменить шаблоны до такой степени, вы не должны использовать EMF :-) – wmorrison365
- 1. Как создать плагин с использованием метамодели .ecore
- 2. Расширение третьей метамодели pary ecore
- 3. Как экспортировать Xcore в Ecore?
- 4. Реализовать мета-модель Ecore программно
- 5. Как создать приложение wxWidgets без внешних зависимостей?
- 6. Roslyn: создание сборок из метамодели
- 7. Создать колесо без построения зависимостей
- 8. .jff File Conversion OSX
- 9. Как создать проект C# без проверки зависимостей?
- 10. Как создать исполняемый файл Crystal без зависимостей?
- 11. Как создать макет без круговых зависимостей
- 12. Создание и изменение Ecore файлов и их экземпляры из кода
- 13. Ecore decorator
- 14. Как нарисовать xs: любой в EMF Ecore?
- 15. Загрузить файл в JFF-сетях
- 16. Ecore Reference
- 17. Создать JAR-файл без включения внешних зависимостей
- 18. Как создать граф зависимостей из текстового файла?
- 19. Ecore модификация
- 20. файл create.aar без зависимостей
- 21. Как создать приложение Qt-5 в Windows без зависимостей
- 22. JPA 2 Criteria API не учитывает регистр без использования метамодели
- 23. Поля метамодели JPA ноль
- 24. Как создать многоразовый тестовый код без создания круговых зависимостей?
- 25. Как создать изображение в Ruby без внешних зависимостей?
- 26. VS 2008 C++ как создать проект без .net-зависимостей
- 27. Извлечь модель ecore из файла .jar
- 28. Traverse ecore модель
- 29. M2T Xpand с существующей моделью ecore
- 30. Могу ли я добавить ocl в ecore с java-кодом?
«Подавить типы EMF», однако, не удаляет все зависимости. Я буду смотреть на книгу, спасибо – seeebown
Он может также служить другим: http://wiki.eclipse.org/EMF/Recipes#Recipe:_Generating_Pure_API_With_No_Visible_EMF_Dependencies – seeebown
Не все может быть удалено с помощью редактора модели EMF. Методы #eSet, #eGet и т. Д. Необходимо удалить в базовом шаблоне. Метод eInvoke можно удалить с помощью параметра «Operation Reflection» = false. Пакет утилиты можно удалить, установив конфигурацию уровня пакета «Factory Factory» = false. Тебя - другие. В настоящее время разрабатывается, как использовать List, а не EList :-( – wmorrison365