/
Stringifier.java
69 lines (56 loc) · 2.09 KB
/
Stringifier.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
* Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.glassfish.jersey.examples.httptrace;
import java.util.List;
import java.util.Map;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.Request;
import org.glassfish.jersey.server.ContainerRequest;
/**
* Request stringifier.
*
* @author Marek Potociar
*/
public class Stringifier {
private Stringifier() {
}
public static String stringify(ContainerRequest request) {
StringBuilder buffer = new StringBuilder();
printRequestLine(buffer, request);
printPrefixedHeaders(buffer, request.getHeaders());
if (request.hasEntity()) {
buffer.append(request.readEntity(String.class)).append("\n");
}
return buffer.toString();
}
private static void printRequestLine(StringBuilder buffer, ContainerRequest request) {
buffer.append(request.getMethod()).append(" ").append(request.getUriInfo().getRequestUri().toASCIIString()).append("\n");
}
private static void printPrefixedHeaders(StringBuilder buffer, Map<String, List<String>> headers) {
for (Map.Entry<String, List<String>> e : headers.entrySet()) {
List<String> val = e.getValue();
String header = e.getKey();
if (val.size() == 1) {
buffer.append(header).append(": ").append(val.get(0)).append("\n");
} else {
StringBuilder sb = new StringBuilder();
boolean add = false;
for (String s : val) {
if (add) {
sb.append(',');
}
add = true;
sb.append(s);
}
buffer.append(header).append(": ").append(sb.toString()).append("\n");
}
}
}
}