Github user mattyb149 commented on a diff in the pull request:
https://github.com/apache/nifi/pull/2760#discussion_r193145047
--- Diff:
nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/PutElasticsearchHttp.java
---
@@ -288,42 +290,23 @@ public void onTrigger(final ProcessContext context,
final ProcessSession session
session.read(file, in -> {
json.append(IOUtils.toString(in, charset).replace("\r\n",
" ").replace('\n', ' ').replace('\r', ' '));
});
- if (indexOp.equalsIgnoreCase("index")) {
- sb.append("{\"index\": { \"_index\": \"");
- sb.append(index);
- sb.append("\", \"_type\": \"");
- sb.append(docType);
- sb.append("\"");
- if (!StringUtils.isEmpty(id)) {
- sb.append(", \"_id\": \"");
- sb.append(id);
- sb.append("\"");
- }
- sb.append("}}\n");
- sb.append(json);
- sb.append("\n");
- } else if (indexOp.equalsIgnoreCase("upsert") ||
indexOp.equalsIgnoreCase("update")) {
- sb.append("{\"update\": { \"_index\": \"");
- sb.append(index);
- sb.append("\", \"_type\": \"");
- sb.append(docType);
- sb.append("\", \"_id\": \"");
- sb.append(id);
- sb.append("\" }\n");
- sb.append("{\"doc\": ");
- sb.append(json);
- sb.append(", \"doc_as_upsert\": ");
- sb.append(indexOp.equalsIgnoreCase("upsert"));
- sb.append(" }\n");
- } else if (indexOp.equalsIgnoreCase("delete")) {
- sb.append("{\"delete\": { \"_index\": \"");
- sb.append(index);
- sb.append("\", \"_type\": \"");
- sb.append(docType);
- sb.append("\", \"_id\": \"");
- sb.append(id);
- sb.append("\" }\n");
+
+ String jsonString = json.toString();
+
+ // Ensure the JSON body is well-formed
+ try {
--- End diff --
will change to static. A generally available one would be good, just need
to find the right place (like a utility JAR) and make sure it doesn't interfere
with other bundles using it (like if they need their own Jackson or don't want
all the Jackson dependencies when they resolve the utility JAR)
---