// customer
final RequiredFieldValidator customerRequiredValidator = new RequiredFieldValidator();
customerRequiredValidator.setFieldName("customer");
customerRequiredValidator.setDefaultMessage("Customer is required");
customerRequiredValidator.setValueStack(stack);
final VisitorFieldValidator customerVisitorValidator = new VisitorFieldValidator();
customerVisitorValidator.setAppendPrefix(true);
customerVisitorValidator.setFieldName("customer");
customerVisitorValidator.setValueStack(stack);
/* Customer.class */
// customer -> name
final RequiredStringValidator customerNameRequiredStringValidator = new RequiredStringValidator();
customerNameRequiredStringValidator.setFieldName("name");
customerNameRequiredStringValidator.setDefaultMessage("Name is required");
customerNameRequiredStringValidator.setValueStack(stack);
// customer -> age
final RequiredFieldValidator customerAgeRequiredValidator = new RequiredFieldValidator();
customerAgeRequiredValidator.setFieldName("age");
customerAgeRequiredValidator.setDefaultMessage("Age is required");
customerAgeRequiredValidator.setValueStack(stack);
// customer -> Address
final RequiredFieldValidator customerAddressRequiredFieldValidator = new RequiredFieldValidator();
customerAddressRequiredFieldValidator.setFieldName("address");
customerAddressRequiredFieldValidator.setDefaultMessage("Address is required");
customerAddressRequiredFieldValidator.setValueStack(stack);
final VisitorFieldValidator customerAddressVisitorFieldValidator = new VisitorFieldValidator();
customerAddressVisitorFieldValidator.setFieldName("address");
customerAddressVisitorFieldValidator.setAppendPrefix(true);
//customerAddressVisitorFieldValidator.setDefaultMessage("");
customerAddressVisitorFieldValidator.setValueStack(stack);
/* Address.class */
// customer -> Address -> street
final RequiredStringValidator customerAddressStreetRequiredFieldValidator = new RequiredStringValidator();
customerAddressStreetRequiredFieldValidator.setFieldName("street");
customerAddressStreetRequiredFieldValidator.setDefaultMessage("Street is required");
customerAddressStreetRequiredFieldValidator.setShortCircuit(true);
customerAddressStreetRequiredFieldValidator.setValueStack(stack);
final RequiredStringValidator customerAddressStreetRequiredFieldValidator2 = new RequiredStringValidator();
customerAddressStreetRequiredFieldValidator2.setFieldName("street");
customerAddressStreetRequiredFieldValidator2.setDefaultMessage("Street is required 2");
customerAddressStreetRequiredFieldValidator2.setShortCircuit(true);
customerAddressStreetRequiredFieldValidator2.setValueStack(stack);
// customer -> Address -> pobox
final RequiredStringValidator customerAddressPoboxRequiredFieldValidator = new RequiredStringValidator();
customerAddressPoboxRequiredFieldValidator.setFieldName("pobox");
customerAddressPoboxRequiredFieldValidator.setDefaultMessage("PO Box is required");
customerAddressPoboxRequiredFieldValidator.setShortCircuit(false);
customerAddressPoboxRequiredFieldValidator.setValueStack(stack);
final RequiredStringValidator customerAddressPoboxRequiredFieldValidator2 = new RequiredStringValidator();
customerAddressPoboxRequiredFieldValidator2.setFieldName("pobox");
customerAddressPoboxRequiredFieldValidator2.setDefaultMessage("PO Box is required 2");
customerAddressPoboxRequiredFieldValidator2.setShortCircuit(false);
customerAddressPoboxRequiredFieldValidator2.setValueStack(stack);
final List<Validator> validatorsForMockAction = new ArrayList<Validator>() {
{
add(referenceNumberRequiredStringValidator);
add(orderRequiredValidator);
add(customerRequiredValidator);
add(customerVisitorValidator);
}
};
final List<Validator> validatorsForCustomer = new ArrayList<Validator>() {
{
add(customerNameRequiredStringValidator);
add(customerAgeRequiredValidator);
add(customerAddressRequiredFieldValidator);
add(customerAddressVisitorFieldValidator);
}
};
final List<Validator> validatorsForAddress = new ArrayList<Validator>() {
{
add(customerAddressStreetRequiredFieldValidator);
add(customerAddressStreetRequiredFieldValidator2);
add(customerAddressPoboxRequiredFieldValidator);
add(customerAddressPoboxRequiredFieldValidator2);
}
};
DefaultActionValidatorManager validatorManager = new DefaultActionValidatorManager() {
@Override
public List<Validator> getValidators(Class clazz, String context, String method) {
if (clazz.isAssignableFrom(MockAction.class)) {
return validatorsForMockAction;
}
else if (clazz.isAssignableFrom(Customer.class)) {
return validatorsForCustomer;
}
else if (clazz.isAssignableFrom(Address.class)) {
return validatorsForAddress;
}
return Collections.emptyList();
}
};
customerVisitorValidator.setActionValidatorManager(validatorManager);
customerAddressVisitorFieldValidator.setActionValidatorManager(validatorManager);
MockAction action = new MockAction();
stack.push(action);
validatorManager.validate(action, "ctx");