需要为JAXB类添加一个方法。怎么样?或者我应该?

时间:2018-03-07 17:49:35

标签: java java-8 jaxb wadl

我使用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!

1 个答案:

答案 0 :(得分:1)

  

这是好的做法吗?

这是主观的。我通常不会这样做。我更喜欢将模式派生类作为简单的DTO而没有任何业务逻辑。

  

如何添加此方法以便与xsd一起生成?

您可以使用Code Injector插件注入代码。请参阅以下问题:

Inserting code with XJC+xsd+jxb using the options " -Xinject-code -extension "