|
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