在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解组对象中,所以即使我编写自己的解组程序,我也无法查找父策略。

我现在知道的唯一解决方案是让jaxb向PolicyManager返回一些中间对象,然后PolicyManager从这个未组织的对象中构建一个实际的策略。有没有"更清洁"的解决方案?

javax.xml.bind.Unmarshaller有一个Listener属性,允许您在对象解组之前/之后侦听
每次在Listener.afterUnmarshal()存储对象的某个位置找到Permission时,都会在找到Policy时将其取回。

最新更新