Sunday, April 7, 2019

Re: Immutables with RestyGWT and gwt-jackson

But the Immutables support is quite easy - you need to recognize @JsonDeserialize with builder attribute on a class level. All other annotations used by Immutables your project is already supported (look like).

e.g. in the gwt-jackson (com.github.nmorel.gwtjackson.rebind.bean.BeanProcessor)
        // Look for a builder class
        Optional<Annotation> jsonDeserialize = CreatorUtils.getAnnotation( "com.fasterxml.jackson.databind.annotation.JsonDeserialize", accessors );
        if (jsonDeserialize.isPresent()) {
            Optional<JClassType> builderClass = typeOracle.getClassFromJsonDeserializeAnnotation( logger, jsonDeserialize.get(), "builder" );
            if (builderClass.isPresent()) {
                builder.setBuilder( builderClass.get() );



On Wednesday, April 3, 2019 at 9:08:35 PM UTC+2, Ahmad Bawaneh wrote:
Thanks , this is exactly what i need to know, i am adding support for annotations incrementally.

On Wednesday, April 3, 2019 at 10:24:30 AM UTC+3, foal wrote:

A relatively simple project is on Bitbucket: (hg) or mirror on GitHub (git): .

BTW I have looked on gwt-jackosn-apt but didn't try because of lack support for the Jackson annotations comparing with classic gwt-jackosn project (at least for @JsonDeserialize).


On Tuesday, April 2, 2019 at 9:09:00 PM UTC+2, Ahmad Bawaneh wrote:
Do you have a simple sample project, i would like to see if what is needed to make this also works with gwt-jackosn-apt.

On Tuesday, April 2, 2019 at 10:03:28 PM UTC+3, foal wrote:

Spent several hours to make workable Immutables ( objects with RestyGWT and gwt-jackson. Default approach with
@JsonSerialize(as = ImmutableVal.class)
@JsonDeserialize(as = ImmutableVal.class)

 doesn't works (gwt-jackson ignore @JsonDeserialize "as" attribute on class level) but after looking into the source code I realize that "builder" attribute is supported and works. So variant  with
@Value.Style(builder = "new") // builder has to have constructor
@JsonDeserialize(builder = ImmutableVal.Builder.class)


Hope it will save somebody several hours of investigation :)


You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To post to this group, send email to
Visit this group at
For more options, visit

No comments:

Post a Comment