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
> > >
> >
>

Reply via email to