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

Gee*_*113 12 java jaxb

我在修改Optional包含a的问题时遇到了问题Set.

最初我们在一个类中有一个Set,它将被编组为XML,如下所示:

@XmlElementWrapper(name = "items")
@XmlElement(name = "item")
public Set<Item> getItems()
{
    return items;
}
Run Code Online (Sandbox Code Playgroud)

我们在maven构建期间从我们的类创建一个模式.但是要求已经改变了,Set现在必须包含在一个Optional但我们仍然需要输出模式保持不变.

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

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

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);
     }

 }
Run Code Online (Sandbox Code Playgroud)

更改类后,schemagen失败(maven输出只是' null',据我所知这是一个已知的问题schemagen).

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

非常感谢