@Override
public void setResponse(final InvalidTaskException invalidTaskException)
{
if (invalidTaskException == null) {
throw new IllegalArgumentException();
}
incrementResponseCount(true);
LOG.error("Task data is invalid for {}, returning status {}",
taskMessage.getTaskId(), TaskStatus.INVALID_TASK, invalidTaskException);
final String taskClassifier = MoreObjects.firstNonNull(taskMessage.getTaskClassifier(), "");
final String invalidTaskExceptionMessage = invalidTaskException.getMessage();
final byte[] taskData
= invalidTaskExceptionMessage == null
? new byte[]{} : invalidTaskExceptionMessage.getBytes(StandardCharsets.UTF_8);
final Map<String, byte[]> context = MoreObjects.firstNonNull(
taskMessage.getContext(),
Collections.<String, byte[]>emptyMap());
final TaskMessage invalidResponse = new TaskMessage(
MoreObjects.firstNonNull(taskMessage.getTaskId(), ""),
taskClassifier,
taskMessage.getTaskApiVersion(),
taskData,
TaskStatus.INVALID_TASK,
context,
workerFactory.getInvalidTaskQueue(),
taskMessage.getTracking(),
new TaskSourceInfo(getWorkerName(taskClassifier), getWorkerVersion()));
completeResponse(invalidResponse);
}