*/\r
package com.vaadin.data.fieldbinder;\r
\r
+import java.lang.reflect.Method;\r
+\r
import com.vaadin.data.Item;\r
import com.vaadin.data.util.BeanItem;\r
import com.vaadin.data.validator.BeanValidationValidator;\r
\r
private Class<T> beanType;\r
\r
+ private static Boolean beanValidationImplementationAvailable = null;\r
+\r
public BeanFieldGroup(Class<T> beanType) {\r
this.beanType = beanType;\r
}\r
protected void configureField(Field<?> field) {\r
super.configureField(field);\r
// Add Bean validators if there are annotations\r
- if (BeanValidationValidator.isImplementationAvailable()) {\r
+ if (isBeanValidationImplementationAvailable()) {\r
BeanValidationValidator validator = new BeanValidationValidator(\r
beanType, getPropertyId(field).toString());\r
field.addValidator(validator);\r
}\r
}\r
\r
+ /**\r
+ * Checks whether a bean validation implementation (e.g. Hibernate Validator\r
+ * or Apache Bean Validation) is available.\r
+ * \r
+ * TODO move this method to some more generic location\r
+ * \r
+ * @return true if a JSR-303 bean validation implementation is available\r
+ */\r
+ protected static boolean isBeanValidationImplementationAvailable() {\r
+ if (beanValidationImplementationAvailable != null) {\r
+ return beanValidationImplementationAvailable;\r
+ }\r
+ try {\r
+ Class<?> validationClass = Class\r
+ .forName("javax.validation.Validation");\r
+ Method buildFactoryMethod = validationClass\r
+ .getMethod("buildDefaultValidatorFactory");\r
+ Object factory = buildFactoryMethod.invoke(null);\r
+ beanValidationImplementationAvailable = (factory != null);\r
+ } catch (Exception e) {\r
+ // no bean validation implementation available\r
+ beanValidationImplementationAvailable = false;\r
+ }\r
+ return beanValidationImplementationAvailable;\r
+ }\r
}
\ No newline at end of file
\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
return javaxBeanValidator;\r
}\r
\r
- /**\r
- * Checks whether a bean validation implementation (e.g. Hibernate Validator\r
- * or Apache Bean Validation) is available.\r
- * \r
- * @return true if a JSR-303 bean validation implementation is available\r
- */\r
- public static boolean isImplementationAvailable() {\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
-\r
}
\ No newline at end of file