我在调整包含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
注释但没有运气。我想知道是否还有其他需要注意的事项才能正确生成模式(和编组/解组)?
非常感谢