Skip to content

Commit ec66147

Browse files
author
Ali Beyad
committed
Make trimming the default for Strings#splitStringsToSet
1 parent 5b5c979 commit ec66147

3 files changed

Lines changed: 14 additions & 27 deletions

File tree

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

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -502,32 +502,26 @@ public static String[] toStringArray(Collection<String> collection) {
502502
}
503503

504504
public static Set<String> splitStringByCommaToSet(final String s) {
505-
return splitStringToSet(s, ',', false);
505+
return splitStringToSet(s, ',');
506506
}
507507

508508
public static String[] splitStringByCommaToArray(final String s) {
509509
if (s == null || s.isEmpty()) return Strings.EMPTY_ARRAY;
510510
else return s.split(",");
511511
}
512512

513-
public static Set<String> splitStringByCommaAndTrim(final String s) {
514-
return splitStringToSet(s, ',', true);
515-
}
516-
517513
/**
518514
* A convenience method for splitting a delimited string into
519-
* a set, while having the option to trim the whitespace after
520-
* the delimiter. Trimming allows splitting strings like "A, B, C"
515+
* a set, and also trimming any whitespace found after the
516+
* delimiter. Trimming allows splitting strings like "A, B, C"
521517
* into ["A","B","C"] instead of ["A", " B", " C"]. The trimming
522-
* will *only* apply if the delimiter is not a whitespace character,
523-
* even if the option is set to true.
518+
* will *only* apply if the delimiter is not a whitespace character.
524519
*
525520
* @param s the string to split
526521
* @param c the delimiter to split on
527-
* @param trim whether or not to trim the whitespace after the delimiter
528522
* @return the set of split strings
529523
*/
530-
public static Set<String> splitStringToSet(final String s, final char c, final boolean trim) {
524+
public static Set<String> splitStringToSet(final String s, final char c) {
531525
if (s == null || s.isEmpty()) {
532526
return Collections.emptySet();
533527
}
@@ -539,13 +533,13 @@ public static Set<String> splitStringToSet(final String s, final char c, final b
539533
}
540534
}
541535
final Set<String> result = new HashSet<>(count);
542-
final boolean doTrim = trim & Character.isWhitespace(c) == false;
536+
final boolean doTrim = Character.isWhitespace(c) == false;
543537
final int len = chars.length;
544538
int start = 0; // starting index in chars of the current substring.
545539
int pos = 0; // current index in chars.
546540
for (; pos < len; pos++) {
547-
// if the option is set and the delimiter is a non-whitespace character, and we
548-
// have whitespace after the comma, ignore the whitespace
541+
// if the delimiter is a non-whitespace character and we
542+
// have whitespace after the comma, skip over the whitespace
549543
if (doTrim && start == pos && Character.isWhitespace(chars[pos])) {
550544
start++;
551545
continue;

core/src/test/java/org/elasticsearch/common/StringsTests.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,9 @@ public void testSplitStringToSet() {
7979
assertEquals(Strings.splitStringByCommaToSet(null), Sets.newHashSet());
8080
assertEquals(Strings.splitStringByCommaToSet(""), Sets.newHashSet());
8181
assertEquals(Strings.splitStringByCommaToSet("a,b,c"), Sets.newHashSet("a","b","c"));
82-
assertEquals(Strings.splitStringByCommaToSet("a, b, c"), Sets.newHashSet("a"," b"," c"));
83-
assertEquals(Strings.splitStringByCommaToSet(" a , b,c"), Sets.newHashSet(" a "," b","c"));
84-
assertEquals(Strings.splitStringByCommaToSet("aa, bb, cc"), Sets.newHashSet("aa"," bb"," cc"));
85-
86-
assertEquals(Strings.splitStringByCommaAndTrim(null), Sets.newHashSet());
87-
assertEquals(Strings.splitStringByCommaAndTrim(""), Sets.newHashSet());
88-
assertEquals(Strings.splitStringByCommaAndTrim("a,b,c"), Sets.newHashSet("a","b","c"));
89-
assertEquals(Strings.splitStringByCommaAndTrim("a, b, c"), Sets.newHashSet("a","b","c"));
90-
assertEquals(Strings.splitStringByCommaAndTrim(" a , b, c"), Sets.newHashSet("a ","b","c"));
91-
assertEquals(Strings.splitStringByCommaAndTrim("aa, bb, cc"), Sets.newHashSet("aa","bb","cc"));
92-
assertEquals(Strings.splitStringByCommaAndTrim(" a "), Sets.newHashSet("a "));
82+
assertEquals(Strings.splitStringByCommaToSet("a, b, c"), Sets.newHashSet("a","b","c"));
83+
assertEquals(Strings.splitStringByCommaToSet(" a , b, c"), Sets.newHashSet("a ","b","c"));
84+
assertEquals(Strings.splitStringByCommaToSet("aa, bb, cc"), Sets.newHashSet("aa","bb","cc"));
85+
assertEquals(Strings.splitStringByCommaToSet(" a "), Sets.newHashSet("a "));
9386
}
9487
}

modules/transport-netty3/src/main/java/org/elasticsearch/http/netty3/Netty3HttpServerTransport.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,10 +392,10 @@ private Netty3CorsConfig buildCorsConfig(Settings settings) {
392392
if (SETTING_CORS_ALLOW_CREDENTIALS.get(settings)) {
393393
builder.allowCredentials();
394394
}
395-
Set<String> strMethods = Strings.splitStringByCommaAndTrim(SETTING_CORS_ALLOW_METHODS.get(settings));
395+
Set<String> strMethods = Strings.splitStringByCommaToSet(SETTING_CORS_ALLOW_METHODS.get(settings));
396396
return builder.allowedRequestMethods(strMethods.stream().map(HttpMethod::valueOf).collect(Collectors.toSet()))
397397
.maxAge(SETTING_CORS_MAX_AGE.get(settings))
398-
.allowedRequestHeaders(Strings.splitStringByCommaAndTrim(SETTING_CORS_ALLOW_HEADERS.get(settings)))
398+
.allowedRequestHeaders(Strings.splitStringByCommaToSet(SETTING_CORS_ALLOW_HEADERS.get(settings)))
399399
.shortCircuit()
400400
.build();
401401
}

0 commit comments

Comments
 (0)