/**
* This class as the name suggests is to translate the payload of PUT & POST requests to ElasticSearch (ES) to its
* compatible syntax, specially compatible with ES v6 or above.
- *
+ *
* For example, data type such as "string" is now replaced by "text" or "keyword".
- *
+ *
* So this class will make those translations reading off from a json configuration file, therefore the configuration
* can be updated with new translations as and when required without touching the code.
- *
+ *
* @author EDWINL
*
*/
private static final String CONFIG_DIRECTORY = System.getProperty("CONFIG_HOME");
private static final String ES_PAYLOAD_TRANSLATION_FILE = "es-payload-translation.json";
+ private ElasticSearchPayloadTranslator() { // Do not instantiate
+ }
/**
* Using JSON Path query to filter objects to translate the payload to ES compatible version The filter queries and
* the replacement attributes are configured in the es-payload-translation.json file.
- *
+ *
* @param source
* @return translated payload in String
* @throws IOException
*/
public static String translateESPayload(String source) throws IOException {
- logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY, "translateESPayload, method-params[ source=" + source + "]");
+ logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY, "translateESPayload, method-params[ source=" + source + "]",
+ "(unknown)");
String pathToTranslationFile = CONFIG_DIRECTORY + File.separator + ES_PAYLOAD_TRANSLATION_FILE;
try {
-
JSONObject translationConfigPayload =
new JSONObject(IOUtils.toString(new FileInputStream(new File(pathToTranslationFile)), "UTF-8"));
JSONArray attrTranslations = translationConfigPayload.getJSONArray("attr-translations");
logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY,
"Payload after translation: " + payloadToTranslate.jsonString());
return payloadToTranslate.jsonString();
-
- } catch (JSONException | IOException e) {
- logger.error(SearchDbMsgs.FILTERS_CONFIG_FAILURE, e, ES_PAYLOAD_TRANSLATION_FILE, e.getMessage());
- if (e instanceof JSONException) {
- throw new IOException("Payload translation configuration looks corrupted. Please correct!", e);
- }
- throw new IOException("Error in configuring payload translation file. Please check if it exists.", e);
+ } catch (JSONException ex) {
+ logger.error(SearchDbMsgs.FILTERS_CONFIG_FAILURE, ex, ES_PAYLOAD_TRANSLATION_FILE, ex.getMessage());
+ throw new IOException("Payload translation configuration looks corrupted. Please correct!", ex);
+ } catch (IOException ex) {
+ logger.error(SearchDbMsgs.FILTERS_CONFIG_FAILURE, ex, ES_PAYLOAD_TRANSLATION_FILE, ex.getMessage());
+ throw new IOException("Error in configuring payload translation file. Please check if it exists.", ex);
}
}
}