在JaxB中加载带有父引用的类

时间:2015-02-19 22:36:43

标签: java xml json jaxb

我有一个看起来像这样的课程:

public class Policy{
    Key key;
    Permissions permissions;
    Policy parent;
    ...
}

我还有一位政策经理:

public PolicyManager{
    Map<Key, Policy> policyMap;

    public Policy getPolicy(Key key){
         return policyMap.get(key);
    }

如果某个策略有父级,则它会继承父级的权限。我并没有承诺在每个策略中实际存储对父级的引用,但至少我需要一些方法来查找父级以继承它的权限,无论最终对象的结构如何。

在使用JaxB加载策略时,我不确定如何执行此操作。我知道我可能需要使用XmlAdpter。但是,即使使用适配器,我也不知道如何查找父策略。我不知道如何将policyManager注入/传递到任何Jaxb解组对象中,所以即使我编写自己的unmarshaller,我也无法查找父策略。

我现在知道的唯一解决方案是让jaxb向PolicyManager返回一些中间对象,并且PolicyManager从该unmarshalled对象中构建一个实际策略。这是否有“更清洁”的解决方案?

1 个答案:

答案 0 :(得分:0)

javax.xml.bind.Unmarshaller有一个Listener属性,允许您在对象解组之前/之后进行侦听。
每当您在Listener.afterUnmarshal()商店对象的某个地方找到权限,并在找到Policy时将其取回。