如何使用带有jaxb的Set的java.util.Optional

时间:2015-05-14 15:18:31

标签: java jaxb

我在调整包含Optional的{​​{1}}时遇到问题。

最初,我们在一个要编组为XML的类中有一个Set:

Set

我们在maven构建期间从我们的类创建一个模式。但是,要求已经更改,@XmlElementWrapper(name = "items") @XmlElement(name = "item") public Set<Item> getItems() { return items; } 现在必须包含在Set中,但我们仍然需要输出模式保持不变。

Optional

在包装Set后,我创建了xml适配器:

@XmlElementWrapper(name = "items")
@XmlElement(name = "item")
@XmlJavaTypeAdapter(value = OptionalAdapter.class)
public Optional<Set<Item>> getItem()
{
    return items;
}

更改课程后,public class OptionalAdapter extends XmlAdapter<Set<Item>,Optional<Set<Item>>> { @Override public Optional<Set<Item>> unmarshal(final Set<Item> v) throws Exception { return Optional.ofNullable(v); } @Override public Set<Item> marshal(final Optional<Set<Item>> v) throws Exception { return v.orElse(null); } } 失败(maven输出只是&#39; schemagen&#39;,据我所知,这是一个已知问题null)。

我尝试更改适配器以使用集合并从可选中移除schemagen注释但没有运气。我想知道是否还有其他需要注意的事项才能正确生成模式(和编组/解组)?

非常感谢

0 个答案:

没有答案