Just an additional info : this PR doesn't imply any breaking changes, AG
controller demo, TODO app will continue to work without any code change !
Seb
On Tue, Mar 12, 2013 at 3:14 PM, Sebastien Blanc <scm.blanc(a)gmail.com>wrote:
Hi,
I'm currently working on scaffolding AG-controller stuff and for that I'm
relying on the REST endpoints generated by the forge REST plugin. A typical
method's signature of a generated endpoint looks like that :
*public Response findById(Long id)*
But an AG Controller route definition can't point to such a target method
since it only support Strings as parameters :
*
route().from("/customers/{id}").on(RequestMethod.GET).consumes(JSON).produces(JSON).to(CustomerEndpoint.class).findById(param("id"));
*
*
*
Of course, the quick workaround would be to change the signature of the
endpoint to :
*public Response findById(String id)*
*
*
But, in my particular case, after the scaffolding happens I can't really
tell the developers : "Well, now you have to change manually all the
signature of your endpoints and convert your Strings to Longs".
Another use case could be an application having existing endpoints used by
a Application A and we introduce Application B using AG controller. More
generally, I think it would be a nice addition to AG controller.
I've already proposed a pull request[1] that can't handle all the types
which have a constructor with a single String parameter : Long, Integer,
BigDecimal, etc ... And also added unit tests to be sure I doesn't break
Feedback is more than welcome !
Seb
[1]
https://github.com/aerogear/aerogear-controller/pull/55