jodd-vtor/src/main/java/jodd/vtor/Vtor.java
public List<Violation> validate(final ValidationContext ctx, final Object target, final String targetName) {
		for (Map.Entry<String, List<Check>> entry : ctx.map.entrySet()) {
			String name = entry.getKey();
			Object value = BeanUtil.declaredSilent.getProperty(target, name);
			String valueName = targetName != null ? (targetName + '.' + name) : name;		// move up
			ValidationConstraintContext vcc = new ValidationConstraintContext(this, target, valueName);
			
			for (Check check : entry.getValue()) {
				String[] checkProfiles = check.getProfiles();
				if (!matchProfiles(checkProfiles)) {
					continue;
				}
				if (check.getSeverity() < severity) {
					continue;
				}
				ValidationConstraint constraint = check.getConstraint();
				if (!constraint.isValid(vcc, value)) {
					addViolation(new Violation(valueName, target, value, check));
				}
			}
		}

		return getViolations();
	}
public List<Violation> validate(final ValidationContext ctx, final Object target, final String targetName) {
		for (Map.Entry<String, List<Check>> entry : ctx.map.entrySet()) {
			String name = entry.getKey();
			Object value = BeanUtil.declaredSilent.getProperty(target, name);
			String valueName = targetName != null ? (targetName + '.' + name) : name;		// move up
			ValidationConstraintContext vcc = new ValidationConstraintContext(this, target, valueName);
			
			for (Check check : entry.getValue()) {
				String[] checkProfiles = check.getProfiles();
				if (!matchProfiles(checkProfiles)) {
					continue;
				}
				if (check.getSeverity() < severity) {
					continue;
				}
				ValidationConstraint constraint = check.getConstraint();
				if (!constraint.isValid(vcc, value)) {
					addViolation(new Violation(valueName, target, value, check));
				}
			}
		}

		return getViolations();
	}
Performs validation of provided validation context and appends violations.