From a2ce7b199590c2cd5a35d57e3befda17d86406e1 Mon Sep 17 00:00:00 2001 From: Tal Levy Date: Tue, 27 Oct 2015 16:20:20 -0700 Subject: [PATCH] add tests / remove TODO --- .../src/main/java/org/elasticsearch/ingest/Data.java | 7 +++++-- .../test/java/org/elasticsearch/ingest/DataTests.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/plugins/ingest/src/main/java/org/elasticsearch/ingest/Data.java b/plugins/ingest/src/main/java/org/elasticsearch/ingest/Data.java index 6ff50cfff9f..690dad062bb 100644 --- a/plugins/ingest/src/main/java/org/elasticsearch/ingest/Data.java +++ b/plugins/ingest/src/main/java/org/elasticsearch/ingest/Data.java @@ -22,8 +22,10 @@ package org.elasticsearch.ingest; import org.elasticsearch.common.Strings; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import java.lang.reflect.Array; import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -45,7 +47,6 @@ public final class Data { this.document = document; } - // TODO(talevy): support elements of lists @SuppressWarnings("unchecked") public T getProperty(String path) { return (T) XContentMapValues.extractValue(path, document); @@ -68,7 +69,9 @@ public final class Data { Map inner = document; for (int i = 0; i < pathElements.length - 1; i++) { - inner.putIfAbsent(pathElements[i], new HashMap()); + if (!inner.containsKey(pathElements[i])) { + inner.put(pathElements[i], new HashMap()); + } inner = (HashMap) inner.get(pathElements[i]); } diff --git a/plugins/ingest/src/test/java/org/elasticsearch/ingest/DataTests.java b/plugins/ingest/src/test/java/org/elasticsearch/ingest/DataTests.java index 76d14a6e74a..bafc0c92356 100644 --- a/plugins/ingest/src/test/java/org/elasticsearch/ingest/DataTests.java +++ b/plugins/ingest/src/test/java/org/elasticsearch/ingest/DataTests.java @@ -58,4 +58,14 @@ public class DataTests extends ESTestCase { data.addField("a.b.c.d", "foo"); assertThat(data.getProperty("a.b.c.d"), equalTo("foo")); } + + public void testAddFieldOnExistingField() { + data.addField("foo", "newbar"); + assertThat(data.getProperty("foo"), equalTo("newbar")); + } + + public void testAddFieldOnExistingParent() { + data.addField("fizz.new", "bar"); + assertThat(data.getProperty("fizz.new"), equalTo("bar")); + } }