Hi there,
we are developing paginated repeater for Cocoon. The cocoon repeaters
uses JXPath in their binding so that they can work on beans and XML
documents.

The goal for us is to display a very long list of elements from a
collection not fetching the entire content of the collection. This is
expecially useful when the collection is backed by a persistence layer
like hibernate or similar, and you have a very big rowset (we are
testing on an application with a list with 11000 elements in it).

Now, one key element for every pagination system is to retrieve the
total amount of items in the list. We tried to accomplish this with a
count(pathToList). Actually we have a bean having a getList method
returning a java.util.List instance, so we try count(list/*) ,
count(list), count(list/something), and we would expect JXPath to call
getList().size(). This is quite critical, because the list
implementation knows how to retrieve the number of rows without actually
fetching all the rows from the underlying dataset.

Unfortunately, what hapens is different. The
CoreFunction.functionCount() method does not recognize it as a
Collection, but as a EvalContext instead, and iterates on all the lines
to count the items (actually is the EvalContext.hasNext() method that
iterates on the entire collection).

What's strange is that there is a check in CoreFunction.functionCount()
to see if a Collection is in place and eventually call the
Collection.size() method, but this seems like it's never happening.

Could you please help us? Is it a JXPath bug or are we completely
missing something?

TIA, regards,
Simone Gianni,
Matthias Epheser

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to