private String createMessage(final Locale locale) { final StringBuilder buffer = new StringBuilder(); if (constraints != null && !constraints.isEmpty()) { for (final PropertyConstraint<?> constraint : constraints) { buffer.append("\n > ").append( constraint.getViolationMessage(locale, getValue())); } } return buffer.toString(); }
private static boolean containsMandatoryConstaint( final List<? extends PropertyConstraint<?>> constraints) { for (final PropertyConstraint<?> constraint : constraints) { if (constraint.isMandatoryConstraint()) { return true; } } return false; }
@Override public String getDescription(final Locale locale) { final StringBuilder buffer = new StringBuilder(512); buffer.append("The value of this property is a list of ") .append(elementType.getSimpleName()).append(" elements") .append(" [min=").append(occursToString(minOccurs)).append(", max=") .append(occursToString(maxOccurs)).append("]."); buffer.append(" These have to meet"); if (elementConstraints.isEmpty()) { buffer.append(" no constraints."); } else { buffer.append(" the following constraints:"); for (final PropertyConstraint<?> constraint : elementConstraints) { buffer.append("\n - ").append(constraint.getDescription(locale)); } } return buffer.toString(); }
@SuppressWarnings({ "rawtypes", "unchecked" }) private void defaultValidation(final PropertyDescriptor descriptor, final Object value) { final List<PropertyConstraint<?>> constraints = new ArrayList<PropertyConstraint<?>>(); for (final PropertyConstraint constraint : descriptor.getConstraints()) { try { if (!(adminMode && constraint.isMandatoryConstraint())) { constraint.validate(descriptor, value); } } catch (final PropertyValidationException e) { final List<? extends PropertyConstraint<?>> eConstraints = e.getMessageBean().getConstraints(); constraints.addAll(eConstraints); } } if (!constraints.isEmpty()) { throw PropertyValidationException.invalid(descriptor, constraints, value); } }
@Override public boolean isValid(final List<?> value, final Class<?> group) { if (!isSizeValid(value)) { return false; } if (!isTypeValid(value)) { return false; } for (final PropertyConstraint constraint : elementConstraints) { for (final Object element : value) { final boolean valid = constraint.isValid(element, group); if (!valid) { return false; } } } return true; }
@SuppressWarnings({ "rawtypes", "unchecked" }) private void groupValidation(final PropertyDescriptor descriptor, final Object value, final Class<?>[] groups) { final List<PropertyConstraint<?>> constraints = new ArrayList<PropertyConstraint<?>>(); for (final Class<?> group : groups) { for (final PropertyConstraint constraint : descriptor.getConstraints()) { try { constraint.validate(descriptor, value, group); } catch (final PropertyValidationException e) { final List<? extends PropertyConstraint<?>> eConstraints = e.getMessageBean().getConstraints(); constraints.addAll(eConstraints); } } // After each group check if we have to got to the next ... if (!constraints.isEmpty()) { throw PropertyValidationException.invalid(descriptor, constraints, value); } } }
private void addRestrictions(final PropertyDescriptor descriptor) { final List<? extends PropertyConstraint<?>> constraints = descriptor.getConstraints(); if (!constraints.isEmpty()) { final Element valueContraintsElement = new Element("valueConstraints", ns); for (final PropertyConstraint<?> constraint : constraints) { final Element element = new Element("constraint", ns); final String type = constraint.getClass().getName(); addElement(element, "type", type); final String description = htmlUtils.cleanHtmlAndJavadoc(constraint.getDescription()); addElement(element, "description", description); valueContraintsElement.addContent(element); } rootElement.addContent(valueContraintsElement); } }