在Xpand中为UML PrimitiveType输入未填写的属性字段

时间:2013-06-13 13:21:27

标签: uml code-generation xtend acceleo 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 /]

问题:如何在Xtend中为原始uml类型填写type属性字段?

编辑:问题缩小到这个问题:EProxy URI does not resolve in ecore model

1 个答案:

答案 0 :(得分:1)

Acceleo生成的代码可以解决异常的pathmap:// eProxyURI。默认情况下,简单的Xpand模板或Xtend代码无法解析它们。有关详细信息和解决方案,请参阅this question