]> source.dussan.org Git - vaadin-framework.git/commitdiff
#8110 Allow Integers and Doubles to pass through
authorArtur Signell <artur@vaadin.com>
Wed, 21 Dec 2011 08:48:27 +0000 (10:48 +0200)
committerArtur Signell <artur@vaadin.com>
Wed, 21 Dec 2011 09:30:51 +0000 (11:30 +0200)
IntegerValidator/DoubleValidator for easier merge from Vaadin 6

src/com/vaadin/data/validator/DoubleValidator.java
src/com/vaadin/data/validator/IntegerValidator.java
tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java [new file with mode: 0644]

index f603f574803803e8aacc062871d5a08212ac09c6..18f1909add6ce06dcff10f4fe7eca6a140283df2 100644 (file)
@@ -43,4 +43,16 @@ public class DoubleValidator extends AbstractStringValidator {
         }
     }
 
+    @Override
+    public void validate(Object value) throws InvalidValueException {
+        if (value != null && value instanceof Double) {
+            // Allow Doubles to pass through the validator for easier
+            // migration. Otherwise a TextField connected to an double property
+            // with a DoubleValidator will fail.
+            return;
+        }
+
+        super.validate(value);
+    }
+
 }
index bf464975940c540839b938d0851bf2ef10c04143..88ae9f3f0bfd2fb13bee427513c982968ed4d2ce 100644 (file)
@@ -44,4 +44,15 @@ public class IntegerValidator extends AbstractStringValidator {
         }
     }
 
+    @Override
+    public void validate(Object value) throws InvalidValueException {
+        if (value != null && value instanceof Integer) {
+            // Allow Integers to pass through the validator for easier
+            // migration. Otherwise a TextField connected to an integer property
+            // with an IntegerValidator will fail.
+            return;
+        }
+
+        super.validate(value);
+    }
 }
diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java b/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java
new file mode 100644 (file)
index 0000000..d9a731a
--- /dev/null
@@ -0,0 +1,64 @@
+package com.vaadin.tests.components.abstractfield;\r
+\r
+import com.vaadin.data.Property.ValueChangeEvent;\r
+import com.vaadin.data.Property.ValueChangeListener;\r
+import com.vaadin.data.util.ObjectProperty;\r
+import com.vaadin.data.validator.DoubleValidator;\r
+import com.vaadin.data.validator.IntegerValidator;\r
+import com.vaadin.tests.components.TestBase;\r
+import com.vaadin.tests.util.Log;\r
+import com.vaadin.ui.TextField;\r
+\r
+public class IntegerDoubleFieldsWithDataSource extends TestBase {\r
+\r
+    private Log log = new Log(5);\r
+\r
+    @Override\r
+    protected void setup() {\r
+        addComponent(log);\r
+\r
+        TextField tf = createIntegerTextField();\r
+        tf.addValidator(new IntegerValidator("Must be an Integer"));\r
+        addComponent(tf);\r
+\r
+        tf = createIntegerTextField();\r
+        tf.setCaption("Enter a double");\r
+        tf.setPropertyDataSource(new ObjectProperty<Double>(2.1));\r
+        tf.addValidator(new DoubleValidator("Must be a Double"));\r
+        addComponent(tf);\r
+    }\r
+\r
+    private TextField createIntegerTextField() {\r
+        final TextField tf = new TextField("Enter an integer");\r
+        tf.setPropertyDataSource(new ObjectProperty<Integer>(new Integer(2)));\r
+        tf.setImmediate(true);\r
+        tf.addListener(new ValueChangeListener() {\r
+\r
+            public void valueChange(ValueChangeEvent event) {\r
+                try {\r
+                    log.log("Value for " + tf.getCaption() + " changed to "\r
+                            + tf.getValue());\r
+                    log.log("Converted value is " + tf.getConvertedFieldValue());\r
+                } catch (Exception e) {\r
+                    // TODO: handle exception\r
+                    e.printStackTrace();\r
+                }\r
+            }\r
+        });\r
+\r
+        return tf;\r
+    }\r
+\r
+    @Override\r
+    protected String getDescription() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+    @Override\r
+    protected Integer getTicketNumber() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+}\r