No problems, I'll add the population of data to the demo.

Thanks, 

/Dan


On 10 January 2013 11:54, Bruno Oliveira <bruno@abstractj.org> wrote:
+1


-- 
"The measure of a man is what he does with power" - Plato
-
@abstractj
-
Volenti Nihil Difficile

On Thursday, January 10, 2013 at 8:02 AM, Matthias Wessendorf wrote:

On Thu, Jan 10, 2013 at 10:11 AM, Daniel Bevenius
For the demo purpose, we could bootstrap the list of cars during startup so
we don't need to manually add all the cars.
Absolutely, that would be no problem.

+1 - that would make it easier to test/develop





On 10 January 2013 10:06, Sebastien Blanc <scm.blanc@gmail.com> wrote:

Great !
For the demo purpose, we could bootstrap the list of cars during startup
so we don't need to manually add all the cars.
Seb



On Thu, Jan 10, 2013 at 10:02 AM, Daniel Bevenius

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.

AeroGear Controller Demo Paging Route

This page discusses AEROGEAR-795 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.

This is only a suggestion and the implementation and the names of the
query parameters can all be changed.

Use case

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.

Adding Cars


curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Black&car.brand=BMW" -X
POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Red&car.brand=Ferrari"
-X POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Blue&car.brand=Skoda"
-X POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Green&car.brand=Audi"
-X POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Yello&car.brand=Opel"
-X POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Pink&car.brand=Mini" -X
POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Gray&car.brand=Nissan"
-X POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Red&car.brand=Volvo" -X
POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Blue&car.brand=Saab" -X
POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Black&car.brand=Mazda"
-X POST "$URL/cars"
curl -i --header "Accept: application/json" -H "Content-type:
application/x-www-form-urlencoded" --data "car.color=Yello&car.brand=Golf"
-X POST "$URL/cars"

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.

With the cars in place, we can now issue GET requests with paging query
parameters. The following route has been added to the demo:

route()
.from("/cars")
.on(RequestMethod.GET)
.produces(MediaType.JSON.toString())
.to(Cars.class).get(param("page", "0"), param("perPage", "-1"));

From this we can see that there are two optional parameters, page and
perPage. If these are not specified all cars will be returned.

Getting a page of Cars

curl -i --header "Accept: application/json" "$URL/cars?page=0&perPage=4"

The request will return:

{
"metadata":{"page":0,"perPage":4},
"cars":[
{"color":"Black","brand":"BMW","id":1},
{"color":"Red","brand":"Ferrari","id":2},
{"color":"Blue","brand":"Skoda","id":3},
{"color":"Green","brand":"Audi","id":4}
],
"links":{
"first":"cars?page=0&page=4",
"previous":"cars?page=0&page=4",
"next":"cars?page=1&page=4"
}
}

Getting the next page of Cars

To get the next page you can follow the next link:

curl -i --header "Accept: application/json" "$URL/cars?page=1&perPage=4"

{
"metadata":{"page":1,"perPage":4},
"cars":[
{"color":"Yello","brand":"Opel","id":5},
{"color":"Pink","brand":"Mini","id":6},
{"color":"Gray","brand":"Nissan","id":7},
{"color":"Red","brand":"Volvo","id":8}
],
"links":{
"first":"cars?page=0&page=4",
"previous":"cars?page=0&page=4",
"next":"cars?page=2&page=4"
}
}

Get all Cars

curl -i --header "Accept: application/json" "$URL/cars"

Get a single Car

curl -i --header "Accept: application/json" "$URL/cars/1"

The request will return:

{"color":"Black","brand":"BMW","id":1}

Again, anything here can be changed, the name of the query parameters,
the implementation, and what is returned.

Reference:

Paging Support in AeroGear Controller


_______________________________________________
aerogear-dev mailing list


_______________________________________________
aerogear-dev mailing list


_______________________________________________
aerogear-dev mailing list



--
Matthias Wessendorf

_______________________________________________
aerogear-dev mailing list


_______________________________________________
aerogear-dev mailing list
aerogear-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/aerogear-dev