Search code examples
validationgwthibernate-validator

GWT validation error during gwt compile - No source code available


I am trying to get gwt validation working using the hibernate validator. I have followed the steps from http://code.google.com/p/google-web-toolkit/wiki/BeanValidation and configured my project according to the sample validation project at http://code.google.com/p/google-web-toolkit/source/browse/trunk/samples/validation/

My .gwt.xml file contains:

<inherits name="org.hibernate.validator.HibernateValidator" />

and my custom validation factory:

<replace-with class="my.package.here.client.validation.ValidatorFactory">
<when-type-is class="javax.validation.ValidatorFactory" />
</replace-with>     

Validation works perfect both on client and server side in dev mode, but when trying to gwt compile I get:

gwtc-production:
     [java] Compiling module my.package.MyModule
     [java]    Validating newly compiled units
     [java]       [ERROR] Errors in 'jar:file:/hibernate-validator-4.2.0.Final-sources.jar!/org/hibernate/validator/constraints/impl/FutureValidatorForReadableInstant.java'
     [java]          [ERROR] Line 32: No source code is available for type org.joda.time.ReadableInstant; did you forget to inherit a required module?
     [java]       [ERROR] Errors in 'jar:file:/hibernate-validator-4.2.0.Final-sources.jar!/org/hibernate/validator/constraints/impl/FutureValidatorForReadablePartial.java'
     [java]          [ERROR] Line 32: No source code is available for type org.joda.time.ReadablePartial; did you forget to inherit a required module?
     [java]       [ERROR] Errors in 'jar:file:/hibernate-validator-4.2.0.Final-sources.jar!/org/hibernate/validator/constraints/impl/PastValidatorForReadableInstant.java'
     [java]       [ERROR] Errors in 'jar:file:/hibernate-validator-4.2.0.Final-sources.jar!/org/hibernate/validator/constraints/impl/SafeHtmlValidator.java'
     [java]          [ERROR] Line 22: The import org.jsoup cannot be resolved
     [java]          [ERROR] Line 23: The import org.jsoup cannot be resolved
     [java]          [ERROR] Line 35: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 40: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 40: Whitelist cannot be resolved
     [java]          [ERROR] Line 43: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 43: Whitelist cannot be resolved
     [java]          [ERROR] Line 46: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 46: Whitelist cannot be resolved
     [java]          [ERROR] Line 49: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 49: Whitelist cannot be resolved
     [java]          [ERROR] Line 52: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 52: Whitelist cannot be resolved
     [java]          [ERROR] Line 55: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 62: Jsoup cannot be resolved
     [java]          [ERROR] Line 62: Whitelist cannot be resolved to a type
     [java]       [ERROR] Errors in 'jar:file:gwt-user.jar!/org/hibernate/validator/super/org/hibernate/validator/engine/PathImpl.java'
     [java]          [ERROR] Line 72: The constructor NodeImpl(String) is undefined
     [java]          [ERROR] Line 84: The constructor NodeImpl(Path.Node) is undefined
     [java]          [ERROR] Line 95: The constructor NodeImpl(Path.Node) is undefined
     [java]          [ERROR] Line 202: The constructor NodeImpl(String) is undefined
     [java]          [ERROR] Line 204: The method setInIterable(boolean) is undefined for the type NodeImpl
     [java]          [ERROR] Line 209: The method setIndex(Integer) is undefined for the type NodeImpl
     [java]          [ERROR] Line 212: The method setKey(String) is undefined for the type NodeImpl
     [java]    [ERROR] Aborting compile due to errors in some input files

There is obviously some source jar I'm missing. I have (among others) on my classpath:

hibernate-validator-4.2.0.Final.jar
hibernate-validator-4.2.0.Final-sources.jar

I have also tried adding joda-time-2.1.jar, joda-time-2.1-sources.jar, jsoup-1.6.3.jar and jsoup-1.6.3-sources.jar.

Shouldn't inheriting the org.hibernate.validator.HibernateValidator take care of the super sources so I don't need to provide the sources? Can anyone see what I'm missing?


Solution

  • GWT is built against Hibernate Validator 4.1.0-Final and relies on some of its internals (PathImpl, NodeImpl), and apparently those have changed in Hibernate Validator 4.2.0.

    Use 4.1.0-Final (or possibly 4.0.2.GA as in the sample) instead of 4.2.0.


    Issue can be tracked in the GWT Tracker, we should probably at least document the incompatibility explicitly.