Done: https://github.com/wicketstuff/core/issues/490
Many thanks, Fabio On Thu, Apr 28, 2016 at 11:03 AM, Martin Grigorov <martin.grigo...@gmail.com > wrote: > Please file an issue at Wicketstuff GibHub. > On Apr 28, 2016 10:31 AM, "Fabio Fioretti" <windom.macroso...@gmail.com> > wrote: > > > Hi Martin, > > > > Thanks, I agree - findOffices() shouldn't be executed at all. In fact, > > handleMethodExecution() returns before invoking application code in all > > other cases (step 1 for unauthorized access, step 3 for validation > errors). > > > > Any chance to have it fixed relatively soon? (maybe Andrea can answer > this) > > > > Kind regards, > > Fabio > > > > On Thu, Apr 28, 2016 at 6:44 AM, Martin Grigorov <mgrigo...@apache.org> > > wrote: > > > > > Hi, > > > > > > > > > On Wed, Apr 27, 2016 at 12:07 PM, Fabio Fioretti < > > > windom.macroso...@gmail.com> wrote: > > > > > > > Hi all, > > > > > > > > Please consider the following simple implementation of > > > AbstractRestResource > > > > (6.22.0): > > > > > > > > @ResourcePath("/rest/api") > > > > public class MyRestResource extends > > > > AbstractRestResource<JsonWebSerialDeserial> > > > > { > > > > > > > > public MyRestResource () > > > > { > > > > super(new JsonWebSerialDeserial(new GsonObjectSerialDeserial())); > > > > } > > > > > > > > @MethodMapping(value = "/offices") > > > > public List<Office> findOffices( > > > > @RequestParam(value = "region", required = false) Integer > regionId) > > > > { > > > > return findOfficesByRegion(regionId); > > > > } > > > > } > > > > > > > > My question relates to the findOffices method and its filtering > > regionId > > > > parameter when the value is not a valid integer. For example, > consider > > > the > > > > request 'GET /rest/api/offices?region=AA'. > > > > > > > > At the second step of AbstractRestResource.handleMethodExecution, > > > > extractMethodParameters is invoked, which in turn triggers the > > conversion > > > > of all parameters through the static method toObject. > > > > > > > > When the conversion goes wrong and ConversionException is thrown, > > > toObject > > > > catches it, sets the response status to 400 and returns null! > > > > > > > > Now, when my findOffices is finally executed, I get a null regionId > > but I > > > > don't know whether it was not valid or the parameter was not present > at > > > > all. Checking the response status downstream is also particularly > hard > > > > because I have no getStatus (Tomcat 6 here, ouch!). > > > > > > > > To my mind, findOffices should return null instead of the unfiltered > > list > > > > of offices if the conversion went wrong, even because the response > > > > status is 400 (as set by toObject). However, how can I know it? > > > > > > > > Any suggestions? > > > > > > > > > > IMO this is a bug in the library. > > > #findOffices() should not be executed at all. > > > A response with status code 400 should be returned immediately after > the > > > unsuccessful convention without giving a chance to the application code > > to > > > be executed. > > > > > > > > > > > Many thanks, > > > > Fabio > > > > > > > > > >