Поле типа свойства не заполнено для UML PrimitiveType в Xpand

У меня есть шаблон XPT, который генерирует текст из модели UML. Это отрывок, который я использую для атрибутов класса

«FOREACH attribute AS a»
    Id: «a.name»
    Type: «a.type.name»
«ENDFOREACH»

Все работает хорошо, пока type это класс из самой модели. Но если это примитивный тип, то все поля, включая name, установлен в null, Если я изменю «a.type.name» в «a.type»тогда ответ будет примерно таким:

org.eclipse.uml2.uml.internal.impl.PrimitiveTypeImpl@6e315086 (eProxyURI:
     pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String)

Отладчик показывает, что только eStorage приватное поле устанавливается на объекте, поэтому toString() производит вывод выше.

Интересно то же самое выражение в Acceleo оценивается правильно:

[query public getType(t : Type) : String = t.name /]

Вопрос: как мне получить type поле атрибутов заполнить для примитивных типов UML в Xtend?

РЕДАКТИРОВАТЬ: Проблема сужена до этого вопроса: EProxy URI не разрешается в модели ecore

2 ответа

Решение

Код, сгенерированный Acceleo, может разрешить необычное pathmap:// eProxyURIs. По умолчанию простой шаблон Xpand или код Xtend не может разрешить их. Смотрите этот вопрос для более подробной информации и решения.

Мое оригинальное решение здесь .

После двух дней поисков я нашел решение.

Решение напишите здесь: http://kompilatory.iiar.pwr.edu.pl/wiki/index.php/Acceleo/Getting_Started_33#Generating_java_beans

Мне пришлось изменить MANIFEST.MF и файл Generate.java следующим образом.

  1. Мне пришлось добавить org.eclipse.uml2.uml.resources в качестве новой зависимости.

  2. Более того, мне пришлось изменить файл Generate.java следующим образом.

2.1. Для метода RegisterResourceFactories(ResourceSet resourcesSet) должно было быть установлено значение «@generated NOT».

2.2. а последнюю строку метода пришлось раскомментировать и поставить точку с запятой ";" до конца строки. UMLResourcesUtil.init(resourceSet);

2.3. И, наконец, пришлось добавить новую линию импорта. "импортировать org.eclipse.uml2.uml.resources.util.UMLResourcesUtil;"

Другие вопросы по тегам