したがって、次のようにカスタムツリー構造を実装したツリーがあります。
ツリークラス:
@XmlRootElement
public class Tree {
Set<? extends TreeNode> nodes;
@XmlElement
Set<? extends TreeNode> getNodes() {...}
}
抽象ノード:
public abstract class Node {
Set<? extends Node> children;
private String name;
@XmlAttribute
public String getName() {...}
@XmlElement
public abstract Set<? extends Node> getChildren();
}
グループ (グループとエンティティを含めることができます):
@XmlRootElement(name = "group")
public class Group extends Node {
private final Set<Group> groups = new HashSet<Group>();
private final Set<Entity> entities = new HashSet<Entity>();
public Set<Group> getGeoups() { ... }
public Set<Entity> getEntities() { ... }
}
ノード:
@XmlRootElement(name = "entity")
public class Entity extends Node {
public Set<DashboardNode> getChildren() {
return Collections.<DashboardNode> emptySet();
}
}
私の問題は、JAXB がグループとエンティティに異なる名前を使用しないことです。次のような結果を得たいと思います:
<tree>
<node>
<group>
<group>
<entity/>
</group>
</group>
</node>
<node>
<group>
<entity/>
</group>
<group>
</group>
<entity/>
</node>
</tree>
そして、私は代わりにこれを取得します:
<tree>
<node>
<children>
<children>
<children/>
</children>
</children>
</node>
(...)
</tree>
getChildren() メソッドの抽象ノード クラスの注釈を削除すると、次のようになります。
<tree>
<node>
</node>
<node>
</node>
</tree>