private TaskMessage createResponseMessage(final boolean includeTaskContext, final WorkerResponse response)
{
final Map<String, byte[]> responseContext = createFullResponseContext(includeTaskContext, response.getContext());
final String responseMessageType = response.getMessageType();
final TrackingInfo trackingInfo;
if ("".equals(response.getTrackTo())) {
trackingInfo = taskMessage.getTracking();
} else {
trackingInfo = getTrackingInfoWithChanges(response.getTrackTo());
}
final TaskMessage responseMessage = new TaskMessage(
taskMessage.getTaskId(), responseMessageType,
response.getApiVersion(), response.getData(),
response.getTaskStatus(), responseContext,
response.getQueueReference(), trackingInfo,
new TaskSourceInfo(getWorkerName(responseMessageType), getWorkerVersion()));
responseMessage.setPriority(priorityManager.getResponsePriority(taskMessage));
return responseMessage;
}