in src/main/java/org/apache/commons/validator/Form.java [215:246]
protected void process(final Map<String, String> globalConstants, final Map<String, String> constants, final Map<String, Form> forms) {
if (isProcessed()) {
return;
}
int n = 0; //we want the fields from its parent first
if (isExtending()) {
final Form parent = forms.get(inherit);
if (parent != null) {
if (!parent.isProcessed()) {
// we want to go all the way up the tree
parent.process(constants, globalConstants, forms);
}
for (final Field f : parent.getFields()) {
// we want to be able to override any fields we like
if (getFieldMap().get(f.getKey()) == null) {
lFields.add(n, f);
getFieldMap().put(f.getKey(), f);
n++;
}
}
}
}
hFields.setFast(true);
// no need to reprocess parent's fields, we iterate from 'n'
for (final Iterator<Field> i = lFields.listIterator(n); i.hasNext(); ) {
final Field f = i.next();
f.process(globalConstants, constants);
}
processed = true;
}