I have had a look at the samples for the calendar API, and find it somewhat 
amusing/tragic that each of the samples has its own package where concepts 
like .  OK, they're on the small side.  And yes, there are some minor 
differences between implementations - for example, the CalendarFeed class:

  For the sample targeting Google Apps Engine:
 
  void appendCalendars(List<GwtCalendar> result) {
    for (CalendarEntry entry : calendars) {
      result.add(entry.toCalendar());
    }
  } 
  For the sample targeting an OAuth client:

  @Override 
  public List<CalendarEntry> getEntries() {
    return calendars;
  }   
  For the sample targeting Android:

@Key("entry")
  public List<CalendarEntry> calendars = new ArrayList<CalendarEntry>();
 

These differences are superficial - they're all getting a list of 
CalendarEntry.  The only other concrete method in the CalendarFeed was 
identical across all 3 versions.  So it would seem that each time you use 
the google-api-client-java library to access a particular Google API, you 
are doomed to recode  boilerplate specific to that API as part of your 
project.  I mean, what use is an API to access a spreadsheet that doesn't 
have a notion of a Cell?

It's well (being polite, naturally) an odd approach to code re-use.

Now I've only taken a fairly cursory look, and perhaps there are some good 
architectural reasons why you'd want this flexibility in your client code. 
 But it does feel a little like all the benefits of the thinner API are 
enjoyed by those providing it.

Maybe someone can enlighten me?  Anyone hooked on google-api-client-java?

Reply via email to