If I want to inject an instance of a specific class based on an annotation, 
I can do this in a Gin module:

bind(DiSecondary.class).annotatedWith(Special.class).to(DiSecondarySpecialImpl.class);

I also already have:

bind(DiSecondary.class).to(DiSecondaryImpl.class);

I can then retrieve the special instance into my DiMain (Composite wrapping 
a Panel) constructor with:

@Inject
public DiMain(@Special DiSecondary special) {
  add(special);
}

But, if I want to code-split DiSecondarySpecialImpl using AsyncProvider, 
the analogous approach does not work:

@Inject
public DiMainAsync(@Special final AsyncProvider<DiSecondary> 
diSecondaryProvider) {
  diSecondaryProvider.get(new AsyncCallback<DiSecondary>() {
    public void onFailure(Throwable caught) {}
    public void onSuccess(DiSecondary result) {    
      add(result);
    }
  });
}

I get a GWT compiler error.  If I remove the annotation, then, of course, I 
get the non-special implementation.

Am I being unreasonable to expect that the compiler could apply the 
annotation to the async provider for the base class instead of the base 
class itself?

Is there a different route that I can use to get the desired behavior 
(annotation-based selection of an alternate async loaded class)?


-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/B_PDh8TMfVwJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to