|
4 | 4 | import com.codahale.metrics.Metered; |
5 | 5 | import com.codahale.metrics.MetricRegistry; |
6 | 6 | import com.codahale.metrics.Timer; |
| 7 | +import com.google.common.base.Strings; |
7 | 8 | import com.google.common.net.HttpHeaders; |
8 | 9 | import com.google.common.net.MediaType; |
9 | 10 | import java.io.File; |
|
31 | 32 | import java.util.Arrays; |
32 | 33 | import java.util.HashMap; |
33 | 34 | import java.util.Optional; |
| 35 | +import java.util.UUID; |
34 | 36 | import org.apache.commons.lang3.exception.ExceptionUtils; |
35 | 37 |
|
36 | 38 | /** |
|
39 | 41 | */ |
40 | 42 | public class OpenAPI3RouteBuilder extends AbstractRouterBuilderImpl { |
41 | 43 |
|
| 44 | + private static final String HEADER_X_REQUEST_ID = "X-Request-ID"; |
42 | 45 | private static final String FAIL_SUFFIX = ".fail"; |
43 | 46 | private RESTService[] mServices; |
44 | 47 | private File mOpenAPI3File; |
45 | 48 | private DeliveryOptions mDeliveryOptions; |
46 | 49 | private boolean mSecurityEnable = true; |
47 | 50 | private HashMap<String, Metered> mMetrics = new HashMap<>(); |
48 | 51 | private MetricRegistry mMetricRegistry; |
49 | | - |
| 52 | + private String mRequestIdHeaderName = HEADER_X_REQUEST_ID; |
| 53 | + |
50 | 54 | public File getOpenAPI3File() { |
51 | 55 | return mOpenAPI3File; |
52 | 56 | } |
@@ -83,6 +87,15 @@ public void process(RoutingContext pRequestContext, String pServiceUniqueId) { |
83 | 87 |
|
84 | 88 | Timer.Context timerCtx = ((Timer) getMetrics().get(pServiceUniqueId)).time(); |
85 | 89 |
|
| 90 | + String requestId = pRequestContext.request().getHeader(getRequestIdHeaderName()); |
| 91 | + |
| 92 | + if (Strings.isNullOrEmpty(requestId)) { |
| 93 | + requestId = UUID.randomUUID().toString(); |
| 94 | + pRequestContext.request().headers().add(getRequestIdHeaderName(), UUID.randomUUID().toString()); |
| 95 | + } |
| 96 | + |
| 97 | + pRequestContext.response().putHeader(getRequestIdHeaderName(), requestId); |
| 98 | + |
86 | 99 | getVertx() |
87 | 100 | .eventBus() |
88 | 101 | .send(pServiceUniqueId, |
@@ -320,4 +333,12 @@ public void setMetricRegistry(MetricRegistry pMetricRegistry) { |
320 | 333 | this.mMetricRegistry = pMetricRegistry; |
321 | 334 | } |
322 | 335 |
|
| 336 | + public String getRequestIdHeaderName() { |
| 337 | + return mRequestIdHeaderName; |
| 338 | + } |
| 339 | + |
| 340 | + public void setRequestIdHeaderName(String pRequestIdHeaderName) { |
| 341 | + this.mRequestIdHeaderName = pRequestIdHeaderName; |
| 342 | + } |
| 343 | + |
323 | 344 | } |
0 commit comments