ответ

2

Простым способом является установка опции GenModel «Подавление типов EMF» в разделе «Стандартные параметры модели» узла верхнего уровня ... Есть набор дыр соответствующих параметров. Подробную информацию см. В книге EMF (2-е издание).

Вы также можете использовать JET для генерации собственного кода Java из модели ECore. Посмотрите на «Metamodeling with EMF: Generating concrete, reusable Java snippets» за довольно подробное описание.

+0

«Подавить типы EMF», однако, не удаляет все зависимости. Я буду смотреть на книгу, спасибо – seeebown

+1

Он может также служить другим: http://wiki.eclipse.org/EMF/Recipes#Recipe:_Generating_Pure_API_With_No_Visible_EMF_Dependencies – seeebown

+0

Не все может быть удалено с помощью редактора модели EMF. Методы #eSet, #eGet и т. Д. Необходимо удалить в базовом шаблоне. Метод eInvoke можно удалить с помощью параметра «Operation Reflection» = false. Пакет утилиты можно удалить, установив конфигурацию уровня пакета «Factory Factory» = false. Тебя - другие. В настоящее время разрабатывается, как использовать List, а не EList :-( – wmorrison365

0

Не все может быть удалено с помощью редактора модели 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.getListItemTy‌​pe()%>>(); 

instead of: 
<%=genFeature.getSafeName()%> = new <%=genClass.getListConstructor(genFeature)%>; 
+1

Можно утверждать, что если вам нужно изменить шаблоны до такой степени, вы не должны использовать EMF :-) – wmorrison365

Смежные вопросы