public static void toJSON(OutputWriter jsonOutputWriter, StageInstanceModel model, String pipelineName, String pipelineCounter) {
jsonOutputWriter
.addLinks(linkWriter -> {
linkWriter.addLink("self", Routes.Stage.self(pipelineName, pipelineCounter, model.getName(), model.getCounter()));
})
.add("name", model.getName())
.add("counter", model.getCounter())
.add("status", model.getState().name())
.add("approved_by", model.getApprovedBy())
.add("scheduled_at", model.getScheduledDate());
if (model.getState().stageResult() == StageResult.Cancelled) {
jsonOutputWriter.add("cancelled_by", model.getCancelledBy() == null ? "GoCD" : model.getCancelledBy());
}
if (model.getPreviousStage() != null) {
jsonOutputWriter.addChild("previous_stage", childWriter -> {
StageRepresenter.toJSON(childWriter, model.getPreviousStage(), pipelineName, pipelineCounter);
});
}
}
}