001 package org.trails.validation;
002
003 import org.apache.tapestry.valid.FieldTracking;
004 import org.apache.tapestry.valid.RenderString;
005 import org.hibernate.validator.InvalidStateException;
006 import org.hibernate.validator.InvalidValue;
007 import org.trails.descriptor.IClassDescriptor;
008 import org.trails.descriptor.IPropertyDescriptor;
009
010 public class HibernateValidationDelegate extends TrailsValidationDelegate
011 {
012
013 public void record(IClassDescriptor descriptor, InvalidStateException invalidStateException)
014 {
015 for (InvalidValue invalidValue : invalidStateException.getInvalidValues())
016 {
017
018 IPropertyDescriptor propertyDescriptor = descriptor.getPropertyDescriptor(invalidValue.getPropertyName());
019 FieldTracking fieldTracking = null;
020 String message = null;
021 if (propertyDescriptor != null)
022 {
023 fieldTracking = (FieldTracking) getFieldTracking(propertyDescriptor.getDisplayName());
024 message = propertyDescriptor.getDisplayName() + " " + invalidValue.getMessage();
025 } else
026 {
027 // Making sure that this error is an "unassociated (with any field) error".
028 setFormComponent(null);
029
030 fieldTracking = findCurrentTracking();
031 message = invalidValue.getMessage();
032 }
033
034 fieldTracking.setErrorRenderer(new RenderString(message));
035 }
036 }
037
038 }