in src/main/java/org/apache/commons/validator/Field.java [243:279]
private void determineArgPosition(final Arg arg) {
final int position = arg.getPosition();
// position has been explicitly set
if (position >= 0) {
return;
}
// first arg to be added
if (args == null || args.length == 0) {
arg.setPosition(0);
return;
}
// determine the position of the last argument with
// the same name or the last default argument
final String keyName = arg.getName() == null ? DEFAULT_ARG : arg.getName();
int lastPosition = -1;
int lastDefault = -1;
for (int i = 0; i < args.length; i++) {
if (args[i] != null && args[i].containsKey(keyName)) {
lastPosition = i;
}
if (args[i] != null && args[i].containsKey(DEFAULT_ARG)) {
lastDefault = i;
}
}
if (lastPosition < 0) {
lastPosition = lastDefault;
}
// allocate the next position
arg.setPosition(++lastPosition);
}