我在修改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从可选中删除注释但没有运气.我想知道是否还有其他需要注意的事项才能正确生成模式(和编组/解组)?
非常感谢