Skip to content

Commit 09b3c7f

Browse files
sabi0rjernst
authored andcommitted
Do not create String instances in 'Strings' methods accepting StringBuilder (#22907)
1 parent 12b143e commit 09b3c7f

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

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

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.elasticsearch.common.io.FastStringReader;
2626
import org.elasticsearch.common.util.CollectionUtils;
2727
import org.elasticsearch.common.xcontent.ToXContent;
28-
import org.elasticsearch.common.xcontent.ToXContentObject;
2928
import org.elasticsearch.common.xcontent.XContentBuilder;
3029
import org.elasticsearch.common.xcontent.json.JsonXContent;
3130

@@ -712,18 +711,19 @@ public static Set<String> commaDelimitedListToSet(String str) {
712711
* @return the delimited String
713712
*/
714713
public static String collectionToDelimitedString(Iterable<?> coll, String delim, String prefix, String suffix) {
715-
return collectionToDelimitedString(coll, delim, prefix, suffix, new StringBuilder());
714+
StringBuilder sb = new StringBuilder();
715+
collectionToDelimitedString(coll, delim, prefix, suffix, sb);
716+
return sb.toString();
716717
}
717718

718-
public static String collectionToDelimitedString(Iterable<?> coll, String delim, String prefix, String suffix, StringBuilder sb) {
719+
public static void collectionToDelimitedString(Iterable<?> coll, String delim, String prefix, String suffix, StringBuilder sb) {
719720
Iterator<?> it = coll.iterator();
720721
while (it.hasNext()) {
721722
sb.append(prefix).append(it.next()).append(suffix);
722723
if (it.hasNext()) {
723724
sb.append(delim);
724725
}
725726
}
726-
return sb.toString();
727727
}
728728

729729
/**
@@ -758,20 +758,21 @@ public static String collectionToCommaDelimitedString(Iterable<?> coll) {
758758
* @return the delimited String
759759
*/
760760
public static String arrayToDelimitedString(Object[] arr, String delim) {
761-
return arrayToDelimitedString(arr, delim, new StringBuilder());
761+
StringBuilder sb = new StringBuilder();
762+
arrayToDelimitedString(arr, delim, sb);
763+
return sb.toString();
762764
}
763765

764-
public static String arrayToDelimitedString(Object[] arr, String delim, StringBuilder sb) {
766+
public static void arrayToDelimitedString(Object[] arr, String delim, StringBuilder sb) {
765767
if (isEmpty(arr)) {
766-
return "";
768+
return;
767769
}
768770
for (int i = 0; i < arr.length; i++) {
769771
if (i > 0) {
770772
sb.append(delim);
771773
}
772774
sb.append(arr[i]);
773775
}
774-
return sb.toString();
775776
}
776777

777778
/**

modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpServerTransportTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,12 @@ public void shutdown() throws Exception {
109109
public void testCorsConfig() {
110110
final Set<String> methods = new HashSet<>(Arrays.asList("get", "options", "post"));
111111
final Set<String> headers = new HashSet<>(Arrays.asList("Content-Type", "Content-Length"));
112-
final String suffix = randomBoolean() ? " " : ""; // sometimes have a leading whitespace between comma delimited elements
112+
final String prefix = randomBoolean() ? " " : ""; // sometimes have a leading whitespace between comma delimited elements
113113
final Settings settings = Settings.builder()
114114
.put(SETTING_CORS_ENABLED.getKey(), true)
115115
.put(SETTING_CORS_ALLOW_ORIGIN.getKey(), "*")
116-
.put(SETTING_CORS_ALLOW_METHODS.getKey(), collectionToDelimitedString(methods, ",", suffix, ""))
117-
.put(SETTING_CORS_ALLOW_HEADERS.getKey(), collectionToDelimitedString(headers, ",", suffix, ""))
116+
.put(SETTING_CORS_ALLOW_METHODS.getKey(), collectionToDelimitedString(methods, ",", prefix, ""))
117+
.put(SETTING_CORS_ALLOW_HEADERS.getKey(), collectionToDelimitedString(headers, ",", prefix, ""))
118118
.put(SETTING_CORS_ALLOW_CREDENTIALS.getKey(), true)
119119
.build();
120120
final Netty4CorsConfig corsConfig = Netty4HttpServerTransport.buildCorsConfig(settings);

0 commit comments

Comments
 (0)