+1<br><br><div class="gmail_quote">On Fri, Jan 18, 2013 at 4:05 PM, Summers Pittman <span dir="ltr">&lt;<a href="mailto:supittma@redhat.com" target="_blank">supittma@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On 01/18/2013 09:54 AM, Matthias Wessendorf wrote:<br>
&gt; On Fri, Jan 18, 2013 at 3:47 PM, Sebastien Blanc &lt;<a href="mailto:scm.blanc@gmail.com">scm.blanc@gmail.com</a>&gt; wrote:<br>
&gt;&gt; +1 to 1) and 2) under the Pipe creation  but also 3) , because if one has a<br>
&gt;&gt; custom impl for a pipe , he probably needs it for each read<br>
&gt;<br>
&gt; Actually.... since NEXT does change the offset (from<br>
&gt; <a href="https://gist.github.com/4537431" target="_blank">https://gist.github.com/4537431</a>):<br>
&gt;<br>
&gt; My current &quot;page&quot; is &quot;<a href="https://localhost/demo/cars?offset=20&amp;limit=10" target="_blank">https://localhost/demo/cars?offset=20&amp;limit=10</a>&quot;<br>
&gt;<br>
&gt; This means I get something like for next/prev:<br>
&gt; &lt;<a href="https://localhost/demo/cars?offset=10&amp;limit=10" target="_blank">https://localhost/demo/cars?offset=10&amp;limit=10</a>&gt;; rel=&quot;previous&quot;,<br>
&gt; &lt;<a href="https://localhost/demo/cars?offset=30&amp;limit=10" target="_blank">https://localhost/demo/cars?offset=30&amp;limit=10</a>&gt;; rel=&quot;next&quot;,<br>
&gt;<br>
&gt;<br>
&gt; So... for iOS... the [next]; (or previous) would INTERNALLY do this:<br>
&gt;<br>
&gt;      [_pipe readWithFilter:^(id&lt;AGFilterConfig&gt; config) {<br>
&gt;          [config setLimit:_limit];<br>
&gt;          [config setOffset:_offset]; // got increased before<br>
&gt;<br>
&gt;      } success:success failure:failure];<br>
&gt;<br>
&gt; So... I think this is already impl detail, but when there ARE no<br>
&gt; meta-information for NEXT/PREV available,<br>
&gt; the user has to maintain that himself.... so passing the (updated)<br>
&gt; parameter provider on the read is nice....<br>
&gt;<br>
&gt; Christos and I tend to do that for iOS. I guess Summers will be on the<br>
&gt; same page (haha) with his Android code<br>
&gt;<br>
&gt; -M<br>
</div>Tthat all sounds good.<br>
<div class="HOEnZb"><div class="h5">&gt;<br>
&gt;&gt; Okay for PipeConfig.updateParameterProvider() but he should also be able to<br>
&gt;&gt; pass anytime through the read() to reconfigure , no ? doesn&#39;t hurt to have<br>
&gt;&gt; many options to reconfigure IMO<br>
&gt;&gt;<br>
&gt;&gt; Just a last remark on the &quot;locations&quot; name : metadataLocation and<br>
&gt;&gt; pagingLocation are not enough clear to me to see what&#39;s coming in and out,<br>
&gt;&gt; as suggested on IRC : metadataLocationResponse and metadataLocationRequest ?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Jan 18, 2013 at 3:38 PM, Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;&gt; Looking at [1]<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; There is ONE detail left...<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The paging &quot;config&quot; contains the following settings:<br>
&gt;&gt;&gt; 1) locations:<br>
&gt;&gt;&gt;   - metadataLocation<br>
&gt;&gt;&gt;   - pagingLocation<br>
&gt;&gt;&gt; 2) param provider:<br>
&gt;&gt;&gt;   - my custom impl (like in <a href="https://gist.github.com/4564403#comment-732025" target="_blank">https://gist.github.com/4564403#comment-732025</a>)<br>
&gt;&gt;&gt; OR<br>
&gt;&gt;&gt;   - default (limit + offset)<br>
&gt;&gt;&gt; 3) web linking:<br>
&gt;&gt;&gt;   - nextIdentifier<br>
&gt;&gt;&gt;   - previousIdentifier<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Now... where to put these options? On the pipe, or on the actual<br>
&gt;&gt;&gt; &quot;paging read&quot; (e.g. readWithFilter....).<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I can see that 1) and 3) are nice on the umbrella Pipe<br>
&gt;&gt;&gt; definiton/creation. I can also see that it&#39;s OK to &quot;install&quot; a &quot;param<br>
&gt;&gt;&gt; provider&quot; on the pipe as well...<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If the &quot;params&quot; changes (for whatever reason), there could be a<br>
&gt;&gt;&gt; &quot;PipeConfig.updateParameterProvider()&quot; hook....<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I also think..... the parameter provider can be defined on the actual<br>
&gt;&gt;&gt; read (get request)....<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; thoughts?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; -M<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; [1]<br>
&gt;&gt;&gt; <a href="https://github.com/aerogear/aerogear.org/blob/client_paging_spec/docs/specs/abstract_aerogear-client-paging.markdown" target="_blank">https://github.com/aerogear/aerogear.org/blob/client_paging_spec/docs/specs/abstract_aerogear-client-paging.markdown</a><br>

&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Fri, Jan 18, 2013 at 2:53 PM, Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt; solved...  updating the spec<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Fri, Jan 18, 2013 at 1:40 PM, Kris Borchers &lt;<a href="mailto:kris@redhat.com">kris@redhat.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt; On Jan 18, 2013, at 2:25 AM, Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; On Fri, Jan 18, 2013 at 6:33 AM, Matthias Wessendorf<br>
&gt;&gt;&gt;&gt;&gt;&gt; &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; My suggestion is to name these two parameters something more generic<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; like locator/count where locator=page/offset and count=limit/perPage. Then<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; in our configs we would provide these options:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; pagingType {String} - determines the paging method to be used in<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; calculating next page, etc. and could be either &quot;offset&quot; or &quot;page&quot;, default<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &quot;offset&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; locatorParam {String} - locator parameter name, default &quot;offset&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; locatorValue {Number} - page index or offset<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; locatorIdentifier {String} - the locator identifier name, default<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &quot;AG-Paging-Offset&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; countParam {String} - count parameter name, default &quot;limit&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; countValue {Number} - items per page<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; countIdentifier {String} - the count identifier name, default<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &quot;AG-Paging-Limit&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Thoughts?<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; OK.... I agree that you raised a valid concern, regarding that the<br>
&gt;&gt;&gt;&gt;&gt;&gt; client needs to indicate whether paging information is sent as<br>
&gt;&gt;&gt;&gt;&gt;&gt; headers, as query parameters, or as body data.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; But I still am not so sure if the above args are all really needed, a<br>
&gt;&gt;&gt;&gt;&gt;&gt; ton of cfg params make it a bit fishy.<br>
&gt;&gt;&gt;&gt;&gt;&gt; How about, using the following as a default &quot;parameter provider&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt; - offset (which sets the offset of the first element that should be<br>
&gt;&gt;&gt;&gt;&gt;&gt; included in the returned collection)<br>
&gt;&gt;&gt;&gt;&gt;&gt; - limit (the number of results that should be listed on a page)<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; OK.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Now if a user wants/needs to provide a different parameter schema<br>
&gt;&gt;&gt;&gt;&gt;&gt; (imagine his/her lame server requires/supports &quot;page&quot;, &quot;perPage&quot; and<br>
&gt;&gt;&gt;&gt;&gt;&gt; &quot;sorting&quot;):<br>
&gt;&gt;&gt;&gt;&gt;&gt; The developer could just create a custom impl (iOS: block, Java:<br>
&gt;&gt;&gt;&gt;&gt;&gt; anonymus class impl of an interface, JS: callback function) and pass<br>
&gt;&gt;&gt;&gt;&gt;&gt; it to the &quot;paging request&quot;.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; that way the dev. could even add a ton of more params (if the lame<br>
&gt;&gt;&gt;&gt;&gt;&gt; backend requires that).<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; since the pipe (or the paging request) knows whether the paging<br>
&gt;&gt;&gt;&gt;&gt;&gt; information is sent as headers, as query parameters, or as body data,<br>
&gt;&gt;&gt;&gt;&gt;&gt; it would just &quot;serialize&quot; the give &quot;param provider&quot; into the actual<br>
&gt;&gt;&gt;&gt;&gt;&gt; location.<br>
&gt;&gt;&gt;&gt;&gt; This is the part I don&#39;t understand so sorry if I&#39;m the only one being<br>
&gt;&gt;&gt;&gt;&gt; dense here. I believe that is basically what we decided to do yesterday,<br>
&gt;&gt;&gt;&gt;&gt; but, without that initial config, how do I make the initial request for the<br>
&gt;&gt;&gt;&gt;&gt; first page? Since the callback that the dev would provide isn&#39;t triggered<br>
&gt;&gt;&gt;&gt;&gt; until a successful read so that it can &quot;build&quot; the next/prev methods based<br>
&gt;&gt;&gt;&gt;&gt; on the response, how do I make that first request?<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Any thoughts?<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; -M<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Any news on this ?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; -Matthias<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Jan 17, 2013, at 12:23 PM, Summers Pittman &lt;<a href="mailto:supittma@redhat.com">supittma@redhat.com</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 01/17/2013 11:37 AM, Matthias Wessendorf wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; based on today&#39;s IRC and mailing list discussions, I have polished<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; client side paging spec:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://github.com/aerogear/aerogear.org/blob/client_paging_spec/docs/specs/abstract_aerogear-client-paging.markdown" target="_blank">https://github.com/aerogear/aerogear.org/blob/client_paging_spec/docs/specs/abstract_aerogear-client-paging.markdown</a><br>

&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Please review the document!<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Cheers!<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Matthias<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +1, let&#39;s see how it works in actual implementation!<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Matthias Wessendorf<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt;&gt; Matthias Wessendorf<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt;&gt;&gt;&gt;&gt;&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt;&gt;&gt;&gt;&gt;&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt;&gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt; Matthias Wessendorf<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt;&gt;&gt;&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt;&gt;&gt;&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Matthias Wessendorf<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt;&gt;&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt;&gt;&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
<br>
_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
</div></div></blockquote></div><br>