|
2 | 2 |
|
3 | 3 | import static com.sap.hcp.cf.logging.common.customfields.CustomField.customField;
|
4 | 4 | import static com.sap.hcp.cf.logging.common.request.HttpHeaders.W3C_TRACEPARENT;
|
5 |
| -import static java.util.Optional.ofNullable; |
6 | 5 |
|
7 | 6 | import java.util.UUID;
|
8 |
| -import java.util.function.Predicate; |
9 | 7 |
|
10 | 8 | import javax.servlet.http.HttpServletRequest;
|
11 | 9 | import javax.servlet.http.HttpServletResponse;
|
|
27 | 25 | public class CorrelationIdFilter extends AbstractLoggingFilter {
|
28 | 26 |
|
29 | 27 | private static final Logger LOG = LoggerFactory.getLogger(CorrelationIdFilter.class);
|
30 |
| - private HttpHeader correlationHeader; |
31 |
| - private HttpHeader traceparentHeader; |
| 28 | + private final HttpHeader correlationHeader; |
| 29 | + private final HttpHeader traceparentHeader; |
32 | 30 |
|
33 | 31 | public CorrelationIdFilter() {
|
34 | 32 | this(HttpHeaders.CORRELATION_ID);
|
@@ -65,23 +63,26 @@ private String determineCorrelationId(HttpServletRequest request) {
|
65 | 63 | return correlationId;
|
66 | 64 | }
|
67 | 65 |
|
68 |
| - private boolean isBlankOrDefault(String value) { |
| 66 | + private static boolean isBlankOrDefault(String value) { |
69 | 67 | return value == null || value.isEmpty() || value.equals(Defaults.UNKNOWN);
|
70 | 68 | }
|
71 | 69 |
|
72 | 70 | private String getCorrelationIdFromTraceparent(HttpServletRequest request) {
|
73 | 71 | String traceparent = HttpHeaderUtilities.getHeaderValue(request, traceparentHeader);
|
74 |
| - return ofNullable(traceparent).filter(not(this::isBlankOrDefault)).map(this::parseTraceparent).orElse( |
75 |
| - null); |
| 72 | + return isBlankOrDefault(traceparent) ? null : parseTraceparent(traceparent); |
76 | 73 | }
|
77 | 74 |
|
78 |
| - private <T> Predicate<T> not(Predicate<T> p) { |
79 |
| - return p.negate(); |
80 |
| - } |
81 |
| - |
82 |
| - private String parseTraceparent(String value) { |
83 |
| - String[] tokens = value.split("-"); |
84 |
| - return tokens.length >= 2 ? tokens[1] : null; |
| 75 | + private static String parseTraceparent(String value) { |
| 76 | + int idx1 = value.indexOf('-'); |
| 77 | + if (idx1 != -1) { |
| 78 | + ++idx1; |
| 79 | + int idx2 = value.indexOf('-', idx1); |
| 80 | + if (idx2 != -1) { |
| 81 | + // return string between first and second '-'. |
| 82 | + return value.substring(idx1, idx2); |
| 83 | + } |
| 84 | + } |
| 85 | + return null; |
85 | 86 | }
|
86 | 87 |
|
87 | 88 | private void addCorrelationIdHeader(HttpServletResponse response, String correlationId) {
|
|
0 commit comments