@Override public void build(ScheduleOptions scheduleOptions, HttpOperationResult result, String pipelineName, PipelineScheduleOptions pipelineScheduleOptions, HealthStateType healthStateType) { for (MaterialForScheduling materialForScheduling : pipelineScheduleOptions.getMaterials()) { try { MaterialConfig material = goConfigService.materialForPipelineWithFingerprint(pipelineName, materialForScheduling.getFingerprint()); if (StringUtils.isBlank(materialForScheduling.getRevision())) { result.unprocessibleEntity("Request to schedule pipeline rejected", String.format("Material [%s] has empty revision", materialForScheduling.getFingerprint()), HealthStateType.general(HealthStateScope.GLOBAL)); return; } scheduleOptions.getSpecifiedRevisions().put(material.getPipelineUniqueFingerprint(), materialForScheduling.getRevision()); } catch (Exception e) { result.unprocessibleEntity("Request to schedule pipeline rejected", String.format("Pipeline '%s' does not contain the following material(s): [%s].", pipelineName, materialForScheduling.getFingerprint()), healthStateType); return; } } } }