super(name, optional, ignorable, atts);
this.nested = p;
}
public PolicyComponent normalize() {
Policy normalisedNested
= (Policy)nested.normalize(true);
Policy p = new Policy(nested.getPolicyRegistry(), nested.getNamespace());
ExactlyOne ea = new ExactlyOne();
p.addPolicyComponent(ea);
if (isOptional()) {
ea.addPolicyComponent(new All());
}
// for all alternatives in normalized nested policy
Iterator<List<Assertion>> alternatives = normalisedNested.getAlternatives();
while (alternatives.hasNext()) {
All all = new All();
List<Assertion> alternative = alternatives.next();
Policy n = new Policy(nested.getPolicyRegistry(), nested.getNamespace());
Assertion a = clone(false, n);
ExactlyOne nea = new ExactlyOne();
n.addPolicyComponent(nea);
All na = new All();
nea.addPolicyComponent(na);
na.addPolicyComponents(alternative);
all.addPolicyComponent(a);
ea.addPolicyComponent(all);