Skip to content

Commit 1623857

Browse files
committed
Never return null from Strings.tokenizeToStringArray (#28224)
This method has a different contract than all the other methods in this class, returning null instead of an empty array when receiving a null input. While switching over some methods from delimitedListToStringArray to this method tokenizeToStringArray, this resulted in unexpected nulls in some places of our code.
1 parent d819f55 commit 1623857

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

core/src/main/java/org/elasticsearch/common/Strings.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,9 @@ public static String[] split(String toSplit, String delimiter) {
508508
* @see #delimitedListToStringArray
509509
*/
510510
public static String[] tokenizeToStringArray(String str, String delimiters) {
511+
if (str == null) {
512+
return EMPTY_ARRAY;
513+
}
511514
return tokenizeToStringArray(str, delimiters, true, true);
512515
}
513516

core/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/FilterAllocationDeciderTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,14 @@ public void testInvalidIPFilter() {
194194
assertEquals("invalid IP address [" + invalidIP + "] for [" + filterSetting.getKey() + ipKey + "]", e.getMessage());
195195
}
196196

197+
public void testNull() {
198+
Setting<String> filterSetting = randomFrom(IndexMetaData.INDEX_ROUTING_REQUIRE_GROUP_SETTING,
199+
IndexMetaData.INDEX_ROUTING_INCLUDE_GROUP_SETTING, IndexMetaData.INDEX_ROUTING_EXCLUDE_GROUP_SETTING);
200+
201+
IndexMetaData.builder("test")
202+
.settings(settings(Version.CURRENT).putNull(filterSetting.getKey() + "name")).numberOfShards(2).numberOfReplicas(0).build();
203+
}
204+
197205
public void testWildcardIPFilter() {
198206
String ipKey = randomFrom("_ip", "_host_ip", "_publish_ip");
199207
Setting<String> filterSetting = randomFrom(IndexMetaData.INDEX_ROUTING_REQUIRE_GROUP_SETTING,

0 commit comments

Comments
 (0)