我有一个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 /]
问题:如何在Xtend中为原始uml类型填写type
属性字段?
编辑:问题缩小到这个问题:EProxy URI does not resolve in ecore model
答案 0 :(得分:1)
Acceleo生成的代码可以解决异常的pathmap://
eProxyURI。默认情况下,简单的Xpand模板或Xtend代码无法解析它们。有关详细信息和解决方案,请参阅this question。