You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2020/07/04 07:49:16 UTC
[httpcomponents-client] branch master updated:
MultipartEntityBuilder#generateBoundary optimization (#233)
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git
The following commit(s) were added to refs/heads/master by this push:
new ec82acc MultipartEntityBuilder#generateBoundary optimization (#233)
ec82acc is described below
commit ec82acc8588edfbcebb90667cfc753bc7bf3e00c
Author: slisaasquatch <sl...@users.noreply.github.com>
AuthorDate: Sat Jul 4 00:49:07 2020 -0700
MultipartEntityBuilder#generateBoundary optimization (#233)
---
.../client5/http/entity/mime/MultipartEntityBuilder.java | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/entity/mime/MultipartEntityBuilder.java b/httpclient5/src/main/java/org/apache/hc/client5/http/entity/mime/MultipartEntityBuilder.java
index 278aade..54135c1 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/entity/mime/MultipartEntityBuilder.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/entity/mime/MultipartEntityBuilder.java
@@ -29,12 +29,13 @@ package org.apache.hc.client5.http.entity.mime;
import java.io.File;
import java.io.InputStream;
+import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
import org.apache.hc.core5.http.ContentType;
import org.apache.hc.core5.http.HttpEntity;
@@ -173,12 +174,13 @@ public class MultipartEntityBuilder {
}
private String generateBoundary() {
- final StringBuilder buffer = new StringBuilder();
- final Random rand = new Random();
- final int count = rand.nextInt(11) + 30; // a random size from 30 to 40
- for (int i = 0; i < count; i++) {
- buffer.append(MULTIPART_CHARS[rand.nextInt(MULTIPART_CHARS.length)]);
+ final ThreadLocalRandom rand = ThreadLocalRandom.current();
+ final int count = rand.nextInt(30, 41); // a random size from 30 to 40
+ final CharBuffer buffer = CharBuffer.allocate(count);
+ while (buffer.hasRemaining()) {
+ buffer.put(MULTIPART_CHARS[rand.nextInt(MULTIPART_CHARS.length)]);
}
+ buffer.flip();
return buffer.toString();
}