我有一个从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 /]问:如何在Xtend中为基本的UML型别填充属性的type字段?
编辑:问题缩小到这个问题:EProxy URI does not resolve in ecore model
发布于 2013-07-01 20:57:30
由Acceleo生成的代码可以解析不寻常的pathmap:// eProxyURIs。默认情况下,简单的Xpand模板或Xtend代码无法解析它们。有关详细信息和解决方案,请参阅this question。
https://stackoverflow.com/questions/17088161
复制相似问题