Rule anchestor = getRule(_xmlRules.get(anchestorName));
for (Var var : anchestor.getVars()) {
rule.add(var);
}
for (Resolve resolve : anchestor.getResolves()) {
rule.add(new Resolve(rule, resolve.getRule(), resolve.getCategory(), resolve.getVar(), resolve.getValue()));
}
for (RuleValidator validator : anchestor.getValidators()) {
rule.add(validator);
}
}
}
for (XMLVar xmlVar : xmlRule.getXMLVar()) {
rule.add(new Var(xmlVar.getName(), VarType.valueOf(xmlVar
.getType().toString()), xmlVar.getDefault()));
}
for (XMLResolve xmlResolve : xmlRule.getXMLResolve()) {
Rule varRule = getRule(_xmlRules.get(xmlResolve.getRule()));
if (varRule == null) {
log.error("Unknown rule " + xmlResolve.getRule()
+ " referred in " + rule);
continue;
}
Var var = varRule.getVar(xmlResolve.getVar());
if (var == null) {
log.error("Unknown var " + xmlResolve.getVar()
+ " in rule " + xmlResolve.getRule()
+ " referred in " + rule);
continue;
}
rule.add(new Resolve(rule, varRule, xmlResolve.getCategory(), var, xmlResolve.getValue()));
}
for (XMLRuleValidator xmlRuleValidator : xmlRule.getXMLRuleValidator()) {
rule.add(new RuleValidator(rule, xmlRuleValidator.getValue()));
}
_rules.put(xmlRule.getName(), rule);