]> source.dussan.org Git - vaadin-framework.git/commitdiff
Merge from origin/7.1
authorArtur Signell <artur@vaadin.com>
Mon, 19 Aug 2013 14:33:54 +0000 (17:33 +0300)
committerArtur Signell <artur@vaadin.com>
Mon, 19 Aug 2013 14:33:54 +0000 (17:33 +0300)
11f8811 Make sure bean field validators are only added once (#11045)

Conflicts:
server/tests/src/com/vaadin/tests/server/validation/TestBeanValidation.java

Change-Id: I6533b00f78dfb2d587b52b320d2d709c640b9159

1  2 
server/tests/src/com/vaadin/tests/server/validation/TestBeanValidation.java

index b4409aed269f84055d2ac5312ebb30eee2c95643,e1d08a989b2b36f1189a9c99985b9bdda1e8741a..1d1a3c297ee2e81bd3d505b5cb91424fa70ac777
@@@ -56,30 -59,41 +58,67 @@@ public class TestBeanValidation 
      }
  
      @Test
 +    public void testBeanValidationException_OneValidationError() {
 +        InvalidValueException[] causes = null;
 +        BeanValidator validator = new BeanValidator(BeanToValidate.class,
 +                "lastname");
 +        try {
 +            validator.validate(null);
 +        } catch (InvalidValueException e) {
 +            causes = e.getCauses();
 +        }
 +
 +        Assert.assertEquals(1, causes.length);
 +    }
 +
 +    @Test
 +    public void testBeanValidationsException_TwoValidationErrors() {
 +        InvalidValueException[] causes = null;
 +        BeanValidator validator = new BeanValidator(BeanToValidate.class,
 +                "nickname");
 +        try {
 +            validator.validate("A");
 +        } catch (InvalidValueException e) {
 +            causes = e.getCauses();
 +        }
 +
 +        Assert.assertEquals(2, causes.length);
 +    }
+     public void testBeanValidationNotAddedTwice() {
+         // See ticket #11045
+         BeanFieldGroup<BeanToValidate> fieldGroup = new BeanFieldGroup<BeanToValidate>(
+                 BeanToValidate.class);
+         BeanToValidate beanToValidate = new BeanToValidate();
+         beanToValidate.setFirstname("a");
+         fieldGroup.setItemDataSource(beanToValidate);
+         Field<?> nameField = fieldGroup.buildAndBind("firstname");
+         Assert.assertEquals(1, nameField.getValidators().size());
+         try {
+             nameField.validate();
+         } catch (InvalidValueException e) {
+             // NOTE: causes are empty if only one validation fails
+             Assert.assertEquals(0, e.getCauses().length);
+         }
+         // Create new, identical bean to cause duplicate validator unless #11045
+         // is fixed
+         beanToValidate = new BeanToValidate();
+         beanToValidate.setFirstname("a");
+         fieldGroup.setItemDataSource(beanToValidate);
+         Assert.assertEquals(1, nameField.getValidators().size());
+         try {
+             nameField.validate();
+         } catch (InvalidValueException e) {
+             // NOTE: if more than one validation fails, we get the number of
+             // failed validations
+             Assert.assertEquals(0, e.getCauses().length);
+         }
+     }
  }