我有一个类看起来像这样:
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
时将其取回。