aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authorEdwin Lawrance <Edwin.Lawrance@amdocs.com>2018-09-13 11:19:43 +0100
committerLawrance, Edwin (el525a) <Edwin.Lawrance@amdocs.com>2018-09-14 11:01:13 +0100
commit82658daad05f982a8358581623f44a1554238a48 (patch)
tree6e6c757da7aa02c1a5745549791bf313a4f7a5c7 /src/main/java
parentfe84ae3b8d01ac2634d389f6b9d579319ea39f7a (diff)
Fix to not remove whitespaces in the payload to ES
Change-Id: I3547e79ff27220a49539d9cfdf48ac534f155f10 Issue-ID: AAI-1596 Signed-off-by: Edwin Lawrance <Edwin.Lawrance@amdocs.com>
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/onap/aai/sa/searchdbabstraction/elasticsearch/dao/ElasticSearchHttpController.java13
-rw-r--r--src/main/java/org/onap/aai/sa/searchdbabstraction/util/ElasticSearchPayloadTranslator.java51
2 files changed, 39 insertions, 25 deletions
diff --git a/src/main/java/org/onap/aai/sa/searchdbabstraction/elasticsearch/dao/ElasticSearchHttpController.java b/src/main/java/org/onap/aai/sa/searchdbabstraction/elasticsearch/dao/ElasticSearchHttpController.java
index 90adbd7..98a254c 100644
--- a/src/main/java/org/onap/aai/sa/searchdbabstraction/elasticsearch/dao/ElasticSearchHttpController.java
+++ b/src/main/java/org/onap/aai/sa/searchdbabstraction/elasticsearch/dao/ElasticSearchHttpController.java
@@ -370,7 +370,8 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
try {
attachContent(conn, ElasticSearchPayloadTranslator.translateESPayload(sb.toString()));
} catch(IOException e) {
- throw new DocumentStoreOperationException("Error in translating Index payload to make it ES compliant.", e);
+ logger.error(SearchDbMsgs.INDEX_CREATE_FAILURE, e);
+ throw new DocumentStoreOperationException(e.getMessage(), e);
}
logger.debug("\ncreateTable(), Sending 'PUT' request to URL : " + conn.getURL());
@@ -422,7 +423,8 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
try {
attachContent(conn, ElasticSearchPayloadTranslator.translateESPayload(settingsAndMappings));
} catch(IOException e) {
- throw new DocumentStoreOperationException("Error in translating DynamicIndex payload to make it ES compliant.", e);
+ logger.error(SearchDbMsgs.INDEX_CREATE_FAILURE, e);
+ throw new DocumentStoreOperationException(e.getMessage());
}
handleResponse(conn, result);
@@ -571,12 +573,7 @@ public class ElasticSearchHttpController implements DocumentStoreInterface {
// conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Connection", "Close");
-
- try {
- attachContent(conn, ElasticSearchPayloadTranslator.translateESPayload(doc.getContentInJson()));
- } catch(IOException e) {
- throw new DocumentStoreOperationException("Error in translating Document payload to make it ES compliant.", e);
- }
+ attachContent(conn, doc.getContentInJson());
}
private DocumentOperationResult checkDocumentExistence(String indexName,
diff --git a/src/main/java/org/onap/aai/sa/searchdbabstraction/util/ElasticSearchPayloadTranslator.java b/src/main/java/org/onap/aai/sa/searchdbabstraction/util/ElasticSearchPayloadTranslator.java
index 2e97103..97f0ca1 100644
--- a/src/main/java/org/onap/aai/sa/searchdbabstraction/util/ElasticSearchPayloadTranslator.java
+++ b/src/main/java/org/onap/aai/sa/searchdbabstraction/util/ElasticSearchPayloadTranslator.java
@@ -23,14 +23,20 @@ package org.onap.aai.sa.searchdbabstraction.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.util.List;
+import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.json.JSONArray;
+import org.json.JSONException;
import org.json.JSONObject;
import org.onap.aai.cl.api.Logger;
import org.onap.aai.cl.eelf.LoggerFactory;
import org.onap.aai.sa.searchdbabstraction.logging.SearchDbMsgs;
+import com.jayway.jsonpath.DocumentContext;
+import com.jayway.jsonpath.JsonPath;
+
/**
* This class as the name suggests is to translate the payload of PUT & POST requests
@@ -52,8 +58,9 @@ public class ElasticSearchPayloadTranslator {
/**
- * Using String replacement to translate the payload to ES compatible version
- *
+ * 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
@@ -61,23 +68,33 @@ public class ElasticSearchPayloadTranslator {
public static String translateESPayload(String source) throws IOException {
logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY, "translateESPayload, method-params[ source=" + source + "]");
String pathToTranslationFile = CONFIG_DIRECTORY + File.separator + ES_PAYLOAD_TRANSLATION_FILE;
-
- String translatedPayload = source.replaceAll("\\s+", ""); // removing whitespaces
- JSONObject translationConfigPayload = new JSONObject(IOUtils.toString(
- new FileInputStream(new File(pathToTranslationFile)), "UTF-8"));
- JSONArray attrTranslations = translationConfigPayload.getJSONArray("attr-translations");
+ try {
+
+ JSONObject translationConfigPayload = new JSONObject(IOUtils.toString(
+ new FileInputStream(new File(pathToTranslationFile)), "UTF-8"));
+ JSONArray attrTranslations = translationConfigPayload.getJSONArray("attr-translations");
+ DocumentContext payloadToTranslate = JsonPath.parse(source);
- for(Object obj : attrTranslations) {
- JSONObject jsonObj = ((JSONObject)obj);
- String from = jsonObj.get("from").toString();
- String to = jsonObj.get("to").toString();
- if(translatedPayload.indexOf(from) > 0) {
- translatedPayload = translatedPayload.replaceAll(from, to);
+ for(Object obj : attrTranslations) {
+ JSONObject jsonObj = ((JSONObject) obj);
+ String query = jsonObj.get("query").toString();
+ JSONObject attrToUpdate = (JSONObject) jsonObj.get("update");
+ List<Map<String, Object>> filteredObjects = payloadToTranslate.read(query);
+ for(Map<String, Object> objMap : filteredObjects) {
+ objMap.putAll(attrToUpdate.toMap());
+ }
}
- }
-
- logger.info(SearchDbMsgs.PROCESS_PAYLOAD_QUERY, "Payload after translation: "+translatedPayload);
- return translatedPayload;
+
+ 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);
+ }
}
}