import java.util.concurrent.atomic.AtomicBoolean;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.Response.Status.Family;
+import org.eclipse.jetty.http.HttpStatus;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.onap.aai.sa.searchdbabstraction.entity.DocumentOperationResult;
import org.onap.aai.sa.searchdbabstraction.entity.ErrorResult;
import org.onap.aai.sa.searchdbabstraction.entity.OperationResult;
+import org.onap.aai.sa.searchdbabstraction.entity.OperationResultBuilder;
+import org.onap.aai.sa.searchdbabstraction.entity.OperationResultBuilder.Type;
import org.onap.aai.sa.searchdbabstraction.entity.SearchHit;
import org.onap.aai.sa.searchdbabstraction.entity.SearchHits;
import org.onap.aai.sa.searchdbabstraction.entity.SearchOperationResult;
private static final String JSON_ATTR_ERROR = "error";
private static final String JSON_ATTR_REASON = "reason";
+ private static final String DEFAULT_TYPE = "default";
private static final String QUERY_PARAM_VERSION = "?version=";
private static final String MSG_RESOURCE_MISSING = "Specified resource does not exist: ";
private static final String MSG_INVALID_DOCUMENT_URL = "Invalid document URL: ";
private static final String MSG_HTTP_PUT_FAILED = "Failed to set HTTP request method to PUT.";
private static final String MSG_HTTP_POST_FAILED = "Failed to set HTTP request method to POST.";
- private static final String INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT =
- "Internal Error: ElasticSearch operation fault occurred";
private static final String FAILED_TO_GET_THE_RESPONSE_CODE_FROM_THE_CONNECTION =
"Failed to get the response code from the connection.";
private static final String FAILED_TO_PARSE_ELASTIC_SEARCH_RESPONSE = "Failed to parse Elastic Search response.";
private final ElasticSearchConfig config;
- private static final String DEFAULT_TYPE = "default";
-
protected AnalysisConfiguration analysisConfig;
+
+ public ElasticSearchHttpController(ElasticSearchConfig config) {
+ this.config = config;
+ analysisConfig = new AnalysisConfiguration();
+
+ try {
+ logger.info(SearchDbMsgs.ELASTIC_SEARCH_CONNECTION_ATTEMPT, getFullUrl("", false));
+ checkConnection();
+ logger.info(SearchDbMsgs.ELASTIC_SEARCH_CONNECTION_SUCCESS, getFullUrl("", false));
+ } catch (Exception e) {
+ logger.error(SearchDbMsgs.ELASTIC_SEARCH_CONNECTION_FAILURE, null, e, getFullUrl("", false),
+ e.getMessage());
+ }
+ }
+
public static ElasticSearchHttpController getInstance() {
synchronized (ElasticSearchHttpController.class) {
if (instance == null) {
return instance;
}
- public ElasticSearchHttpController(ElasticSearchConfig config) {
- this.config = config;
- analysisConfig = new AnalysisConfiguration();
-
- try {
- logger.info(SearchDbMsgs.ELASTIC_SEARCH_CONNECTION_ATTEMPT, getFullUrl("", false));
- checkConnection();
- logger.info(SearchDbMsgs.ELASTIC_SEARCH_CONNECTION_SUCCESS, getFullUrl("", false));
- } catch (Exception e) {
- logger.error(SearchDbMsgs.ELASTIC_SEARCH_CONNECTION_FAILURE, null, e, getFullUrl("", false),
- e.getMessage());
- }
- }
-
public AnalysisConfiguration getAnalysisConfig() {
return analysisConfig;
}
@Override
public OperationResult createIndex(String index, DocumentSchema documentSchema) {
- OperationResult result = new OperationResult();
- result.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
-
try {
-
- // Submit the request to ElasticSearch to create the index using a
- // default document type.
- result = createTable(index, DEFAULT_TYPE, analysisConfig.getEsIndexSettings(),
+ // Submit the request to ElasticSearch to create the index using a default document type.
+ OperationResult result = createTable(index, DEFAULT_TYPE, analysisConfig.getEsIndexSettings(),
DocumentSchemaUtil.generateDocumentMappings(documentSchema));
// ElasticSearch will return us a 200 code on success when we
if (isSuccess(result)) {
result.setResult("{\"url\": \"" + ApiUtils.buildIndexUri(index) + "\"}");
}
+ return result;
} catch (DocumentStoreOperationException | IOException e) {
- result.setFailureCause("Document store operation failure. Cause: " + e.getMessage());
+ return new OperationResultBuilder().useDefaults()
+ .failureCause("Document store operation failure. Cause: " + e.getMessage()).build();
}
- return result;
}
@Override
public OperationResult createDynamicIndex(String index, String dynamicSchema) {
- OperationResult result = new OperationResult();
- result.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
-
try {
- result = createTable(index, dynamicSchema);
+ OperationResult result = createTable(index, dynamicSchema);
// ElasticSearch will return us a 200 code on success when we
// want to report a 201, so translate the result here.
if (isSuccess(result)) {
result.setResult("{\"url\": \"" + ApiUtils.buildIndexUri(index) + "\"}");
}
+ return result;
} catch (DocumentStoreOperationException e) {
- result.setFailureCause("Document store operation failure. Cause: " + e.getMessage());
+ return new OperationResultBuilder().useDefaults()
+ .failureCause("Document store operation failure. Cause: " + e.getMessage()).build();
}
-
- return result;
}
@Override
public OperationResult deleteIndex(String indexName) throws DocumentStoreOperationException {
-
- // Initialize operation result with a failure codes / fault string
- OperationResult opResult = new OperationResult();
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- opResult.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
throw new DocumentStoreOperationException("Failed to set HTTP request method to DELETE.", e);
}
- handleResponse(conn, opResult);
-
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger
- .info(SearchDbMsgs.DELETE_INDEX_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResult()),
- override, indexName);
-
+ OperationResult opResult = handleResponse(conn);
+ logMetricsInfo(override, SearchDbMsgs.DELETE_INDEX_TIME, opResult, indexName);
shutdownConnection(conn);
return opResult;
int resultCode = conn.getResponseCode();
logger.debug("getClusterHealth() response Code : " + resultCode);
- OperationResult opResult = new OperationResult();
- opResult.setResultCode(resultCode);
shutdownConnection(conn);
- return opResult;
+ return new OperationResultBuilder().resultCode(resultCode).build();
}
private String getFullUrl(String resourceUrl, boolean isSecure) {
// @Override
protected OperationResult createTable(String indexName, String typeName, String indexSettings, String indexMappings)
throws DocumentStoreOperationException {
-
if (indexSettings == null) {
logger.debug("No settings provided.");
}
logger.debug("No mappings provided.");
}
- OperationResult opResult = new OperationResult();
-
- // Initialize operation result with a failure codes / fault string
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- opResult.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
}
logger.debug("\ncreateTable(), Sending 'PUT' request to URL : " + conn.getURL());
- logger.debug("Request content: " + sb.toString());
-
- handleResponse(conn, opResult);
+ logger.debug("Request content: " + sb);
+ OperationResult opResult = handleResponse(conn);
shutdownConnection(conn);
-
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger
- .info(SearchDbMsgs.CREATE_INDEX_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResultCode()),
- override, indexName);
+ logMetricsInfo(override, SearchDbMsgs.CREATE_INDEX_TIME, opResult, indexName);
return opResult;
}
*/
protected OperationResult createTable(String indexName, String settingsAndMappings)
throws DocumentStoreOperationException {
- OperationResult result = new OperationResult();
- result.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- result.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
logger.error(SearchDbMsgs.INDEX_CREATE_FAILURE, e);
throw new DocumentStoreOperationException(e.getMessage());
}
- handleResponse(conn, result);
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger
- .info(SearchDbMsgs.CREATE_INDEX_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, result.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, result.getResultCode()),
- override, indexName);
+ OperationResult result = handleResponse(conn);
+ logMetricsInfo(override, SearchDbMsgs.CREATE_INDEX_TIME, result, indexName);
return result;
}
// which can lead to hard-to-debug behaviour with queries down the road.
OperationResult indexExistsResult = checkIndexExistence(indexName);
if (!isSuccess(indexExistsResult)) {
- DocumentOperationResult opResult = new DocumentOperationResult();
- opResult.setResultCode(Status.NOT_FOUND.getStatusCode());
String resultMsg = "Document Index '" + indexName + "' does not exist.";
- opResult.setResult(resultMsg);
- opResult.setFailureCause(resultMsg);
- return opResult;
+ return (DocumentOperationResult) new OperationResultBuilder(Type.DOCUMENT).status(Status.NOT_FOUND)
+ .result(resultMsg).failureCause(resultMsg).build();
}
}
return opResult;
}
- opResult = new DocumentOperationResult();
- // Initialize operation result with a failure codes / fault string
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- opResult.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
logger.debug("Sending 'PUT' request to: " + conn.getURL());
- handleResponse(conn, opResult);
+ opResult = getOperationResult(conn);
buildDocumentResult(opResult, indexName);
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger
- .info(SearchDbMsgs.CREATE_DOCUMENT_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResult()),
- override, indexName);
+ logMetricsInfo(override, SearchDbMsgs.CREATE_DOCUMENT_TIME, opResult, indexName);
shutdownConnection(conn);
private DocumentOperationResult createDocumentWithoutId(String indexName, DocumentStoreDataEntity document)
throws DocumentStoreOperationException {
-
- DocumentOperationResult response = new DocumentOperationResult();
- // Initialize operation result with a failure codes / fault string
- response.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- response.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
logger.debug("Sending 'POST' request to: " + conn.getURL());
- handleResponse(conn, response);
+ DocumentOperationResult response = getOperationResult(conn);
buildDocumentResult(response, indexName);
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger
- .info(SearchDbMsgs.CREATE_DOCUMENT_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, response.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, response.getResult()),
- override, indexName);
+ logMetricsInfo(override, SearchDbMsgs.CREATE_DOCUMENT_TIME, response, indexName);
shutdownConnection(conn);
private DocumentOperationResult checkDocumentExistence(String indexName, String docId)
throws DocumentStoreOperationException {
- DocumentOperationResult opResult = new DocumentOperationResult();
-
- // Initialize operation result with a failure codes / fault string
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
logger.debug(MSG_RESPONSE_CODE + resultCode);
- opResult.setResultCode(resultCode);
-
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger
- .info(SearchDbMsgs.GET_DOCUMENT_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResult()),
- override, indexName, docId);
+ DocumentOperationResult opResult = (DocumentOperationResult) new OperationResultBuilder(Type.DOCUMENT)
+ .useDefaults().resultCode(resultCode).build();
+ logMetricsInfo(override, SearchDbMsgs.GET_DOCUMENT_TIME, opResult, indexName, docId);
shutdownConnection(conn);
return opResult;
}
}
- DocumentOperationResult opResult = new DocumentOperationResult();
-
- // Initialize operation result with a failure codes / fault string
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- opResult.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
logger.debug("Sending 'PUT' request to: " + conn.getURL());
- handleResponse(conn, opResult);
+ DocumentOperationResult opResult = getOperationResult(conn);
buildDocumentResult(opResult, indexName);
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger.info(SearchDbMsgs.UPDATE_DOCUMENT_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResult()),
- override, indexName, document.getId());
+ logMetricsInfo(override, SearchDbMsgs.UPDATE_DOCUMENT_TIME, opResult, indexName, document.getId());
shutdownConnection(conn);
@Override
public DocumentOperationResult deleteDocument(String indexName, DocumentStoreDataEntity document)
throws DocumentStoreOperationException {
- DocumentOperationResult opResult = new DocumentOperationResult();
-
- // Initialize operation result with a failure codes / fault string
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- opResult.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
logger.debug("\nSending 'DELETE' request to " + conn.getURL());
- handleResponse(conn, opResult);
+ DocumentOperationResult opResult = getOperationResult(conn);
buildDocumentResult(opResult, indexName);
// supress the etag and url in response for delete as they are not required
if (opResult.getDocument() != null) {
opResult.getDocument().setUrl(null);
}
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger.info(SearchDbMsgs.DELETE_DOCUMENT_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResult())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResultCode()),
- override, indexName, document.getId());
+ logMetricsInfo(override, SearchDbMsgs.DELETE_DOCUMENT_TIME, opResult, indexName, document.getId());
shutdownConnection(conn);
@Override
public DocumentOperationResult getDocument(String indexName, DocumentStoreDataEntity document)
throws DocumentStoreOperationException {
- DocumentOperationResult opResult = new DocumentOperationResult();
-
- // Initialize operation result with a failure codes / fault string
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- opResult.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
logger.debug("\nSending 'GET' request to: " + conn.getURL());
- handleResponse(conn, opResult);
+ DocumentOperationResult opResult = getOperationResult(conn);
buildDocumentResult(opResult, indexName);
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger.info(SearchDbMsgs.GET_DOCUMENT_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResult()),
- override, indexName, document.getId());
+ logMetricsInfo(override, SearchDbMsgs.GET_DOCUMENT_TIME, opResult, indexName, document.getId());
shutdownConnection(conn);
@Override
public SearchOperationResult search(String indexName, String queryString) throws DocumentStoreOperationException {
- SearchOperationResult opResult = new SearchOperationResult();
-
- // Initialize operation result with a failure codes / fault string
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- opResult.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
String fullUrl = getFullUrl("/" + indexName + "/_search" + "?" + queryString, false);
logger.debug("\nsearch(), Sending 'GET' request to URL : " + conn.getURL());
- handleResponse(conn, opResult);
+ SearchOperationResult opResult = getSearchOperationResult(conn);
buildSearchResult(opResult, indexName);
-
- metricsLogger.info(SearchDbMsgs.QUERY_DOCUMENT_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResult()),
- override, indexName, queryString);
+ logMetricsInfo(override, SearchDbMsgs.QUERY_DOCUMENT_TIME, opResult, indexName, queryString);
return opResult;
}
@Override
public SearchOperationResult searchWithPayload(String indexName, String query)
throws DocumentStoreOperationException {
- SearchOperationResult opResult = new SearchOperationResult();
-
if (logger.isDebugEnabled()) {
logger.debug("Querying index: " + indexName + " with query string: " + query);
}
- // Initialize operation result with a failure codes / fault string
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- opResult.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
String fullUrl = getFullUrl("/" + indexName + "/_search", false);
// Grab the current time so we can use it to generate a metrics log.
logger.debug("\nsearch(), Sending 'POST' request to URL : " + conn.getURL());
logger.debug("Request body = Elasticsearch query = " + query);
- handleResponse(conn, opResult);
+ SearchOperationResult opResult = getSearchOperationResult(conn);
buildSearchResult(opResult, indexName);
- metricsLogger
- .info(SearchDbMsgs.QUERY_DOCUMENT_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResult()),
- override, indexName, query);
+ logMetricsInfo(override, SearchDbMsgs.QUERY_DOCUMENT_TIME, opResult, indexName, query);
shutdownConnection(conn);
@Override
public SearchOperationResult suggestionQueryWithPayload(String indexName, String query)
throws DocumentStoreOperationException {
-
- SearchOperationResult opResult = new SearchOperationResult();
-
if (logger.isDebugEnabled()) {
logger.debug("Querying Suggestion index: " + indexName + " with query string: " + query);
}
- // Initialize operation result with a failure codes / fault string
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
- opResult.setResult(INTERNAL_SERVER_ERROR_ELASTIC_SEARCH_OPERATION_FAULT);
-
String fullUrl = getFullUrl("/" + indexName + "/_suggest", false);
// Grab the current time so we can use it to generate a metrics log.
logger.debug("\nsearch(), Sending 'POST' request to URL : " + conn.getURL());
logger.debug("Request body = Elasticsearch query = " + query);
- handleResponse(conn, opResult);
+ SearchOperationResult opResult = getSearchOperationResult(conn);
buildSuggestResult(opResult, indexName);
- metricsLogger
- .info(SearchDbMsgs.QUERY_DOCUMENT_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResult()),
- override, indexName, query);
+ logMetricsInfo(override, SearchDbMsgs.QUERY_DOCUMENT_TIME, opResult, indexName, query);
shutdownConnection(conn);
return conn;
}
- private void handleResponse(HttpURLConnection conn, OperationResult opResult)
+ private OperationResult handleResponse(HttpURLConnection conn) throws DocumentStoreOperationException {
+ return handleResponse(conn, new OperationResultBuilder().useDefaults());
+ }
+
+ private OperationResult handleResponse(HttpURLConnection conn, OperationResultBuilder rb)
throws DocumentStoreOperationException {
int resultCode;
}
if (resultCode == Status.CONFLICT.getStatusCode()) {
- opResult.setResultCode(Status.PRECONDITION_FAILED.getStatusCode());
+ rb.resultCode(Status.PRECONDITION_FAILED.getStatusCode());
} else {
- opResult.setResultCode(resultCode);
+ rb.resultCode(resultCode);
}
if (logger.isDebugEnabled()) {
logger.debug("Raw result string from ElasticSearch = " + result.toString());
}
- opResult.setResult(result.toString());
- opResult.setResultVersion(extractVersion(result.toString()));
+ rb.result(result.toString());
+ rb.resultVersion(extractVersion(result.toString()));
+ return rb.build();
}
private String extractVersion(String result) {
@Override
public OperationResult performBulkOperations(BulkRequest[] requests) throws DocumentStoreOperationException {
-
if (logger.isDebugEnabled()) {
StringBuilder dbgString = new StringBuilder("ESController: performBulkOperations - Operations: ");
}
}
- // Finally, build the operation result and return it to the caller.
- OperationResult result = new OperationResult();
- result.setResultCode(207);
- result.setResult(buildGenericBulkResultSet(opResult, rejected));
+ OperationResult result = new OperationResultBuilder() //
+ .resultCode(HttpStatus.MULTI_STATUS_207) //
+ .result(buildGenericBulkResultSet(opResult, rejected)) //
+ .build();
- // In the success case we don't want the entire result string to be
- // dumped into the metrics log, so concatenate it.
+ // In the success case we don't want the entire result string to be dumped into the metrics log, so concatenate
+ // it.
String resultStringForMetricsLog = result.getResult();
if (isSuccess(result)) {
resultStringForMetricsLog =
}
metricsLogger.info(SearchDbMsgs.BULK_OPERATIONS_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, result.getResultCode())
+ new LogFields() //
+ .setField(LogLine.DefinedFields.RESPONSE_CODE, result.getResultCode())
.setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, resultStringForMetricsLog),
override);
return result;
}
-
/**
* This method converts a {@link BulkRequest} object into a json structure which can be understood by ElasticSearch.
*
* @throws DocumentStoreOperationException
*/
public OperationResult checkIndexExistence(String indexName) throws DocumentStoreOperationException {
-
- // Initialize operation result with a failure codes / fault string
- OperationResult opResult = new OperationResult();
- opResult.setResultCode(Status.INTERNAL_SERVER_ERROR.getStatusCode());
-
// Grab the current time so we can use it to generate a metrics log.
MdcOverride override = getStartTime(new MdcOverride());
}
logger.debug(MSG_RESPONSE_CODE + resultCode);
- opResult.setResultCode(resultCode);
-
- // Generate a metrics log so we can track how long the operation took.
- metricsLogger
- .info(SearchDbMsgs.CHECK_INDEX_TIME,
- new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, opResult.getResultCode())
- .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, opResult.getResultCode()),
- override, indexName);
-
+ OperationResult opResult = new OperationResultBuilder().useDefaults().resultCode(resultCode).build();
+ logMetricsInfo(override, SearchDbMsgs.CHECK_INDEX_TIME, opResult, indexName);
shutdownConnection(conn);
return opResult;
}
+ private DocumentOperationResult getOperationResult(HttpURLConnection conn) throws DocumentStoreOperationException {
+ return (DocumentOperationResult) handleResponse(conn, new OperationResultBuilder(Type.DOCUMENT).useDefaults());
+ }
+
+ private SearchOperationResult getSearchOperationResult(HttpURLConnection conn)
+ throws DocumentStoreOperationException {
+ return (SearchOperationResult) handleResponse(conn, new OperationResultBuilder(Type.SEARCH).useDefaults());
+ }
private void buildDocumentResult(DocumentOperationResult result, String index)
throws DocumentStoreOperationException {
}
private void buildSearchResult(SearchOperationResult result, String index) throws DocumentStoreOperationException {
-
JSONParser parser = new JSONParser();
JSONObject root;
} catch (Exception e) {
throw new DocumentStoreOperationException(FAILED_TO_PARSE_ELASTIC_SEARCH_RESPONSE + result.getResult());
}
-
}
private void buildSuggestResult(SearchOperationResult result, String index) throws DocumentStoreOperationException {
throw new DocumentStoreOperationException(FAILED_TO_PARSE_ELASTIC_SEARCH_RESPONSE + result.getResult());
}
}
+
+ /**
+ * Record the timing of the operation in the metrics log.
+ *
+ */
+ private void logMetricsInfo(MdcOverride override, SearchDbMsgs message, OperationResult operationResult,
+ String... args) {
+ metricsLogger.info(message,
+ new LogFields() //
+ .setField(LogLine.DefinedFields.RESPONSE_CODE, operationResult.getResultCode())
+ .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION, operationResult.getResult()),
+ override, args);
+ }
}