Return X-TransactionId header in REST response
[aai/gizmo.git] / src / main / java / org / onap / crud / service / JaxrsEchoService.java
index dc01435..671b2fd 100644 (file)
@@ -28,6 +28,7 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.ResponseBuilder;
 import javax.ws.rs.core.Response.Status;
 import javax.ws.rs.core.UriInfo;
 import org.onap.aai.cl.api.Logger;
@@ -39,23 +40,29 @@ import org.springframework.stereotype.Component;
 @Path("/services/gizmo/v1/echo-service/")
 public class JaxrsEchoService {
 
-  private static Logger logger = LoggerFactory.getInstance()
-      .getLogger(JaxrsEchoService.class.getName());
-  private static Logger auditLogger = LoggerFactory.getInstance()
-      .getAuditLogger(JaxrsEchoService.class.getName());
-
-  @GET
-  @Path("echo/{input}")
-  @Produces("text/plain")
-  public String ping(@PathParam("input") String input,
-                     @Context HttpHeaders headers,
-                     @Context UriInfo info,
-                     @Context HttpServletRequest req) {
-
-    LoggingUtil.initMdcContext(req, headers);
-    LoggingUtil.logRestRequest(logger, auditLogger, req, Response.status(Status.OK)
-        .entity("OK").build());
-
-    return "Hello, " + input + ".";
-  }
-}
\ No newline at end of file
+    private static Logger logger = LoggerFactory.getInstance().getLogger(JaxrsEchoService.class.getName());
+    private static Logger auditLogger = LoggerFactory.getInstance().getAuditLogger(JaxrsEchoService.class.getName());
+
+    public static final String TRANSACTIONID_HEADER = "X-TransactionId";
+
+    @GET
+    @Path("echo/{input}")
+    @Produces("text/plain")
+    public Response ping(@PathParam("input") String input, @Context HttpHeaders headers, @Context UriInfo info,
+            @Context HttpServletRequest req) {
+
+        LoggingUtil.initMdcContext(req, headers);
+
+        ResponseBuilder responseBuilder = Response.status(Status.OK).entity("Hello, " + input + ".");
+
+        String txId = headers.getHeaderString(TRANSACTIONID_HEADER);
+        if (txId != null) {
+            responseBuilder.header(TRANSACTIONID_HEADER, txId);
+        }
+
+        Response response = responseBuilder.build();
+        LoggingUtil.logRestRequest(logger, auditLogger, req, response);
+
+        return response;
+    }
+}