/** * @param query * @param request * @param response * @return * @throws ResponseException */ @SuppressWarnings("rawtypes") @RequestMapping(value = "/{resource}", method = RequestMethod.GET) @ResponseBody public SimpleObject get( @PathVariable("resource") String resource, HttpServletRequest request, HttpServletResponse response) throws ResponseException { CrudResource res = (CrudResource) restService.getResourceByName(buildResourceName(resource)); RequestContext context = RestUtil.getRequestContext(request, Representation.REF); @SuppressWarnings("unchecked") SearchHandler searchHandler = restService.getSearchHandler(buildResourceName(resource), request.getParameterMap()); if (searchHandler != null) { return searchHandler.search(context).toSimpleObject(); } Enumeration parameters = request.getParameterNames(); while (parameters.hasMoreElements()) { if (!RestConstants.SPECIAL_REQUEST_PARAMETERS.contains(parameters.nextElement())) { if (res instanceof Searchable) { return ((Searchable) res).search(context); } else { throw new ResourceDoesNotSupportOperationException( res.getClass().getSimpleName() + " is not searchable"); } } } if (res instanceof Listable) { return ((Listable) res).getAll(context); } else { throw new ResourceDoesNotSupportOperationException( res.getClass().getSimpleName() + " is not listable"); } }