Please ignore this, I'm sorry about the noise.
On Wed, Oct 22, 2014 at 4:07 PM, Benson Margulies <[email protected]> wrote: > I created an exception mapper, but it seems to have no effect on 3.0.2. > > I wonder if our use of the API to set up a servlet is wrong ... see > the call to setProvider down there. Also, do we really need to put the > services in as all three of bean objects, resource classes, and > resource providers? > > @Override > // Called at startup time to register this web service. > public void loadBus(ServletConfig servletConfig) { > super.loadBus(servletConfig); > Bus bus = getBus(); > BusFactory.setDefaultBus(bus); > JAXRSServerFactoryBean fb = new JAXRSServerFactoryBean(); > > // fixing up the root uri > String restEndpointRoot = > StringUtils.isEmpty(conf.servletContainer.restEndpointRoot) > ? "/" : conf.servletContainer.restEndpointRoot.trim(); > if (!restEndpointRoot.startsWith("/")) { > restEndpointRoot = "/" + restEndpointRoot; > } > restEndpointRoot = restEndpointRoot.replaceAll("/*$", "") + > "/" + RAAS_RS_VERSION; > > fb.setAddress(restEndpointRoot); > // do we really need all three of beans, classes, and providers? > fb.setServiceBeanObjects(raasRsService, > raasRsPingService, > raasRsInfoService, > raasRsTextService, > raasRsRliService, > raasRsRblService, > raasRsRexService, > raasRsResService); > fb.setResourceClasses(RaasRsService.class, > RaasRsPingService.class, > RaasRsInfoService.class, > RaasRsTextService.class, > RaasRsRliService.class, > RaasRsRblService.class, > RaasRsRexService.class, > RaasRsResService.class); > fb.setResourceProviders(Arrays.<ResourceProvider>asList( > new SingletonResourceProvider(new RaasRsService(), true), > new SingletonResourceProvider(new RaasRsPingService(), true), > new SingletonResourceProvider(new RaasRsInfoService(), true), > new SingletonResourceProvider(new RaasRsTextService(), true), > new SingletonResourceProvider(new RaasRsRliService(), true), > new SingletonResourceProvider(new RaasRsRblService(), true), > new SingletonResourceProvider(new RaasRsRexService(), true), > new SingletonResourceProvider(new RaasRsResService(), true) > )); > // called set, but semantically, 'add'. > fb.setProvider(new > JacksonJaxbJsonProvider(JsonUtils.getObjectMapper(), > JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS)); > // catch json exceptions and map. > > fb.setProvider(new JsonExceptionMapper()); > > raasRsServer = fb.create(); > > On Wed, Oct 22, 2014 at 3:49 PM, Benson Margulies <[email protected]> > wrote: >> https://gist.github.com/benson-basis/69ef04e9543fe04ac9f5 >> >> Here I have a service that picks up a POST'ed body via Jackson. We use >> the provider, rather than just declaring the parameter as InputStream, >> to get Swagger to be useful. But the punishment is severe in the event >> of an error. Can I do something with exception mapping to cut down the >> noise? >> >> >> @POST >> @Path("/extract") >> @Consumes(MediaType.APPLICATION_JSON) >> @Produces(MediaType.APPLICATION_JSON) >> @Descriptions({ >> @Description(value = "Extract text from given content", >> target = DocTarget.METHOD), >> @Description(value = "Extracted text", target = >> DocTarget.RETURN), >> @Description(value = WADL_INPUT_DESC_TEXT, target = >> DocTarget.REQUEST), >> @Description(value = "Response in JSON, {text: \"sample >> text\"}", target = DocTarget.RESPONSE), >> @Description(value = "Text extraction service", target = >> DocTarget.RESOURCE) >> }) >> @ApiOperation(value = "Extract text from given content", notes = >> WADL_INPUT_DESC_TEXT + "<p>" + ADM_RESPONSE_DESC_TEXT) >> @ApiResponses(value = { >> @ApiResponse(code = HttpURLConnection.HTTP_BAD_REQUEST, >> message = BAD_REQUEST_FORMAT), >> @ApiResponse(code = HttpURLConnection.HTTP_FORBIDDEN, >> message = NO_PROFILE_DATA) >> }) >> public Response extractText( >> @ApiParam(name = "profileId", value = >> AnnotationGlossary.PROFILE_ID_DESC) @QueryParam("profileId") String >> profileId, >> @ApiParam(name = "debug", value = >> AnnotationGlossary.DEBUG_DESC) @QueryParam("debug") boolean debug, >> @ApiParam(name = "data", value = >> AnnotationGlossary.REQUEST_DATA_DESC, required = true) >> RaasRequestTextData data) { >> ... >> }
