Xpand中未为UML原语类型填写属性的类型字段
我有一个从UML模型生成文本的XPT模板。这是我在类的属性上使用的摘录Xpand中未为UML原语类型填写属性的类型字段,uml,code-generation,xtend,acceleo,xpand,Uml,Code Generation,Xtend,Acceleo,Xpand,我有一个从UML模型生成文本的XPT模板。这是我在类的属性上使用的摘录 «FOREACH attribute AS a» Id: «a.name» Type: «a.type.name» «ENDFOREACH» 只要类型是模型本身的一个类,所有这些都可以正常工作。但如果它是基元类型,则所有字段,包括名称,都设置为null。如果我将«a.type.name»更改为«a.type»,则响应如下: org.eclipse.uml2.uml.internal.impl.Primiti
«FOREACH attribute AS a»
Id: «a.name»
Type: «a.type.name»
«ENDFOREACH»
只要类型
是模型本身的一个类,所有这些都可以正常工作。但如果它是基元类型,则所有字段,包括名称
,都设置为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 /]
问题:如何在Xtend中为原始uml类型填写属性的type
字段
编辑:问题缩小到这个问题:Acceleo生成的代码可以解决异常的
路径图://
eProxyURI。默认情况下,简单的Xpand模板或Xtend代码无法解析它们。有关更多详细信息和解决方案,请参阅