diff --git a/pom.xml b/pom.xml
index 0f8efa5..6f0c96d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
in.erail
api-framework
- 2.4.4
+ 2.4.5
jar
@@ -183,7 +183,7 @@
in.erail
glue
- 2.4.3
+ 2.4.5
org.mockito
diff --git a/src/main/java/in/erail/route/OpenAPI3RouteBuilder.java b/src/main/java/in/erail/route/OpenAPI3RouteBuilder.java
index acaa25b..720a356 100644
--- a/src/main/java/in/erail/route/OpenAPI3RouteBuilder.java
+++ b/src/main/java/in/erail/route/OpenAPI3RouteBuilder.java
@@ -4,6 +4,7 @@
import com.codahale.metrics.Metered;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
+import com.google.common.base.Strings;
import com.google.common.net.HttpHeaders;
import com.google.common.net.MediaType;
import java.io.File;
@@ -31,6 +32,7 @@
import java.util.Arrays;
import java.util.HashMap;
import java.util.Optional;
+import java.util.UUID;
import org.apache.commons.lang3.exception.ExceptionUtils;
/**
@@ -39,6 +41,7 @@
*/
public class OpenAPI3RouteBuilder extends AbstractRouterBuilderImpl {
+ private static final String HEADER_X_REQUEST_ID = "X-Request-ID";
private static final String FAIL_SUFFIX = ".fail";
private RESTService[] mServices;
private File mOpenAPI3File;
@@ -46,7 +49,8 @@ public class OpenAPI3RouteBuilder extends AbstractRouterBuilderImpl {
private boolean mSecurityEnable = true;
private HashMap mMetrics = new HashMap<>();
private MetricRegistry mMetricRegistry;
-
+ private String mRequestIdHeaderName = HEADER_X_REQUEST_ID;
+
public File getOpenAPI3File() {
return mOpenAPI3File;
}
@@ -83,6 +87,15 @@ public void process(RoutingContext pRequestContext, String pServiceUniqueId) {
Timer.Context timerCtx = ((Timer) getMetrics().get(pServiceUniqueId)).time();
+ String requestId = pRequestContext.request().getHeader(getRequestIdHeaderName());
+
+ if (Strings.isNullOrEmpty(requestId)) {
+ requestId = UUID.randomUUID().toString();
+ pRequestContext.request().headers().add(getRequestIdHeaderName(), UUID.randomUUID().toString());
+ }
+
+ pRequestContext.response().putHeader(getRequestIdHeaderName(), requestId);
+
getVertx()
.eventBus()
.send(pServiceUniqueId,
@@ -320,4 +333,12 @@ public void setMetricRegistry(MetricRegistry pMetricRegistry) {
this.mMetricRegistry = pMetricRegistry;
}
+ public String getRequestIdHeaderName() {
+ return mRequestIdHeaderName;
+ }
+
+ public void setRequestIdHeaderName(String pRequestIdHeaderName) {
+ this.mRequestIdHeaderName = pRequestIdHeaderName;
+ }
+
}