Hmm. The one on code.google.com seems to be out of date. The version
shipping with the SDK has:

private final transient
QueryResultIteratorImpl<https://cs.corp.google.com/#google3/java/com/google/appengine/api/datastore/QueryResultIteratorImpl.java&ct=xref_jump_to_def&l=27>
resultIterator<https://cs.corp.google.com/#google3/java/com/google/appengine/api/datastore/LazyList.java&ct=xref_usages&gs=java:Lcom/google/appengine/api/datastore/LazyList;.resultIterator)Lcom/google/appengine/api/datastore/QueryResultIteratorImpl;&l=32&gsn=resultIterator>
;

...

  /**   * Custom serialization logic to ensure that we read the entire
result set   * before we serialize.   */  private void writeObject
<https://cs.corp.google.com/#google3/java/com/google/appengine/api/datastore/LazyList.java&ct=xref_usages&gs=java:Lcom/google/appengine/api/datastore/LazyList;.writeObject(Ljava/io/ObjectOutputStream;)V%257CLjava/io/IOException;&l=354&gsn=writeObject>(ObjectOutputStream
<http://www.google.com/url?sa=D&q=http%3A%2F%2Fjava.sun.com%2Fjavase%2F6%2Fdocs%2Fapi%2Fjava%2Fio%2FObjectOutputStream.html>
out 
<https://cs.corp.google.com/#google3/java/com/google/appengine/api/datastore/LazyList.java&ct=xref_usages&gs=java:Lcom/google/appengine/api/datastore/LazyList;.writeObject(Ljava/io/ObjectOutputStream;)V%257CLjava/io/IOException;%23out&l=354&gsn=out>)
throws IOException
<http://www.google.com/url?sa=D&q=http%3A%2F%2Fjava.sun.com%2Fjavase%2F6%2Fdocs%2Fapi%2Fjava%2Fio%2FIOException.html>
{    // Resolve all data before we serialize.    resolveAllData
<https://cs.corp.google.com/#google3/java/com/google/appengine/api/datastore/LazyList.java&ct=xref_jump_to_def&l=52>();
   // Get ahold of the cursor before we serialize.    cursor
<https://cs.corp.google.com/#google3/java/com/google/appengine/api/datastore/LazyList.java&ct=xref_jump_to_def&l=43>
= getCursor 
<https://cs.corp.google.com/#google3/java/com/google/appengine/api/datastore/LazyList.java&ct=xref_jump_to_def&l=340>();
   out 
<https://cs.corp.google.com/#google3/java/com/google/appengine/api/datastore/LazyList.java&ct=xref_jump_to_def&l=354>.defaultWriteObject
<http://www.google.com/url?sa=D&q=http%3A%2F%2Fjava.sun.com%2Fjavase%2F6%2Fdocs%2Fapi%2Fjava%2Fio%2FObjectOutputStream.html%23defaultWriteObject()>();
 }


On Thu, Jun 9, 2011 at 4:12 PM, Jeff Schnitzer <j...@infohazard.org> wrote:

> On Thu, Jun 9, 2011 at 3:30 PM, Alfred Fuller
> <arfuller+appeng...@google.com> wrote:
> >
> > Funny because we actually don't have this feature in python (only
> iterators
> > async prefetch). Ya, I would hope coders would use asIterable() when
> doing a
> > single for loop. The real win for asList() async prefetch is in these
> > situations:
> > List l = q.asList();  // returns immediately
> > .... other work/rpcs...
> > ... use l ...
> > and
> > // Launches and runs both queries in parallel
> > List l1 = q1.asList();  // returns immediately
> > List l2 = d2.asList();  // returns immediately
> > ... use l1 and l2 ...
>
> Ah, that makes total sense.
>
> > The lazy list implementation in the low level is both lazy and
> serializable.
> > You should be able to do something similar in Objectify.
>
> This I don't understand.  Looking at LazyList I see it references
> QueryResultIteratorImpl and has no way of fully populating itself on
> serialization.  These classes might implement Serializable but you
> sure can't serialize them!  At least not if you want a useful set of
> data on the other side.
>
> For example, this works right now:
>
> List<Foo> myRemoteMethod() {
>   return ObjectifyService.begin().query(Foo.class).list();
> }
>
> But unless I'm missing something really obvious, this will not work:
>
> List<Entity> myRemoteMethod() {
>   return DatastoreServiceFactory.getDatastoreService.prepare(new
> Query("Foo")).asList();
> }
>
> Jeff
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appengine@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>

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

Reply via email to