@Override
protected Object buildPostPutResponse(String langCode, ApiMethod.HttpMethod httpMethod,
String namespace, String resourceName, HttpServletRequest request, HttpServletResponse response, UriInfo ui, MediaType mediaType) {
Object responseObject = null;
try {
IResponseBuilder responseBuilder = (IResponseBuilder) ApsWebApplicationUtils.getBean(SystemConstants.API_RESPONSE_BUILDER, request);
Properties properties = this.extractRequestParameters(ui);
properties.put(SystemConstants.API_LANG_CODE_PARAMETER, langCode);
ApiMethod apiMethod = responseBuilder.extractApiMethod(httpMethod, namespace, resourceName);
String entandoApiToken = this.extractApiToken(request, ui);
if (null != entandoApiToken) {
this.extractTokenParameters(entandoApiToken, apiMethod, request, properties);
} else {
this.extractOAuthParameters(apiMethod, request, response, properties);
}
Class expectedType = apiMethod.getExpectedType();
Object bodyObject = null;
if (MediaType.APPLICATION_JSON_TYPE.equals(mediaType)) {
JSONProvider jsonProvider = new JSONProvider();
bodyObject = jsonProvider.readFrom(expectedType, expectedType.getGenericSuperclass(),
expectedType.getAnnotations(), mediaType, null, request.getInputStream());
} else {
JAXBContext context = JAXBContext.newInstance(expectedType);
Unmarshaller unmarshaller = context.createUnmarshaller();
bodyObject = (Object) unmarshaller.unmarshal(request.getInputStream());
}
responseObject = responseBuilder.createResponse(apiMethod, bodyObject, properties);
} catch (ApiException ae) {
responseObject = this.buildErrorResponse(httpMethod, namespace, resourceName, ae);
} catch (Throwable t) {
responseObject = this.buildErrorResponse(httpMethod, namespace, resourceName, t);
}