Skip to content

Commit

Permalink
Added Location header to run creation (#701)
Browse files Browse the repository at this point in the history
Fix for #699

Signed-off-by: Nicolas Kijak <nick.kijak@pngaming.com>
  • Loading branch information
nkijak authored and wslulciuc committed Jan 16, 2020
1 parent eb1a936 commit c979f9a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
17 changes: 14 additions & 3 deletions src/main/java/marquez/api/JobResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
package marquez.api;

import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
import static javax.ws.rs.core.Response.Status.CREATED;

import com.codahale.metrics.annotation.ExceptionMetered;
import com.codahale.metrics.annotation.ResponseMetered;
import com.codahale.metrics.annotation.Timed;
import java.net.URI;
import java.util.List;
import java.util.UUID;
import javax.validation.Valid;
Expand All @@ -33,7 +33,9 @@
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import marquez.api.exceptions.JobNotFoundException;
Expand Down Expand Up @@ -146,7 +148,8 @@ public Response list(
public Response createRun(
@PathParam("namespace") String namespaceString,
@PathParam("job") String jobString,
@Valid RunRequest request)
@Valid RunRequest request,
@Context UriInfo uriInfo)
throws MarquezServiceException {
log.debug("Request: {}", request);
final NamespaceName namespaceName = NamespaceName.of(namespaceString);
Expand All @@ -158,7 +161,15 @@ public Response createRun(
final Run run = jobService.createRun(namespaceName, jobName, runMeta);
final RunResponse response = Mapper.toRunResponse(run);
log.debug("Response: {}", response);
return Response.status(CREATED).entity(response).build();
final URI runLocation =
uriInfo
.getBaseUriBuilder()
.clone()
.path(this.getClass())
.path(this.getClass(), "getRun")
.build(run.getId());

return Response.created(runLocation).entity(response).build();
}

@Timed
Expand Down
2 changes: 2 additions & 0 deletions src/test/java/marquez/MarquezAppIntegrationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,8 @@ public void testApp_createRunAndMarkAsComplete() {
final Map<String, Object> run = response0.readEntity(Map.class);
final String runId = (String) run.get("runId");

assertThat(response0.getHeaderString("Location")).isEqualTo(baseUri + "/jobs/runs/" + runId);

final Response response1 =
APP.client()
.target(baseUri + "/jobs/runs/{id}/start")
Expand Down

0 comments on commit c979f9a

Please sign in to comment.