I've been trying to understand Ray's presentation  and want to share
some doubts hoping for clarification:

http://dl.google.com/io/2009/pres/Th_0200_GoogleWebToolkitArchitecture-BestPracticesForArchitectingYourGWTApp.pdf

Considering Page 21

interface Action<T extends Response> { }

interface Response { }

interface ContactsService extends RemoteService {
  <T extends Response> T execute(Action<T> action);
}

interface ContactsServiceAsync {
  <T extends Response> void execute(Action<T> action,
    AsyncCallback<T> callback);
}


Considering the Tossing the Event Page (46)

public void execute(final UpdateContact update,
  final AsyncCallback<GetContactsResponse> cb) {
    realService.execute(update,
     new AsyncCallback<UpdateContactResponse>() {
..
..

Observe that the execute method has specialized parameters. If it's
implementing the ContactsServiceAsync interface it probably has a


 void execute(Action<T> action,  AsyncCallback<T> callback) {
  if (action instanceof UpdateContact)
    execute(UpdateContact(action), (GetContactsResponse)callback);
  else
  if (action instanceof AnotherCommand)
  ..
  ..
}


I've understood the purpose of the code (It's a kind of a manual proxy
to intercept the calls to the realService and make whatever is
necessary ,caching, eventbus interaction). That's not the point. My
doubt is : What is the signature of the class ?

If you see the code of page 58 which is a Mock of the
ContactsServiceAsync

class MockContactsService implements ContactsServiceAsync {
  Action<?> lastAction;
  AsyncCallback<?> lastCallback;

  public <T extends Response> void execute(Action<T> action,
   AsyncCallback<T> callback) {
   lastAction = action;
   lastCallback = callback;
  }
}

You get the impression of there has to be some mechanism to dispatch
to the real execute methods because one can't write


class CachedBatchingService implements ContactsServiceAsync

  public  CachedBatchingService(ContactsServiceAsync realService) {
  }

public void execute(final UpdateContact update,
  final AsyncCallback<GetContactsResponse> cb) {
    realService.execute(update,
     new AsyncCallback<UpdateContactResponse>() {
..

The compiler demands a method with :

  <T extends Response> void execute(Action<T> action,
    AsyncCallback<T> callback);


Please be tolerant with my english and my java.

Thanks in advance

Geraldo


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to Google-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to