>
> thx
>
> On Tue, Jan 15, 2013 at 2:01 PM,
Sebastien Blanc <
scm.blanc@gmail.com>
wrote:
>> In the same spirit (inspired from
>>
http://stackoverflow.com/questions/5412059/how-to-implement-general-pagination)
>> :
>>
>>
>> public interface PagedResult<T>
{
>>
>> PagedResult<T> next();
>>
>> PagedResult<T> prev();
>>
>> PagedResult<T>
withOffset(int offset);
>>
>> PagedResult<T>
withLimit(int limit);
>>
>> List<T> result();
>>
>> }
>>
>>
>> On Tue, Jan 15, 2013 at 1:38 PM,
Douglas Campos <
qmx@qmx.me>
wrote:
>>>
>>> I'm not a fan of those
PageContext objects (remembers me of some
wild-ass
>>> ThreadLocals leaking all over)
>>>
>>> My proposal for the paging aware
APIs would be something like this:
>>>
>>> public interface
PagedResult<T> {
>>>
>>> List<T> next();
>>>
>>> List<T> prev();
>>>
>>> List<T> page(int
offset, int limit);
>>>
>>> }
>>>
>>> and the Async counterpart
>>>
>>> public interface
AsyncPagedResult<T> {
>>>
>>> void
next(Callback<List<T>> callback);
>>>
>>> void
prev(Callback<List<T>> callback);
>>>
>>> void page(int offset, int
limit, Callback<List<T>>
callback);
>>>
>>> public static interface
Callback<U> {
>>> public void onResult(U
result);
>>> }
>>> }
>>>
>>> I don't like the idea of having a
companion object for holding the
>>> pagination state.
>>>
>>> Thoughts?
>>>
>>> -- qmx
>>>
>>> On 15/01/2013, at 08:37, Matthias
Wessendorf <
matzew@apache.org>
wrote:
>>>
>>> > Hi Summers,
>>> >
>>> >
>>> >
https://gist.github.com/4532661
>>> >
>>> > That is a way to do paging
which keeps Pipes immutable, uses
>>> > readWithFilter, and doesn't
impose any (for convenient definitions of any)
>>> > bookkeeping on the
developer.
>>> >
>>> >
>>> > from your Andorid gist:
>>> >
>>> > A) Once the response has
been received, the Pipe implementation will
>>> > return a List of objects. If
this List instance is passed to
>>> > Pipe.getPageContext the
appropriate PageContext will be returned
>>> >
>>> > Note: There is no 'return' -
the readWithFilter is void, instead a
>>> > Callback is invoked
(onSuccess(list)), see Pipe.java
>>> >
>>> > B) The developer will
receive from readWithFilter() a List of
object. If
>>> > she passes this list into
Pipe.getPageContext(List result) she will
receive
>>> > the PageContext associated
with this result.
>>> >
>>> > Do you mean like:
>>> >
>>> > ...
>>> >
myPipe.readWithFilter(filter, new
Callback<List<Data>>() {
>>> >
>>> >
>>> > @Override
>>> >
>>> >
>>> > public void
onSuccess(List<Data> data) {
>>> >
>>> >
>>> >
>>> > // get the PageContext:
>>> >
>>> >
>>> > PageContext ctx =
myPipe.getPageContext(data);
>>> >
>>> >
>>> > ...
>>> >
>>> >
>>> > }
>>> >
>>> >
>>> >
>>> > @Override
>>> >
>>> >
>>> > public void
onFailure(Exception e) {
>>> >
>>> >
>>> > }
>>> > });
>>> > Not sure about that.....
>>> >
>>> > But for iOS I am thinking
about passing in the PageContext into the
>>> > closure/block of the
readWithFilter, like:
>>> >
>>> > -(void) readWithFilter:(void
(^)(id<AGFilterConfig> config)) config
>>> >
>>> >
>>> > success:(void (^)(id
listOfObjects, id pageContext))success
>>> >
>>> >
>>> > failure:(void (^)(NSError
*error))failure;
>>> > A usage would look like:
>>> >
>>> > [pipe
readWithFilter:^(id<AGFilterConfig>
config) {
>>> >
>>> >
>>> > // set the filter args and
override the given defaults
>>> >
>>> >
>>> > } success:^(id
listOfObjects, id pageContext) {
>>> >
>>> >
>>> > // work with the
listOfObjects reponse.
>>> >
>>> >
>>> > // for paging/query info,
access the given pagecontext,
>>> >
>>> >
>>> > // of the CURRENT request
>>> >
>>> >
>>> > ...
>>> >
>>> >
>>> > } failure:^(NSError *error)
{
>>> >
>>> >
>>> > // handle errorz
>>> >
>>> >
>>> > }];
>>> > Any thoughts ?
>>> >
>>> > Not sure I like (or
understand) the Pipe.getPageContext(List
result)
>>> > call. Current mindset is
that thePageContext just (and only) belongs to
the
>>> > previous (executed)
request... Not sure I want to support
something like
>>> >
>>> > // first call:
>>> > List<SomeType> first;
>>> > myPipe.readWithFilter(.....)
// set first inside of callback
>>> > ...
>>> > // second call:
>>> > List<SomeType> second;
>>> > myPipe.readWithFilter(.....)
// set second inside of callback
>>> > ...
>>> > // third call:
>>> > List<SomeType> third;
>>> > myPipe.readWithFilter(.....)
// set third inside of callback
>>> > ...
>>> >
>>> >
>>> >
>>> >
>>> > /// A BIT LATER ....:
>>> >
myPipe.getPageContext(first);
>>> >
>>> >
>>> > I am not sure if that
(myPipe.getPageContext(first);) is really
desired
>>> > (or would even easily work,
as it would need to store the "metadata").....
>>> >
>>> >
>>> > Perhaps I am just wrong.
>>> >
>>> >
>>> > --
>>> > Matthias Wessendorf
>>> >
>>> > blog:
http://matthiaswessendorf.wordpress.com/
>>> > sessions:
http://www.slideshare.net/mwessendorf
>>> > twitter:
http://twitter.com/mwessendorf
>>> >
_______________________________________________
>>> > aerogear-dev mailing list
>>> >
aerogear-dev@lists.jboss.org
>>> >
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>
>>>
>>>
_______________________________________________
>>> aerogear-dev mailing list
>>>
aerogear-dev@lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>
>>
>>
>>
_______________________________________________
>> aerogear-dev mailing list
>>
aerogear-dev@lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>
>
>
>
> --
> Matthias Wessendorf
>
> blog:
http://matthiaswessendorf.wordpress.com/
> sessions:
http://www.slideshare.net/mwessendorf
> twitter:
http://twitter.com/mwessendorf
--
Matthias Wessendorf
blog:
http://matthiaswessendorf.wordpress.com/
sessions:
http://www.slideshare.net/mwessendorf
twitter:
http://twitter.com/mwessendorf
_______________________________________________
aerogear-dev mailing list
aerogear-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/aerogear-dev