需要向 JAXB class 添加一个方法。如何?或者我应该?

Need to add a method to JAXB class. How? Or should I?

我使用 JAXB 从 WADL 生成 POJO xsd。我直接从 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!

Is that good practice?

这是主观的。我通常不这样做。我更喜欢 schema-derived 类 作为没有任何业务逻辑的简单 DTO。

How do I add this method so that it is generated along with the xsd?

您可以使用代码注入器插件注入代码。请看下面的问题:

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