Skip to content

Commit afef4fe

Browse files
authored
servlet: extract ServletServerStream.serializeHeaders() method (#12299)
1 parent 695014a commit afef4fe

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

servlet/src/main/java/io/grpc/servlet/ServletServerStream.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import java.util.Collections;
4343
import java.util.HashMap;
4444
import java.util.Map;
45+
import java.util.function.BiConsumer;
4546
import java.util.function.Supplier;
4647
import java.util.logging.Logger;
4748
import javax.annotation.Nullable;
@@ -122,9 +123,13 @@ private void writeHeadersToServletResponse(Metadata metadata) {
122123
resp.setStatus(HttpServletResponse.SC_OK);
123124
resp.setContentType(CONTENT_TYPE_GRPC);
124125

126+
serializeHeaders(metadata, resp::addHeader);
127+
}
128+
129+
private static void serializeHeaders(Metadata metadata, BiConsumer<String, String> consumer) {
125130
byte[][] serializedHeaders = TransportFrameUtil.toHttp2Headers(metadata);
126131
for (int i = 0; i < serializedHeaders.length; i += 2) {
127-
resp.addHeader(
132+
consumer.accept(
128133
new String(serializedHeaders[i], StandardCharsets.US_ASCII),
129134
new String(serializedHeaders[i + 1], StandardCharsets.US_ASCII));
130135
}
@@ -277,13 +282,8 @@ public void writeTrailers(Metadata trailers, boolean headersSent, Status status)
277282
if (!headersSent) {
278283
writeHeadersToServletResponse(trailers);
279284
} else {
280-
byte[][] serializedHeaders = TransportFrameUtil.toHttp2Headers(trailers);
281-
for (int i = 0; i < serializedHeaders.length; i += 2) {
282-
String key = new String(serializedHeaders[i], StandardCharsets.US_ASCII);
283-
String newValue = new String(serializedHeaders[i + 1], StandardCharsets.US_ASCII);
284-
trailerSupplier.get().computeIfPresent(key, (k, v) -> v + "," + newValue);
285-
trailerSupplier.get().putIfAbsent(key, newValue);
286-
}
285+
serializeHeaders(trailers,
286+
(k, v) -> trailerSupplier.get().merge(k, v, (oldV, newV) -> oldV + "," + newV));
287287
}
288288

289289
writer.complete();

0 commit comments

Comments
 (0)