我有一个从 UML 模型生成文本的 XPT 模板。这是我在类的属性上使用的摘录
«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
在 Xtend 中为原始 uml 类型填写属性字段?
编辑:问题缩小到这个问题:EProxy URI does not resolve in ecore model