我有一个从 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
在对象上设置了私有(private)字段,这就是 toString()
的原因产生上面的输出。有趣的是,Acceleo 中的相同表达式被正确评估:
[query public getType(t : Type) : String = t.name /]
问:我怎样才能得到
type
在 Xtend 中为原始 uml 类型填写属性字段?编辑:问题缩小到这个问题:EProxy URI does not resolve in ecore model
最佳答案
Acceleo生成的代码可以解决异常pathmap://
eProxyURI。默认情况下,简单的 Xpand 模板或 Xtend 代码无法解析它们。见 this question有关更多详细信息和解决方案。
关于uml - Xpand中UML PrimitiveType的Property的Type字段未填写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17088161/