Skip to content
Open
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,12 @@ public HTTPRestResponse subscribeToTask(ServerCallContext context, String tenant
*/
public HTTPRestResponse getTask(ServerCallContext context, String tenant, String taskId, @Nullable Integer historyLength) {
try {
TaskQueryParams params = new TaskQueryParams(taskId, historyLength, tenant);
TaskQueryParams params;
try {
params = new TaskQueryParams(taskId, historyLength, tenant);
} catch (IllegalArgumentException e) {
throw new InvalidParamsError(e.getMessage());
}
Task task = requestHandler.onGetTask(params, context);
if (task != null) {
return createSuccessResponse(200, io.a2a.grpc.Task.newBuilder(ProtoUtils.ToProto.task(task)));
Expand Down Expand Up @@ -648,6 +653,12 @@ private HTTPRestResponse createErrorResponse(int statusCode, A2AError error) {
return new HTTPRestResponse(statusCode, APPLICATION_PROBLEM_JSON, jsonBody);
}

private HTTPRestResponse createProblemErrorResponse(A2AError error) {
int statusCode = mapErrorToHttpStatus(error);
String jsonBody = new HTTPRestErrorResponse(error).toJson();
return new HTTPRestResponse(statusCode, "application/problem+json", jsonBody);
}

private HTTPRestStreamingResponse createStreamingResponse(Flow.Publisher<StreamingEventKind> publisher) {
return new HTTPRestStreamingResponse(convertToSendStreamingMessageResponse(publisher));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,17 @@ public void testGetTaskNotFound() {
Assertions.assertTrue(response.getBody().contains("TaskNotFoundError"));
}

@Test
public void testGetTaskNegativeHistoryLengthReturns422() {
RestHandler handler = new RestHandler(CARD, requestHandler, internalExecutor);

RestHandler.HTTPRestResponse response = handler.getTask(callContext, "", MINIMAL_TASK.id(), -1);

Assertions.assertEquals(422, response.getStatusCode());
Assertions.assertEquals("application/problem+json", response.getContentType());
Assertions.assertTrue(response.getBody().contains("InvalidParamsError"));
}

@Test
public void testListTasksStatusWireString() {
RestHandler handler = new RestHandler(CARD, requestHandler, internalExecutor);
Expand Down