If some unrecoverable failure happens during validation, a ValidationException is raised.
[JSR 303 TCK Result] 66 of 257 (25.68%) Pass with 25 Failures and 3 Errors.
Review at http://gwt-code-reviews.appspot.com/1295803
Review by: rchandia@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9615 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
index 6432bb4..c839b5e 100644
--- a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
+++ b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
@@ -230,9 +230,10 @@
@Override
protected void compose(ClassSourceFileComposerFactory composerFactory) {
- addImports(composerFactory, GWT.class, GwtBeanDescriptor.class,
- GwtValidationContext.class, Set.class, HashSet.class,
- ConstraintViolation.class, Annotation.class);
+ addImports(composerFactory, Annotation.class, ConstraintViolation.class,
+ GWT.class, GwtBeanDescriptor.class, GwtValidationContext.class,
+ HashSet.class, IllegalArgumentException.class, Set.class,
+ ValidationException.class);
composerFactory.setSuperclass(AbstractGwtSpecificValidator.class.getCanonicalName()
+ "<" + beanType.getQualifiedSourceName() + ">");
composerFactory.addImplementedInterface(validatorType.getName());
@@ -537,6 +538,36 @@
sw.outdent();
}
+ private void writeCatchUnexpectedException(SourceWriter sw, String message) {
+ // } catch (IllegalArgumentException e) {
+ sw.outdent();
+ sw.println("} catch (IllegalArgumentException e) {");
+ sw.indent();
+
+ // throw e;
+ sw.println("throw e;");
+
+ // } catch (ValidationException e) {
+ sw.outdent();
+ sw.println("} catch (ValidationException e) {");
+ sw.indent();
+
+ // throw e;
+ sw.println("throw e;");
+
+ // } catch (Exception e) {
+ sw.outdent();
+ sw.println("} catch (Exception e) {");
+ sw.indent();
+
+ // throw new ValidationException("my message", e);
+ sw.println("throw new ValidationException(" + message + ", e);");
+
+ // }
+ sw.outdent();
+ sw.println("}");
+ }
+
private void writeConstraintDescriptor(SourceWriter sw,
ConstraintDescriptor<? extends Annotation> constraint,
String constraintDescripotorVar) throws UnableToCompleteException {
@@ -893,6 +924,10 @@
sw.println("Class<?>... groups) {");
sw.outdent();
+ // try {
+ sw.println("try {");
+ sw.indent();
+
writeNewViolations(sw);
if (beanHelper.getBeanDescriptor().isBeanConstrained()) {
@@ -956,6 +991,10 @@
// return violations;
sw.println("return violations;");
+ writeCatchUnexpectedException(
+ sw,
+ "\"Error validating " + beanHelper.getTypeCanonicalName() + "\"");
+
sw.outdent();
sw.println("}");
}
@@ -1173,15 +1212,19 @@
sw.println("public <T> Set<ConstraintViolation<T>> validateProperty(");
// GwtValidationContext<T> context, BeanType object, String propertyName,
- // Class<?>... groups) {
+ // Class<?>... groups) throws ValidationException {
sw.indent();
sw.indent();
sw.println("GwtValidationContext<T> context,");
sw.println(beanHelper.getTypeCanonicalName() + " object,");
sw.println("String propertyName,");
- sw.println("Class<?>... groups) {");
+ sw.println("Class<?>... groups) throws ValidationException {");
sw.outdent();
+ // try {
+ sw.println("try {");
+ sw.indent();
+
writeNewViolations(sw);
for (PropertyDescriptor property : beanHelper.getBeanDescriptor().getConstrainedProperties()) {
@@ -1207,6 +1250,12 @@
// return violations;
sw.println("return violations;");
+ writeCatchUnexpectedException(
+ sw,
+ "\"Error validating \" + propertyName + \" of "
+ + beanHelper.getTypeCanonicalName() + "\"");
+
+ // }
sw.outdent();
sw.println("}");
}
@@ -1257,8 +1306,7 @@
// throw new ValidationException(value.getClass +
// " is not a valid type for " + propertyName);
- sw.print("throw new ");
- sw.print(ValidationException.class.getCanonicalName());
+ sw.print("throw new ValidationException");
sw.println("(value.getClass() +\" is not a valid type for \"+ propertyName);");
// }
@@ -1365,6 +1413,10 @@
sw.println("Class<?>... groups) {");
sw.outdent();
+ // try {
+ sw.println("try {");
+ sw.indent();
+
writeNewViolations(sw);
for (PropertyDescriptor property :
@@ -1393,6 +1445,11 @@
// return violations;
sw.println("return violations;");
+ writeCatchUnexpectedException(
+ sw,
+ "\"Error validating \" + propertyName + \" of "
+ + beanHelper.getTypeCanonicalName() + "\"");
+
sw.outdent();
sw.println("}");
}
diff --git a/user/test/org/hibernate/jsr303/tck/tests/validation/ValidatePropertyGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/validation/ValidatePropertyGwtTest.java
index d24b44b..5c72d4e 100644
--- a/user/test/org/hibernate/jsr303/tck/tests/validation/ValidatePropertyGwtTest.java
+++ b/user/test/org/hibernate/jsr303/tck/tests/validation/ValidatePropertyGwtTest.java
@@ -34,7 +34,6 @@
delegate.testPassingNullAsGroup();
}
- @Failing(issue = 5804)
public void testUnexpectedExceptionsInValidatePropertyGetWrappedInValidationExceptions() {
// Wrap the test to catch the @Test expected exception.
try {