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; + } + }