我有一个看起来像这样的课程:
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对象中构建一个实际策略。这是否有“更清洁”的解决方案?
答案 0 :(得分:0)
javax.xml.bind.Unmarshaller
有一个Listener
属性,允许您在对象解组之前/之后进行侦听。
每当您在Listener.afterUnmarshal()
商店对象的某个地方找到权限,并在找到Policy
时将其取回。