use of org.wso2.carbon.apimgt.core.exception.ErrorHandler in project carbon-apimgt by wso2.
the class ApisApiServiceImpl method apisApiIdCommentsPost.
/**
* Update a comment
*
* @param apiId API ID
* @param body comment body
* @param request msf4j request object
* @return comment update response
* @throws NotFoundException if this method is not defined in ApisApiServiceImpl
*/
@Override
public Response apisApiIdCommentsPost(String apiId, CommentDTO body, Request request) throws NotFoundException {
String username = RestApiUtil.getLoggedInUsername(request);
try {
APIStore apiStore = RestApiUtil.getConsumer(username);
Comment comment = CommentMappingUtil.fromDTOToComment(body, username);
String createdCommentId = apiStore.addComment(comment, apiId);
Comment createdComment = apiStore.getCommentByUUID(createdCommentId, apiId);
CommentDTO createdCommentDTO = CommentMappingUtil.fromCommentToDTO(createdComment);
URI location = new URI(RestApiConstants.RESOURCE_PATH_APIS + "/" + apiId + RestApiConstants.SUBRESOURCE_PATH_COMMENTS + "/" + createdCommentId);
String fingerprint = getEtag(comment.getUuid(), request.getProperty("LOGGED_IN_USER").toString());
return Response.status(Response.Status.CREATED).header(RestApiConstants.LOCATION_HEADER, location).header(HttpHeaders.ETAG, "\"" + fingerprint + "\"").entity(createdCommentDTO).build();
} catch (APIManagementException e) {
String errorMessage = "Error while adding comment to api : " + apiId;
Map<String, String> paramList = new HashMap<String, String>();
paramList.put(APIMgtConstants.ExceptionsConstants.API_ID, body.getApiId());
ErrorDTO errorDTO = RestApiUtil.getErrorDTO(e.getErrorHandler(), paramList);
log.error(errorMessage, e);
return Response.status(e.getErrorHandler().getHttpStatusCode()).entity(errorDTO).build();
} catch (URISyntaxException e) {
String errorMessage = "Error while adding location header in response for comment";
ErrorHandler errorHandler = ExceptionCodes.LOCATION_HEADER_INCORRECT;
ErrorDTO errorDTO = RestApiUtil.getErrorDTO(errorHandler);
log.error(errorMessage, e);
return Response.status(errorHandler.getHttpStatusCode()).entity(errorDTO).build();
}
}
Aggregations