summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/aai/sa/rest/DocumentApi.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/aai/sa/rest/DocumentApi.java')
-rw-r--r--src/main/java/org/onap/aai/sa/rest/DocumentApi.java283
1 files changed, 149 insertions, 134 deletions
diff --git a/src/main/java/org/onap/aai/sa/rest/DocumentApi.java b/src/main/java/org/onap/aai/sa/rest/DocumentApi.java
index 63109ef..ac7610b 100644
--- a/src/main/java/org/onap/aai/sa/rest/DocumentApi.java
+++ b/src/main/java/org/onap/aai/sa/rest/DocumentApi.java
@@ -23,7 +23,10 @@ package org.onap.aai.sa.rest;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-
+import org.onap.aai.cl.api.LogFields;
+import org.onap.aai.cl.api.LogLine;
+import org.onap.aai.cl.api.Logger;
+import org.onap.aai.cl.eelf.LoggerFactory;
import org.onap.aai.sa.searchdbabstraction.elasticsearch.dao.DocumentStoreDataEntityImpl;
import org.onap.aai.sa.searchdbabstraction.elasticsearch.dao.DocumentStoreInterface;
import org.onap.aai.sa.searchdbabstraction.entity.AggregationResults;
@@ -32,35 +35,37 @@ import org.onap.aai.sa.searchdbabstraction.entity.SearchOperationResult;
import org.onap.aai.sa.searchdbabstraction.logging.SearchDbMsgs;
import org.onap.aai.sa.searchdbabstraction.searchapi.SearchStatement;
import org.onap.aai.sa.searchdbabstraction.searchapi.SuggestionStatement;
-import org.onap.aai.cl.api.LogFields;
-import org.onap.aai.cl.api.LogLine;
-import org.onap.aai.cl.api.Logger;
-import org.onap.aai.cl.eelf.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
+//import javax.ws.rs.core.HttpHeaders;
+//import javax.ws.rs.core.MediaType;
+//import javax.ws.rs.core.Response;
+//import javax.ws.rs.core.Response.Status;
+// Spring Imports
public class DocumentApi {
private static final String REQUEST_HEADER_RESOURCE_VERSION = "If-Match";
private static final String RESPONSE_HEADER_RESOURCE_VERSION = "ETag";
private static final String REQUEST_HEADER_ALLOW_IMPLICIT_INDEX_CREATION = "X-CreateIndex";
-
+
protected SearchServiceApi searchService = null;
private Logger logger = LoggerFactory.getInstance().getLogger(DocumentApi.class.getName());
- private Logger auditLogger =
- LoggerFactory.getInstance().getAuditLogger(DocumentApi.class.getName());
+ private Logger auditLogger = LoggerFactory.getInstance()
+ .getAuditLogger(DocumentApi.class.getName());
public DocumentApi(SearchServiceApi searchService) {
this.searchService = searchService;
}
- public Response processPost(String content, HttpServletRequest request, HttpHeaders headers,
- HttpServletResponse httpResponse, String index, DocumentStoreInterface documentStore) {
+ public ResponseEntity<String> processPost(String content, HttpServletRequest request, HttpHeaders headers,
+ HttpServletResponse httpResponse, String index,
+ DocumentStoreInterface documentStore) {
// Initialize the MDC Context for logging purposes.
ApiUtils.initMdcContext(request, headers);
@@ -69,7 +74,7 @@ public class DocumentApi {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_EMPTY);
if (content == null) {
- return handleError(request, content, Status.BAD_REQUEST);
+ return handleError(request, content, HttpStatus.BAD_REQUEST);
}
boolean isValid;
@@ -77,20 +82,20 @@ public class DocumentApi {
isValid = searchService.validateRequest(headers, request, ApiUtils.Action.POST,
ApiUtils.SEARCH_AUTH_POLICY_NAME);
} catch (Exception e) {
- logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL, "DocumentApi.processPost",
+ logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL,
+ "DocumentApi.processPost",
e.getMessage());
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
if (!isValid) {
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
DocumentStoreDataEntityImpl document = new DocumentStoreDataEntityImpl();
document.setContent(content);
- DocumentOperationResult result =
- documentStore.createDocument(index, document, implicitlyCreateIndex(headers));
+ DocumentOperationResult result = documentStore.createDocument(index, document, implicitlyCreateIndex(headers));
String output = null;
if (result.getResultCode() >= 200 && result.getResultCode() <= 299) {
output = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getDocument());
@@ -103,8 +108,9 @@ public class DocumentApi {
if (httpResponse != null) {
httpResponse.setHeader(RESPONSE_HEADER_RESOURCE_VERSION, result.getResultVersion());
}
- Response response = Response.status(result.getResultCode()).entity(output).build();
- logResult(request, Response.Status.fromStatusCode(response.getStatus()));
+ ResponseEntity response = ResponseEntity.status(result.getResultCode()).contentType ( MediaType.APPLICATION_JSON ).body(output);
+ logResult(request, HttpStatus.valueOf ( response.getStatusCodeValue () ));
+ logResult(request, HttpStatus.valueOf ( response.getStatusCodeValue () ));
// Clear the MDC context so that no other transaction inadvertently
// uses our transaction id.
@@ -112,13 +118,13 @@ public class DocumentApi {
return response;
} catch (Exception e) {
- return handleError(request, e.getMessage(), Status.INTERNAL_SERVER_ERROR);
+ return handleError(request, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
- public Response processPut(String content, HttpServletRequest request, HttpHeaders headers,
- HttpServletResponse httpResponse, String index, String id,
- DocumentStoreInterface documentStore) {
+ public ResponseEntity<String> processPut(String content, HttpServletRequest request, HttpHeaders headers,
+ HttpServletResponse httpResponse, String index,
+ String id, DocumentStoreInterface documentStore) {
// Initialize the MDC Context for logging purposes.
ApiUtils.initMdcContext(request, headers);
@@ -127,7 +133,7 @@ public class DocumentApi {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_EMPTY);
if (content == null) {
- return handleError(request, content, Status.BAD_REQUEST);
+ return handleError(request, content, HttpStatus.BAD_REQUEST);
}
boolean isValid;
@@ -135,17 +141,17 @@ public class DocumentApi {
isValid = searchService.validateRequest(headers, request, ApiUtils.Action.PUT,
ApiUtils.SEARCH_AUTH_POLICY_NAME);
} catch (Exception e) {
- logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL, "DocumentApi.processPut",
+ logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL,
+ "DocumentApi.processPut",
e.getMessage());
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
if (!isValid) {
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
- String resourceVersion =
- headers.getRequestHeaders().getFirst(REQUEST_HEADER_RESOURCE_VERSION);
+ String resourceVersion = headers.getFirst(REQUEST_HEADER_RESOURCE_VERSION);
DocumentStoreDataEntityImpl document = new DocumentStoreDataEntityImpl();
document.setId(id);
@@ -170,8 +176,8 @@ public class DocumentApi {
if (httpResponse != null) {
httpResponse.setHeader(RESPONSE_HEADER_RESOURCE_VERSION, result.getResultVersion());
}
- Response response = Response.status(result.getResultCode()).entity(output).build();
- logResult(request, Response.Status.fromStatusCode(response.getStatus()));
+ ResponseEntity response = ResponseEntity.status(result.getResultCode()).contentType ( MediaType.APPLICATION_JSON ).body(output);
+ logResult(request, HttpStatus.valueOf ( response.getStatusCodeValue () ));
// Clear the MDC context so that no other transaction inadvertently
// uses our transaction id.
@@ -179,13 +185,13 @@ public class DocumentApi {
return response;
} catch (Exception e) {
- return handleError(request, e.getMessage(), Status.INTERNAL_SERVER_ERROR);
+ return handleError(request, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
- public Response processDelete(String content, HttpServletRequest request, HttpHeaders headers,
- HttpServletResponse httpResponse, String index, String id,
- DocumentStoreInterface documentStore) {
+ public ResponseEntity<String> processDelete(String content, HttpServletRequest request, HttpHeaders headers,
+ HttpServletResponse httpResponse, String index, String id,
+ DocumentStoreInterface documentStore) {
// Initialize the MDC Context for logging purposes.
ApiUtils.initMdcContext(request, headers);
@@ -198,20 +204,20 @@ public class DocumentApi {
isValid = searchService.validateRequest(headers, request, ApiUtils.Action.DELETE,
ApiUtils.SEARCH_AUTH_POLICY_NAME);
} catch (Exception e) {
- logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL, "DocumentApi.processDelete",
+ logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL,
+ "DocumentApi.processDelete",
e.getMessage());
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
if (!isValid) {
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
- String resourceVersion =
- headers.getRequestHeaders().getFirst(REQUEST_HEADER_RESOURCE_VERSION);
+ String resourceVersion = headers.getFirst(REQUEST_HEADER_RESOURCE_VERSION);
if (resourceVersion == null || resourceVersion.isEmpty()) {
return handleError(request, "Request header 'If-Match' missing",
- javax.ws.rs.core.Response.Status.BAD_REQUEST);
+ HttpStatus.BAD_REQUEST);
}
DocumentStoreDataEntityImpl document = new DocumentStoreDataEntityImpl();
@@ -229,14 +235,14 @@ public class DocumentApi {
if (httpResponse != null) {
httpResponse.setHeader(RESPONSE_HEADER_RESOURCE_VERSION, result.getResultVersion());
}
- Response response;
+ ResponseEntity response;
if (output == null) {
- response = Response.status(result.getResultCode()).build();
+ response = ResponseEntity.status(result.getResultCode()).build();
} else {
- response = Response.status(result.getResultCode()).entity(output).build();
+ response = ResponseEntity.status(result.getResultCode()).contentType ( MediaType.APPLICATION_JSON ).body(output);
}
- logResult(request, Response.Status.fromStatusCode(response.getStatus()));
+ logResult(request, HttpStatus.valueOf ( response.getStatusCodeValue () ));
// Clear the MDC context so that no other transaction inadvertently
// uses our transaction id.
@@ -244,13 +250,13 @@ public class DocumentApi {
return response;
} catch (Exception e) {
- return handleError(request, e.getMessage(), Status.INTERNAL_SERVER_ERROR);
+ return handleError(request, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
- public Response processGet(String content, HttpServletRequest request, HttpHeaders headers,
- HttpServletResponse httpResponse, String index, String id,
- DocumentStoreInterface documentStore) {
+ public ResponseEntity<String> processGet(String content, HttpServletRequest request, HttpHeaders headers,
+ HttpServletResponse httpResponse, String index, String id,
+ DocumentStoreInterface documentStore) {
// Initialize the MDC Context for logging purposes.
ApiUtils.initMdcContext(request, headers);
@@ -263,17 +269,17 @@ public class DocumentApi {
isValid = searchService.validateRequest(headers, request, ApiUtils.Action.GET,
ApiUtils.SEARCH_AUTH_POLICY_NAME);
} catch (Exception e) {
- logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL, "DocumentApi.processGet",
+ logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL,
+ "DocumentApi.processGet",
e.getMessage());
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
if (!isValid) {
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
- String resourceVersion =
- headers.getRequestHeaders().getFirst(REQUEST_HEADER_RESOURCE_VERSION);
+ String resourceVersion = headers.getFirst(REQUEST_HEADER_RESOURCE_VERSION);
DocumentStoreDataEntityImpl document = new DocumentStoreDataEntityImpl();
document.setId(id);
@@ -291,8 +297,8 @@ public class DocumentApi {
if (httpResponse != null) {
httpResponse.setHeader(RESPONSE_HEADER_RESOURCE_VERSION, result.getResultVersion());
}
- Response response = Response.status(result.getResultCode()).entity(output).build();
- logResult(request, Response.Status.fromStatusCode(response.getStatus()));
+ ResponseEntity response = ResponseEntity.status(result.getResultCode()).contentType ( MediaType.APPLICATION_JSON ).body(output);
+ logResult(request, HttpStatus.valueOf ( response.getStatusCodeValue () ));
// Clear the MDC context so that no other transaction inadvertently
// uses our transaction id.
@@ -300,12 +306,13 @@ public class DocumentApi {
return response;
} catch (Exception e) {
- return handleError(request, e.getMessage(), Status.INTERNAL_SERVER_ERROR);
+ return handleError(request, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
- public Response processSearchWithGet(String content, HttpServletRequest request,
- HttpHeaders headers, String index, String queryText, DocumentStoreInterface documentStore) {
+ public ResponseEntity<String> processSearchWithGet(String content, HttpServletRequest request,
+ HttpHeaders headers, String index,
+ String queryText, DocumentStoreInterface documentStore) {
// Initialize the MDC Context for logging purposes.
ApiUtils.initMdcContext(request, headers);
@@ -319,26 +326,27 @@ public class DocumentApi {
isValid = searchService.validateRequest(headers, request, ApiUtils.Action.GET,
ApiUtils.SEARCH_AUTH_POLICY_NAME);
} catch (Exception e) {
- logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL, "processSearchWithGet",
+ logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL,
+ "processSearchWithGet",
e.getMessage());
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
if (!isValid) {
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
SearchOperationResult result = documentStore.search(index, queryText);
String output = null;
if (result.getResultCode() >= 200 && result.getResultCode() <= 299) {
- output =
- mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getSearchResult());
+ output = mapper.writerWithDefaultPrettyPrinter()
+ .writeValueAsString(result.getSearchResult());
} else {
output = result.getError() != null
? mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getError())
: result.getFailureCause();
}
- Response response = Response.status(result.getResultCode()).entity(output).build();
+ ResponseEntity response = ResponseEntity.status(result.getResultCode()).contentType ( MediaType.APPLICATION_JSON ).body(output);
// Clear the MDC context so that no other transaction inadvertently
// uses our transaction id.
@@ -346,32 +354,34 @@ public class DocumentApi {
return response;
} catch (Exception e) {
- return handleError(request, e.getMessage(), Status.INTERNAL_SERVER_ERROR);
+ return handleError(request, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
- public Response queryWithGetWithPayload(String content, HttpServletRequest request,
- HttpHeaders headers, String index, DocumentStoreInterface documentStore) {
+ public ResponseEntity<String> queryWithGetWithPayload(String content, HttpServletRequest request,
+ HttpHeaders headers, String index,
+ DocumentStoreInterface documentStore) {
// Initialize the MDC Context for logging purposes.
ApiUtils.initMdcContext(request, headers);
- logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY, "GET",
- (request != null) ? request.getRequestURL().toString() : "");
+ logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY, "GET", (request != null)
+ ? request.getRequestURL ().toString () : "");
if (logger.isDebugEnabled()) {
logger.debug("Request Body: " + content);
}
return processQuery(index, content, request, headers, documentStore);
}
- public Response processSearchWithPost(String content, HttpServletRequest request,
- HttpHeaders headers, String index, DocumentStoreInterface documentStore) {
+ public ResponseEntity<String> processSearchWithPost(String content, HttpServletRequest request,
+ HttpHeaders headers, String index,
+ DocumentStoreInterface documentStore) {
// Initialize the MDC Context for logging purposes.
ApiUtils.initMdcContext(request, headers);
- logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY, "POST",
- (request != null) ? request.getRequestURL().toString() : "");
+ logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY, "POST", (request != null)
+ ? request.getRequestURL ().toString () : "");
if (logger.isDebugEnabled()) {
logger.debug("Request Body: " + content);
}
@@ -379,14 +389,15 @@ public class DocumentApi {
return processQuery(index, content, request, headers, documentStore);
}
- public Response processSuggestQueryWithPost(String content, HttpServletRequest request,
- HttpHeaders headers, String index, DocumentStoreInterface documentStore) {
+
+ public ResponseEntity<String> processSuggestQueryWithPost(String content, HttpServletRequest request,
+ HttpHeaders headers, String index, DocumentStoreInterface documentStore) {
// Initialize the MDC Context for logging purposes.
ApiUtils.initMdcContext(request, headers);
logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY, "POST",
- (request != null) ? request.getRequestURL().toString() : "");
+ (request != null) ? request.getRequestURL().toString() : "");
if (logger.isDebugEnabled()) {
logger.debug("Request Body: " + content);
}
@@ -395,17 +406,17 @@ public class DocumentApi {
}
/**
- * Common handler for query requests. This is called by both the GET with payload and POST with
- * payload variants of the query endpoint.
+ * Common handler for query requests. This is called by both the GET with
+ * payload and POST with payload variants of the query endpoint.
*
- * @param index - The index to be queried against.
+ * @param index - The index to be queried against.
* @param content - The payload containing the query structure.
* @param request - The HTTP request.
* @param headers - The HTTP headers.
* @return - A standard HTTP response.
*/
- private Response processQuery(String index, String content, HttpServletRequest request,
- HttpHeaders headers, DocumentStoreInterface documentStore) {
+ private ResponseEntity processQuery(String index, String content, HttpServletRequest request,
+ HttpHeaders headers, DocumentStoreInterface documentStore) {
try {
ObjectMapper mapper = new ObjectMapper();
@@ -413,7 +424,7 @@ public class DocumentApi {
// Make sure that we were supplied a payload before proceeding.
if (content == null) {
- return handleError(request, content, Status.BAD_REQUEST);
+ return handleError(request, content, HttpStatus.BAD_REQUEST);
}
// Validate that the request has the appropriate authorization.
@@ -423,12 +434,14 @@ public class DocumentApi {
ApiUtils.SEARCH_AUTH_POLICY_NAME);
} catch (Exception e) {
- logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL, "processQuery", e.getMessage());
- return handleError(request, content, Status.FORBIDDEN);
+ logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL,
+ "processQuery",
+ e.getMessage());
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
if (!isValid) {
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
SearchStatement searchStatement;
@@ -439,13 +452,13 @@ public class DocumentApi {
searchStatement = mapper.readValue(content, SearchStatement.class);
} catch (Exception e) {
- return handleError(request, e.getMessage(), Status.BAD_REQUEST);
+ return handleError(request, e.getMessage(), HttpStatus.BAD_REQUEST);
}
// Now, submit the search statement, translated into
// ElasticSearch syntax, to the document store DAO.
- SearchOperationResult result =
- documentStore.searchWithPayload(index, searchStatement.toElasticSearch());
+ SearchOperationResult result = documentStore.searchWithPayload(index,
+ searchStatement.toElasticSearch());
String output = null;
if (result.getResultCode() >= 200 && result.getResultCode() <= 299) {
output = prepareOutput(mapper, result);
@@ -454,7 +467,7 @@ public class DocumentApi {
? mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getError())
: result.getFailureCause();
}
- Response response = Response.status(result.getResultCode()).entity(output).build();
+ ResponseEntity response = ResponseEntity.status(result.getResultCode()).contentType ( MediaType.APPLICATION_JSON ).body(output);
// Clear the MDC context so that no other transaction inadvertently
// uses our transaction id.
@@ -463,10 +476,11 @@ public class DocumentApi {
return response;
} catch (Exception e) {
- return handleError(request, e.getMessage(), Status.INTERNAL_SERVER_ERROR);
+ return handleError(request, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
+
/**
* Common handler for query requests. This is called by both the GET with payload and POST with
* payload variants of the query endpoint.
@@ -477,8 +491,8 @@ public class DocumentApi {
* @param headers - The HTTP headers.
* @return - A standard HTTP response.
*/
- private Response processSuggestQuery(String index, String content, HttpServletRequest request,
- HttpHeaders headers, DocumentStoreInterface documentStore) {
+ private ResponseEntity<String> processSuggestQuery(String index, String content, HttpServletRequest request,
+ HttpHeaders headers, DocumentStoreInterface documentStore) {
try {
ObjectMapper mapper = new ObjectMapper();
@@ -486,22 +500,22 @@ public class DocumentApi {
// Make sure that we were supplied a payload before proceeding.
if (content == null) {
- return handleError(request, content, Status.BAD_REQUEST);
+ return handleError(request, content, HttpStatus.BAD_REQUEST);
}
// Validate that the request has the appropriate authorization.
boolean isValid;
try {
isValid = searchService.validateRequest(headers, request, ApiUtils.Action.POST,
- ApiUtils.SEARCH_AUTH_POLICY_NAME);
+ ApiUtils.SEARCH_AUTH_POLICY_NAME);
} catch (Exception e) {
logger.info(SearchDbMsgs.EXCEPTION_DURING_METHOD_CALL, "processQuery", e.getMessage());
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
if (!isValid) {
- return handleError(request, content, Status.FORBIDDEN);
+ return handleError(request, content, HttpStatus.FORBIDDEN);
}
SuggestionStatement suggestionStatement;
@@ -512,22 +526,22 @@ public class DocumentApi {
suggestionStatement = mapper.readValue(content, SuggestionStatement.class);
} catch (Exception e) {
- return handleError(request, e.getMessage(), Status.BAD_REQUEST);
+ return handleError(request, e.getMessage(), HttpStatus.BAD_REQUEST);
}
// Now, submit the search statement, translated into
// ElasticSearch syntax, to the document store DAO.
SearchOperationResult result =
- documentStore.suggestionQueryWithPayload(index, suggestionStatement.toElasticSearch());
+ documentStore.suggestionQueryWithPayload(index, suggestionStatement.toElasticSearch());
String output = null;
if (result.getResultCode() >= 200 && result.getResultCode() <= 299) {
output = prepareSuggestOutput(mapper, result);
} else {
output = result.getError() != null
- ? mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getError())
- : result.getFailureCause();
+ ? mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getError())
+ : result.getFailureCause();
}
- Response response = Response.status(result.getResultCode()).entity(output).build();
+ ResponseEntity<String> response = ResponseEntity.status(result.getResultCode()).body(output);
// Clear the MDC context so that no other transaction inadvertently
// uses our transaction id.
@@ -536,82 +550,83 @@ public class DocumentApi {
return response;
} catch (Exception e) {
- return handleError(request, e.getMessage(), Status.INTERNAL_SERVER_ERROR);
+ return handleError(request, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
-
+
/**
- * Checks the supplied HTTP headers to see if we should allow the underlying document store to
- * implicitly create the index referenced in a document PUT or POST if it does not already exist
- * in the data store.
+ * Checks the supplied HTTP headers to see if we should allow the underlying document
+ * store to implicitly create the index referenced in a document PUT or POST if it
+ * does not already exist in the data store.
*
* @param headers - The HTTP headers to examine.
*
- * @return - true if the headers indicate that missing indices should be implicitly created, false
- * otherwise.
+ * @return - true if the headers indicate that missing indices should be implicitly created,
+ * false otherwise.
*/
private boolean implicitlyCreateIndex(HttpHeaders headers) {
-
+
boolean createIndexIfNotPresent = false;
- String implicitIndexCreationHeader =
- headers.getRequestHeaders().getFirst(REQUEST_HEADER_ALLOW_IMPLICIT_INDEX_CREATION);
-
- if ((implicitIndexCreationHeader != null) && (implicitIndexCreationHeader.equals("true"))) {
+ String implicitIndexCreationHeader =
+ headers.getFirst(REQUEST_HEADER_ALLOW_IMPLICIT_INDEX_CREATION);
+
+ if( (implicitIndexCreationHeader != null) && (implicitIndexCreationHeader.equals("true")) ) {
createIndexIfNotPresent = true;
}
-
+
return createIndexIfNotPresent;
}
private String prepareOutput(ObjectMapper mapper, SearchOperationResult result)
- throws JsonProcessingException {
+ throws JsonProcessingException {
StringBuffer output = new StringBuffer();
output.append("{\r\n\"searchResult\":");
output.append(
- mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getSearchResult()));
+ mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getSearchResult()));
AggregationResults aggs = result.getAggregationResult();
if (aggs != null) {
output.append(",\r\n\"aggregationResult\":");
output.append(mapper.setSerializationInclusion(Include.NON_NULL)
- .writerWithDefaultPrettyPrinter().writeValueAsString(aggs));
+ .writerWithDefaultPrettyPrinter().writeValueAsString(aggs));
}
output.append("\r\n}");
return output.toString();
}
private String prepareSuggestOutput(ObjectMapper mapper, SearchOperationResult result)
- throws JsonProcessingException {
+ throws JsonProcessingException {
StringBuffer output = new StringBuffer();
output.append("{\r\n\"searchResult\":");
output.append(
- mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getSuggestResult()));
+ mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result.getSuggestResult()));
AggregationResults aggs = result.getAggregationResult();
if (aggs != null) {
output.append(",\r\n\"aggregationResult\":");
output.append(mapper.setSerializationInclusion(Include.NON_NULL)
- .writerWithDefaultPrettyPrinter().writeValueAsString(aggs));
+ .writerWithDefaultPrettyPrinter().writeValueAsString(aggs));
}
output.append("\r\n}");
return output.toString();
}
- private Response handleError(HttpServletRequest request, String message, Status status) {
+ private ResponseEntity handleError( HttpServletRequest request, String message, HttpStatus status) {
logResult(request, status);
- return Response.status(status).entity(message).type(MediaType.APPLICATION_JSON).build();
+ return ResponseEntity.status(status).contentType ( MediaType.APPLICATION_JSON ).body(message);
}
- void logResult(HttpServletRequest request, Response.Status status) {
+ void logResult(HttpServletRequest request, HttpStatus status) {
- logger.info(SearchDbMsgs.PROCESS_REST_REQUEST, (request != null) ? request.getMethod() : "",
- (request != null) ? request.getRequestURL().toString() : "",
- (request != null) ? request.getRemoteHost() : "", Integer.toString(status.getStatusCode()));
+ logger.info(SearchDbMsgs.PROCESS_REST_REQUEST, (request != null) ? request.getMethod().toString () : "",
+ (request != null) ? request.getRequestURL ().toString () : "",
+ (request != null) ? request.getRemoteHost () : "", Integer.toString(status.value ()));
auditLogger.info(SearchDbMsgs.PROCESS_REST_REQUEST,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, status.getStatusCode())
+ new LogFields()
+ .setField(LogLine.DefinedFields.RESPONSE_CODE, status.value())
.setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, status.getReasonPhrase()),
- (request != null) ? request.getMethod() : "",
- (request != null) ? request.getRequestURL().toString() : "",
- (request != null) ? request.getRemoteHost() : "", Integer.toString(status.getStatusCode()));
+ (request != null) ? request.getMethod().toString () : "",
+ (request != null) ? request.getRequestURL ().toString () : "",
+ (request != null) ? request.getRemoteHost () : "", Integer.toString(status.value()));
// Clear the MDC context so that no other transaction inadvertently
// uses our transaction id.