需要向 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 "
我使用 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 "