]> source.dussan.org Git - vaadin-framework.git/commitdiff
#8093 Ensure that property id is a non-null String. Cache if Bean
authorArtur Signell <artur@vaadin.com>
Mon, 19 Dec 2011 15:00:47 +0000 (17:00 +0200)
committerArtur Signell <artur@vaadin.com>
Mon, 19 Dec 2011 15:01:44 +0000 (17:01 +0200)
Validation
implementation is available or not to avoid multiple lookups.

src/com/vaadin/data/validator/BeanValidationValidator.java

index e144018698ca5510f53d4139aa4d64b59d88ccc9..37ad67886cd4a3a38b829a488c0334f8ad56c8ad 100644 (file)
@@ -45,6 +45,7 @@ public class BeanValidationValidator implements Validator {
 \r
     private static final long serialVersionUID = 1L;\r
     private static ValidatorFactory factory;\r
+    private static Boolean implementationAvailable = null;\r
 \r
     private transient javax.validation.Validator javaxBeanValidator;\r
     private String propertyName;\r
@@ -108,6 +109,10 @@ public class BeanValidationValidator implements Validator {
      */\r
     public static BeanValidationValidator addValidator(Field field,\r
             Object objectPropertyId, Class<?> beanClass) {\r
+        if (objectPropertyId == null || !(objectPropertyId instanceof String)) {\r
+            throw new IllegalArgumentException("Property id must be a non-null String");\r
+        }\r
+\r
         String propertyId = (String) objectPropertyId;\r
         BeanValidationValidator validator = new BeanValidationValidator(\r
                 beanClass, propertyId);\r
@@ -174,10 +179,11 @@ public class BeanValidationValidator implements Validator {
             List<String> exceptions = new ArrayList<String>();\r
             for (Object v : violations) {\r
                 final ConstraintViolation<?> violation = (ConstraintViolation<?>) v;\r
-                String msg = getJavaxBeanValidatorFactory().getMessageInterpolator().interpolate(\r
-                        violation.getMessageTemplate(),\r
-                        new SimpleContext(value, violation\r
-                                .getConstraintDescriptor()), locale);\r
+                String msg = getJavaxBeanValidatorFactory()\r
+                        .getMessageInterpolator().interpolate(\r
+                                violation.getMessageTemplate(),\r
+                                new SimpleContext(value, violation\r
+                                        .getConstraintDescriptor()), locale);\r
                 exceptions.add(msg);\r
             }\r
             StringBuilder b = new StringBuilder();\r
@@ -226,8 +232,9 @@ public class BeanValidationValidator implements Validator {
                     throw new InvalidValueException(\r
                             "Annotation must have message attribute");\r
                 }\r
-                String msg = getJavaxBeanValidatorFactory().getMessageInterpolator().interpolate(\r
-                        messageTemplate, new SimpleContext(value, d), locale);\r
+                String msg = getJavaxBeanValidatorFactory()\r
+                        .getMessageInterpolator().interpolate(messageTemplate,\r
+                                new SimpleContext(value, d), locale);\r
                 exceptions.add(msg);\r
             }\r
         }\r
@@ -281,11 +288,14 @@ public class BeanValidationValidator implements Validator {
     }\r
 \r
     public static boolean isImplementationAvailable() {\r
-        try {\r
-            getJavaxBeanValidatorFactory();\r
-            return true;\r
-        } catch (Exception e) {\r
-            return false;\r
+        if (implementationAvailable == null) {\r
+            try {\r
+                getJavaxBeanValidatorFactory();\r
+                implementationAvailable = true;\r
+            } catch (Exception e) {\r
+                implementationAvailable = false;\r
+            }\r
         }\r
+        return implementationAvailable;\r
     }\r
 }
\ No newline at end of file