我使用JAXB从WADL xsd生成POJO。我直接从W3C下载了xsd。但是,我希望我的一个POJO有一个帮助方法,允许我通过它递归,如下所示:
public Stream<WadlResource> flattenPath() {
return Stream.concat(
Stream.of(this),
this.methodOrResource.stream()
.filter(WadlResource.class::isInstance)
.map(WadlResource.class::cast)
.flatMap(WadlResource::flattenPath) // recursion here
);
}
请注意this
的使用。这种方法是我见过用流递归的唯一方法。
所以我的问题是:如何添加此方法以便与xsd一起生成?那是好习惯吗?或者我应该只生成一次代码,添加方法,并将其检入我的仓库(这似乎不是很好的做法)。 TIA!
答案 0 :(得分:1)
这是好的做法吗?
这是主观的。我通常不会这样做。我更喜欢将模式派生类作为简单的DTO而没有任何业务逻辑。
如何添加此方法以便与xsd一起生成?
您可以使用Code Injector插件注入代码。请参阅以下问题:
Inserting code with XJC+xsd+jxb using the options " -Xinject-code -extension "