UNPKG

java-bean-validation.js

Version:
164 lines 7.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("./core"); function visitTypeDescriptor(type, value, path, groups, violations, globalViolations, visitor) { if (type.isBasicType) { violations = globalViolations; groups = core_1.DEFAULT_GROUPS; } if (visitor.startTypeVisitor) { var visit = visitor.startTypeVisitor(type, value, path, groups, violations, globalViolations, visitor); if (!visit) { return; } } var hasConstraintOrValidatorVisitor = visitor.startConstraintVisitor || visitor.endConstraintVisitor || visitor.startValidatorVisitor || visitor.endValidatorVisitor; if (hasConstraintOrValidatorVisitor) { var constraints = type.constraints; if (constraints) { for (var i = 0, length_1 = constraints.length; i < length_1; i++) { var constraint = constraints[i]; visitConstraintDescriptor(constraint, value, path, groups, violations, globalViolations, visitor); } } } if (!visitor.ignoreValue && (value === null || value === undefined)) { if (visitor.endTypeVisitor) { visitor.endTypeVisitor(type, value, path, groups, violations, globalViolations, visitor); } return; } if (!type.isBasicType && hasConstraintOrValidatorVisitor) { visitConstraintDescriptor({ constraintName: 'Object' }, value, path, core_1.DEFAULT_GROUPS, violations, globalViolations, visitor); } var properties = type.properties; if (properties) { for (var propertyName in properties) { var property = properties[propertyName]; visitPropertyDescriptor(property, propertyName, value, path, groups, violations, globalViolations, visitor); } } if (!type.isCollection) { if (visitor.endTypeVisitor) { visitor.endTypeVisitor(type, value, path, groups, violations, globalViolations, visitor); } return; } var valueDescriptor = type.valueDescriptor; if (!valueDescriptor) { if (visitor.endTypeVisitor) { visitor.endTypeVisitor(type, value, path, groups, violations, globalViolations, visitor); } return; } if (Array.isArray(value)) { for (var index = 0, length_2 = value.length; index < length_2; index++) { visitPropertyDescriptor(valueDescriptor, index, value, path, groups, violations, globalViolations, visitor); } } else { for (var key in value) { visitPropertyDescriptor(valueDescriptor, key, value, path, groups, violations, globalViolations, visitor); } } if (visitor.endTypeVisitor) { visitor.endTypeVisitor(type, value, path, groups, violations, globalViolations, visitor); } } exports.visitTypeDescriptor = visitTypeDescriptor; function visitPropertyDescriptor(property, propertyName, objectWithProperty, path, groups, violations, globalViolations, visitor) { if (visitor.startPropertyVisitor) { var visit = visitor.startPropertyVisitor(property, propertyName, objectWithProperty, path, groups, violations, globalViolations, visitor); if (!visit) { return; } } var value; if (objectWithProperty) { value = objectWithProperty[propertyName]; } var propertyPath = path + '.' + propertyName; var type = core_1.getTypeDescriptor(property.porpertyTypeName, value, propertyPath, globalViolations); if (!type) { if (visitor.endPropertyVisitor) { visitor.endPropertyVisitor(property, propertyName, objectWithProperty, path, groups, violations, globalViolations, visitor); } return; } if (type.isBasicType || (visitor.recursively && (visitor.recursivelyEvenNotCascade || property.cascade))) { var cascadeGroups = core_1.convertGroups(groups, property.groupConversions); visitTypeDescriptor(type, value, propertyPath, cascadeGroups, violations, globalViolations, visitor); } if (visitor.startConstraintVisitor || visitor.endConstraintVisitor || visitor.startValidatorVisitor || visitor.endValidatorVisitor) { var constraints = property.constraints; if (constraints) { for (var i = 0, length_3 = constraints.length; i < length_3; i++) { var constraint = constraints[i]; visitConstraintDescriptor(constraint, value, propertyPath, groups, violations, globalViolations, visitor); } } } if (visitor.endPropertyVisitor) { visitor.endPropertyVisitor(property, propertyName, objectWithProperty, path, groups, violations, globalViolations, visitor); } } exports.visitPropertyDescriptor = visitPropertyDescriptor; function visitConstraintDescriptor(constraint, value, path, groups, violations, globalViolations, visitor) { if (visitor.startConstraintVisitor) { var visit = visitor.startConstraintVisitor(constraint, value, path, groups, violations, globalViolations, visitor); if (!visit) { return; } } var validator = core_1.VALIDATORS[constraint.constraintName]; if (validator) { if (validator.isGlobalValidator) { violations = globalViolations; } if (!constraint.defaultValuesLoaded) { core_1.loadDefaultConstraintValues(constraint, validator); } } else { if (!constraint.hasNoValidator) { var violatedConstraint = { constraintName: 'ValidatorNotFound', attributes: { constraintName: constraint.constraintName } }; core_1.addViolation(violatedConstraint, value, path, globalViolations); } } var attributes = constraint.attributes || {}; if (!(core_1.groupAllowed(groups, attributes.groups) || visitor.ignoreGroups)) { if (visitor.endConstraintVisitor) { visitor.endConstraintVisitor(constraint, value, path, groups, violations, globalViolations, visitor); } return; } var composingConstraints = constraint.composingConstraints; var reportAsSingle = constraint.reportAsSingle; if (composingConstraints) { var innerViolations = violations; if (reportAsSingle) { innerViolations = []; } for (var i = 0, length_4 = composingConstraints.length; i < length_4; i++) { var composedConstraint = composingConstraints[i]; visitConstraintDescriptor(composedConstraint, value, path, groups, innerViolations, globalViolations, visitor); } } if (visitor.startValidatorVisitor) { var visit = visitor.startValidatorVisitor(constraint.constraintName, validator, value, attributes, path, groups, violations, globalViolations, visitor); if (!visit) { if (visitor.endConstraintVisitor) { visitor.endConstraintVisitor(constraint, value, path, groups, violations, globalViolations, visitor); } return; } } if (visitor.endValidatorVisitor) { visitor.endValidatorVisitor(constraint.constraintName, validator, value, attributes, path, groups, violations, globalViolations, visitor); } if (visitor.endConstraintVisitor) { visitor.endConstraintVisitor(constraint, value, path, groups, violations, globalViolations, visitor); } } exports.visitConstraintDescriptor = visitConstraintDescriptor; //# sourceMappingURL=visit.js.map