<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jan 11, 2013, at 5:01 AM, Daniel Bevenius &lt;<a href="mailto:daniel.bevenius@gmail.com">daniel.bevenius@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Hey Kris,&nbsp;<div><br></div><div>been thinking about your reply regarding the&nbsp;inconsistency&nbsp;of the returned data. I think it looks a little odd to have the 'cars' property returned when requesting a single car.</div>
<div style="">What do you all think of this as a suggestion below?</div></div></blockquote><div><br></div>I'm sorry, I misread that e-mail and thought these were both requests to the /cars endpoint and the data returned was formatted differently based on the data length. What you have makes sense so disregard what I said.</div><div><br><blockquote type="cite"><div dir="ltr"><div style=""><br></div><div style="">As you can see we now return HTTP Headers and also the object returned is either an array of cars, or just a single object if you only request a single car.&nbsp;</div>
<div style=""><br></div><div style=""><span style="font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 16px; ">Getting a page of Cars</span><br></div><div style=""><div class="" style="border: none; padding: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; ">
<pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span class="" style="color:rgb(0,128,128)">URL</span><span class="" style="font-weight:bold">=</span><span class="" style="color:rgb(221,17,68)">"<a href="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo">http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo</a>"</span>
curl -i --header <span class="" style="color:rgb(221,17,68)">"Accept: application/json"</span> <span class="" style="color:rgb(221,17,68)">"$URL/cars?page=0&amp;perPage=4"</span>
</pre></div><p style="margin: 15px 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; ">The request will return:</p><div class="" style="border: none; padding: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; ">
<pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span class="">HTTP</span><span class="" style="font-weight:bold">/</span><span class="" style="color:rgb(0,153,153)">1.1</span> <span class="" style="color:rgb(0,153,153)">200</span> <span class="">OK</span>
<span class="">Link</span><span class="" style="font-weight:bold">-</span><span class="">Previous</span><span class="" style="font-weight:bold">:</span> <span class="">cars</span><span class="" style="font-weight:bold">?</span><span class="">page</span><span class="" style="font-weight:bold">=</span><span class="" style="color:rgb(0,153,153)">0</span><span class="" style="font-weight:bold">&amp;</span><span class="">page</span><span class="" style="font-weight:bold">=</span><span class="" style="color:rgb(0,153,153)">4</span>
</pre></div></div></div></blockquote>IMO, if we are on the first page the Link-Previous header should be empty since there is no previous page. That will make it easier for people building the UI to know if they should show a previous link, etc. Also, you can't have two parameters with the same name, should that actually be page=0&amp;perPage=4?<br><blockquote type="cite"><div dir="ltr"><div style=""><div class="" style="border: none; padding: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; "><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span class="">Link</span><span class="" style="font-weight:bold">-</span><span class="">First</span><span class="" style="font-weight:bold">:</span> <span class="">cars</span><span class="" style="font-weight:bold">?</span><span class="">page</span><span class="" style="font-weight:bold">=</span><span class="" style="color:rgb(0,153,153)">0</span><span class="" style="font-weight:bold">&amp;</span><span class="">page</span><span class="" style="font-weight:bold">=</span><span class="" style="color:rgb(0,153,153)">4</span>
</pre></div></div></div></blockquote>Same thing, page/perPage?<br><blockquote type="cite"><div dir="ltr"><div style=""><div class="" style="border: none; padding: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; "><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span class="">MetaData</span><span class="" style="font-weight:bold">-</span><span class="">PerPage</span><span class="" style="font-weight:bold">:</span> <span class="" style="color:rgb(0,153,153)">4</span>
<span class="">MetaData</span><span class="" style="font-weight:bold">-</span><span class="">Page</span><span class="" style="font-weight:bold">:</span> <span class="" style="color:rgb(0,153,153)">0</span>
<span class="">Link</span><span class="" style="font-weight:bold">-</span><span class="">Next</span><span class="" style="font-weight:bold">:</span> <span class="">cars</span><span class="" style="font-weight:bold">?</span><span class="">page</span><span class="" style="font-weight:bold">=</span><span class="" style="color:rgb(0,153,153)">1</span><span class="" style="font-weight:bold">&amp;</span><span class="">page</span><span class="" style="font-weight:bold">=</span><span class="" style="color:rgb(0,153,153)">4</span>
</pre></div></div></div></blockquote>Same as previous, if we are on the last page, there should not be a value for Link-Next. Also, as above, page/perPage?<br><blockquote type="cite"><div dir="ltr"><div style=""><div class="" style="border: none; padding: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; "><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span class="">Content</span><span class="" style="font-weight:bold">-</span><span class="">Type</span><span class="" style="font-weight:bold">:</span> <span class="">application</span><span class="" style="font-weight:bold">/</span><span class="">json</span><span class="">;</span><span class="">charset</span><span class="" style="font-weight:bold">=</span><span class="">UTF</span><span class="" style="font-weight:bold">-</span><span class="" style="color:rgb(0,153,153)">8</span>
<span class="">Content</span><span class="" style="font-weight:bold">-</span><span class="">Length</span><span class="" style="font-weight:bold">:</span> <span class="" style="color:rgb(0,153,153)">161</span>
<span class="">[</span>
  <span class="">{</span><span class="" style="color:rgb(221,17,68)">"color"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"Black"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"brand"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"BMW"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"id"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(0,153,153)">1</span><span class="">},</span>
  <span class="">{</span><span class="" style="color:rgb(221,17,68)">"color"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"Red"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"brand"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"Ferrari"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"id"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(0,153,153)">2</span><span class="">},</span>
  <span class="">{</span><span class="" style="color:rgb(221,17,68)">"color"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"Blue"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"brand"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"Skoda"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"id"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(0,153,153)">3</span><span class="">},</span>
  <span class="">{</span><span class="" style="color:rgb(221,17,68)">"color"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"Green"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"brand"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"Audi"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"id"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(0,153,153)">4</span><span class="">}</span>
<span class="">]</span>
</pre></div><h4 style="margin: 20px 0px 10px; padding: 0px; font-size: 16px; font-family: Helvetica, arial, freesans, clean, sans-serif; "><a name="getting-the-next-page-of-cars" class="" href="https://gist.github.com/4500336#getting-the-next-page-of-cars" style="color:rgb(65,131,196);text-decoration:initial;display:block;padding-left:30px"></a></h4>
<h4 style="margin: 20px 0px 10px; padding: 0px; font-size: 16px; font-family: Helvetica, arial, freesans, clean, sans-serif; ">Get a single Car</h4><div class="" style="border: none; padding: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; ">
<pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span class="" style="color:rgb(0,128,128)">URL</span><span class="" style="font-weight:bold">=</span><span class="" style="color:rgb(221,17,68)">"<a href="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo">http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo</a>"</span>
curl -i --header <span class="" style="color:rgb(221,17,68)">"Accept: application/json"</span> <span class="" style="color:rgb(221,17,68)">"$URL/cars/1"</span>
</pre></div><p style="margin: 15px 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; ">The request will return:</p><div class="" style="border: none; padding: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; ">
<pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span class="">{</span><span class="" style="color:rgb(221,17,68)">"color"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"Black"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"brand"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(221,17,68)">"BMW"</span><span class="">,</span><span class="" style="color:rgb(221,17,68)">"id"</span><span class="" style="font-weight:bold">:</span><span class="" style="color:rgb(0,153,153)">1</span><span class="">}</span></pre>
</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 10 January 2013 20:00, Daniel Bevenius <span dir="ltr">&lt;<a href="mailto:daniel.bevenius@gmail.com" target="_blank">daniel.bevenius@gmail.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 dir="ltr">Summers brought up a good point today on IRC which I've forgot to mention. We've said that it will be possible to pass the page parameters as HTTP Headers and this is still the plan. But the demo is using the lastest from upstream and support for passing headers to the client is not there yet. I hope to have this working shortly though and I'll post back with information as soon as possible, tomorrow or Monday at the latest.<div>

<br></div><div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On 10 January 2013 15:32, Daniel Bevenius <span dir="ltr">&lt;<a href="mailto:daniel.bevenius@gmail.com" target="_blank">daniel.bevenius@gmail.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 dir="ltr"><div>&gt;<span style="font-family:arial,sans-serif;font-size:13px">I know it's just a demo but I think making that JSON format consistent so that the car data is always in an array under the "cars" key would be better.</span></div>

<div>
<font face="arial, sans-serif">Good point. I'll change this so that there is always a "cars' key.</font></div></div><div><div class="gmail_extra"><br><br><div class="gmail_quote">
On 10 January 2013 15:13, Kris Borchers <span dir="ltr">&lt;<a href="mailto:kris@redhat.com" target="_blank">kris@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 style="word-wrap:break-word"><br><div><div><div>On Jan 10, 2013, at 3:02 AM, Daniel Bevenius &lt;<a href="mailto:daniel.bevenius@gmail.com" target="_blank">daniel.bevenius@gmail.com</a>&gt; wrote:</div>


<br><blockquote type="cite"><div dir="ltr">We talked about paging yesterday on IRC, and it was decided to add a paging example to aerogear-controller-demo. What follows is an example to kick of further discussion about what the example should look like.<br>



<div><br></div><div><h2 style="margin:0px 0px 10px;padding:0px;font-size:24px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(204,204,204);font-family:Helvetica,arial,freesans,clean,sans-serif">



</h2><h2 style="margin:0px 0px 10px;padding:0px;font-size:24px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(204,204,204)"></h2><h2 style="margin:0px 0px 10px;padding:0px;font-size:24px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(204,204,204)">



AeroGear Controller Demo Paging Route</h2><p style="margin:0px 0px 15px;font-size:14px;font-weight:normal;line-height:22px">This page discusses&nbsp;<a href="https://issues.jboss.org/browse/AEROGEAR-795" style="color:rgb(65,131,196);text-decoration:initial" target="_blank">AEROGEAR-795</a>&nbsp;which is about adding an example to aerogear-controller-demo to demonstrate paging support so that the client libraries (Android, JavaScript, and iOS) can be tested against it.</p><p style="margin:15px 0px;font-size:14px;font-weight:normal;line-height:22px">This is only a suggestion and the implementation and the names of the query parameters can all be changed.</p><h3 style="margin:20px 0px 10px;padding:0px;font-size:18px">



Use case</h3><p style="margin:0px 0px 15px;font-size:14px;font-weight:normal;line-height:22px">The example is using cars as the resource to interact with. To be able to query we need something to query, so lets start by adding some cars by posting.</p>



<h4 style="margin:20px 0px 10px;padding:0px;font-size:16px">Adding Cars</h4><div style="border:none;padding:0px;font-size:14px;font-weight:normal;line-height:22px"><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span style="color:rgb(0,128,128)">URL</span><span style="font-weight:bold">=</span><span style="color:rgb(221,17,68)">"<a href="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo" target="_blank">http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo</a>"</span>

curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Black&amp;car.brand=BMW"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Red&amp;car.brand=Ferrari"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Blue&amp;car.brand=Skoda"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Green&amp;car.brand=Audi"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Yello&amp;car.brand=Opel"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Pink&amp;car.brand=Mini"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Gray&amp;car.brand=Nissan"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Red&amp;car.brand=Volvo"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Blue&amp;car.brand=Saab"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Black&amp;car.brand=Mazda"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> -H <span style="color:rgb(221,17,68)">"Content-type: application/x-www-form-urlencoded"</span> --data <span style="color:rgb(221,17,68)">"car.color=Yello&amp;car.brand=Golf"</span> -X POST <span style="color:rgb(221,17,68)">"$URL/cars"</span>
</pre></div><p style="margin:15px 0px;font-size:14px;font-weight:normal;line-height:22px">The example uses an in-memory database so the data will be cleared upon redployment/restart of the server. So you only need to populate/post when you've restared or redployed.</p><p style="margin:15px 0px;font-size:14px;font-weight:normal;line-height:22px">With the cars in place, we can now issue GET requests with paging query parameters. The following route has been added to the demo:</p><div style="border:none;padding:0px;font-size:14px;font-weight:normal;line-height:22px">



<pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span>route</span><span style="font-weight:bold">()</span>
      <span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">from</span><span style="font-weight:bold">(</span><span style="color:rgb(221,17,68)">"/cars"</span><span style="font-weight:bold">)</span>
      <span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">on</span><span style="font-weight:bold">(</span><span>RequestMethod</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">GET</span><span style="font-weight:bold">)</span>
      <span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">produces</span><span style="font-weight:bold">(</span><span>MediaType</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">JSON</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">toString</span><span style="font-weight:bold">())</span>
      <span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">to</span><span style="font-weight:bold">(</span><span>Cars</span><span style="font-weight:bold">.</span><span style="color:rgb(0,128,128)">class</span><span style="font-weight:bold">).</span><span style="color:rgb(0,128,128)">get</span><span style="font-weight:bold">(</span><span>param</span><span style="font-weight:bold">(</span><span style="color:rgb(221,17,68)">"page"</span><span style="font-weight:bold">,</span> <span style="color:rgb(221,17,68)">"0"</span><span style="font-weight:bold">),</span> <span>param</span><span style="font-weight:bold">(</span><span style="color:rgb(221,17,68)">"perPage"</span><span style="font-weight:bold">,</span> <span style="color:rgb(221,17,68)">"-1"</span><span style="font-weight:bold">));</span>
</pre></div><p style="margin:15px 0px;font-size:14px;font-weight:normal;line-height:22px">From this we can see that there are two optional parameters,&nbsp;<code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">page</code>&nbsp;and&nbsp;<code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">perPage</code>. If these are not specified all cars will be returned.</p>



<h4 style="margin:20px 0px 10px;padding:0px;font-size:16px">Getting a page of Cars</h4><div style="border:none;padding:0px;font-size:14px;font-weight:normal;line-height:22px"><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span style="color:rgb(0,128,128)">URL</span><span style="font-weight:bold">=</span><span style="color:rgb(221,17,68)">"<a href="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo" target="_blank">http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo</a>"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> <span style="color:rgb(221,17,68)">"$URL/cars?page=0&amp;perPage=4"</span>
</pre></div><p style="margin:15px 0px;font-size:14px;font-weight:normal;line-height:22px">The request will return:</p><div style="border:none;padding:0px;font-size:14px;font-weight:normal;line-height:22px"><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span>{</span>
  <span style="color:rgb(221,17,68)">"metadata"</span><span style="font-weight:bold">:</span><span>{</span><span style="color:rgb(221,17,68)">"page"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">0</span><span>,</span><span style="color:rgb(221,17,68)">"perPage"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">4</span><span>},</span>
  <span style="color:rgb(221,17,68)">"cars"</span><span style="font-weight:bold">:</span><span>[</span>
            <span>{</span><span style="color:rgb(221,17,68)">"color"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Black"</span><span>,</span><span style="color:rgb(221,17,68)">"brand"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"BMW"</span><span>,</span><span style="color:rgb(221,17,68)">"id"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">1</span><span>},</span>
            <span>{</span><span style="color:rgb(221,17,68)">"color"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Red"</span><span>,</span><span style="color:rgb(221,17,68)">"brand"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Ferrari"</span><span>,</span><span style="color:rgb(221,17,68)">"id"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">2</span><span>},</span>
            <span>{</span><span style="color:rgb(221,17,68)">"color"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Blue"</span><span>,</span><span style="color:rgb(221,17,68)">"brand"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Skoda"</span><span>,</span><span style="color:rgb(221,17,68)">"id"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">3</span><span>},</span>
            <span>{</span><span style="color:rgb(221,17,68)">"color"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Green"</span><span>,</span><span style="color:rgb(221,17,68)">"brand"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Audi"</span><span>,</span><span style="color:rgb(221,17,68)">"id"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">4</span><span>}</span>
          <span>],</span>
  <span style="color:rgb(221,17,68)">"links"</span><span style="font-weight:bold">:</span><span>{</span>
          <span style="color:rgb(221,17,68)">"first"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"cars?page=0&amp;page=4"</span><span>,</span>
          <span style="color:rgb(221,17,68)">"previous"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"cars?page=0&amp;page=4"</span><span>,</span>
          <span style="color:rgb(221,17,68)">"next"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"cars?page=1&amp;page=4"</span>
          <span>}</span>
<span>}</span>
</pre></div><h4 style="margin:20px 0px 10px;padding:0px;font-size:16px">Getting the next page of Cars</h4><p style="margin:0px 0px 15px;font-size:14px;font-weight:normal;line-height:22px">To get the next page you can follow the&nbsp;<code style="font-size:12px;line-height:normal;font-family:Consolas,'Liberation Mono',Courier,monospace;margin:0px 2px;padding:0px 5px;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;white-space:nowrap">next</code>&nbsp;link:</p>



<div style="border:none;padding:0px;font-size:14px;font-weight:normal;line-height:22px"><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span style="color:rgb(0,128,128)">URL</span><span style="font-weight:bold">=</span><span style="color:rgb(221,17,68)">"<a href="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo" target="_blank">http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo</a>"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> <span style="color:rgb(221,17,68)">"$URL/cars?page=1&amp;perPage=4"</span>
</pre></div><div style="border:none;padding:0px;font-size:14px;font-weight:normal;line-height:22px"><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span>{</span>
    <span style="color:rgb(221,17,68)">"metadata"</span><span style="font-weight:bold">:</span><span>{</span><span style="color:rgb(221,17,68)">"page"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">1</span><span>,</span><span style="color:rgb(221,17,68)">"perPage"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">4</span><span>},</span>
    <span style="color:rgb(221,17,68)">"cars"</span><span style="font-weight:bold">:</span><span>[</span>
            <span>{</span><span style="color:rgb(221,17,68)">"color"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Yello"</span><span>,</span><span style="color:rgb(221,17,68)">"brand"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Opel"</span><span>,</span><span style="color:rgb(221,17,68)">"id"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">5</span><span>},</span>
            <span>{</span><span style="color:rgb(221,17,68)">"color"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Pink"</span><span>,</span><span style="color:rgb(221,17,68)">"brand"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Mini"</span><span>,</span><span style="color:rgb(221,17,68)">"id"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">6</span><span>},</span>
            <span>{</span><span style="color:rgb(221,17,68)">"color"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Gray"</span><span>,</span><span style="color:rgb(221,17,68)">"brand"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Nissan"</span><span>,</span><span style="color:rgb(221,17,68)">"id"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">7</span><span>},</span>
            <span>{</span><span style="color:rgb(221,17,68)">"color"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Red"</span><span>,</span><span style="color:rgb(221,17,68)">"brand"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Volvo"</span><span>,</span><span style="color:rgb(221,17,68)">"id"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">8</span><span>}</span>
           <span>],</span>
    <span style="color:rgb(221,17,68)">"links"</span><span style="font-weight:bold">:</span><span>{</span>
            <span style="color:rgb(221,17,68)">"first"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"cars?page=0&amp;page=4"</span><span>,</span>
            <span style="color:rgb(221,17,68)">"previous"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"cars?page=0&amp;page=4"</span><span>,</span>
            <span style="color:rgb(221,17,68)">"next"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"cars?page=2&amp;page=4"</span>
            <span>}</span>
<span>}</span>
</pre></div><h4 style="margin:20px 0px 10px;padding:0px;font-size:16px">Get all Cars</h4><div style="border:none;padding:0px;font-size:14px;font-weight:normal;line-height:22px"><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span style="color:rgb(0,128,128)">URL</span><span style="font-weight:bold">=</span><span style="color:rgb(221,17,68)">"<a href="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo" target="_blank">http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo</a>"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> <span style="color:rgb(221,17,68)">"$URL/cars"</span>
</pre></div><h4 style="margin:20px 0px 10px;padding:0px;font-size:16px">Get a single Car</h4><div style="border:none;padding:0px;font-size:14px;font-weight:normal;line-height:22px"><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span style="color:rgb(0,128,128)">URL</span><span style="font-weight:bold">=</span><span style="color:rgb(221,17,68)">"<a href="http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo" target="_blank">http://controllerdemo-danbev.rhcloud.com/aerogear-controller-demo</a>"</span>
curl -i --header <span style="color:rgb(221,17,68)">"Accept: application/json"</span> <span style="color:rgb(221,17,68)">"$URL/cars/1"</span>
</pre></div><p style="margin:15px 0px;font-size:14px;font-weight:normal;line-height:22px">The request will return:</p><div style="border:none;padding:0px;font-size:14px;font-weight:normal;line-height:22px"><pre style="font-size:13px;line-height:19px;font-family:Consolas,'Liberation Mono',Courier,monospace;word-wrap:break-word;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px"><span>{</span><span style="color:rgb(221,17,68)">"color"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"Black"</span><span>,</span><span style="color:rgb(221,17,68)">"brand"</span><span style="font-weight:bold">:</span><span style="color:rgb(221,17,68)">"BMW"</span><span>,</span><span style="color:rgb(221,17,68)">"id"</span><span style="font-weight:bold">:</span><span style="color:rgb(0,153,153)">1</span><span>}</span>
</pre></div></div></div></blockquote><div><br></div></div>Hmmm, the data returned should be consistent, right? Whether paging parameters are supplied or not, the structure of the JSON to access the car info should be the same. It's fine to leave out the metadata and links when they're not needed I guess but to access the car info, currently you have:</div>


<div><br></div><div>Not Paged: {"color":"Black","brand":"BMW","id":1}</div><div>Paged: {"cars":[{"color":"Black","brand":"BMW","id":1},…]}</div>


<div><br></div><div>I know it's just a demo but I think making that JSON format consistent so that the car data is always in an array under the "cars" key would be better.<br><blockquote type="cite"><div>
<div dir="ltr"><p style="margin:15px 0px;font-size:14px;font-weight:normal;line-height:22px">Again, anything here can be changed, the name of the query parameters, the implementation, and what is returned.</p><p style="margin:15px 0px;font-size:14px;font-weight:normal;line-height:22px">



Reference:</p><ul style="margin-top:15px;margin-right:0px;margin-left:0px;padding:0px 0px 0px 30px;font-size:14px;font-weight:normal;line-height:22px;margin-bottom:0px!important"><li><a href="https://gist.github.com/4147473" style="color:rgb(65,131,196);text-decoration:initial;margin-top:0px" target="_blank">Paging Support in AeroGear Controller</a></li>



</ul></div></div><div>
_______________________________________________<br>aerogear-dev mailing list<br><a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">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></blockquote></div><br></div><br>_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org" target="_blank">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>
<br></blockquote></div><br></div>
</div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
_______________________________________________<br>aerogear-dev mailing list<br><a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>https://lists.jboss.org/mailman/listinfo/aerogear-dev<br></blockquote></div><br></body></html>