public static ScheduledJob of()

in jobs-service/jobs-service-internal-api/src/main/java/org/kie/kogito/jobs/service/adapter/ScheduledJobAdapter.java [55:100]


    public static ScheduledJob of(JobDetails jobDetails) {
        //using headers (the new API approach)
        final ProcessPayload payload = Optional.ofNullable(jobDetails.getRecipient())
                .map(Recipient::getRecipient)
                .filter(HttpRecipient.class::isInstance)
                .map(HttpRecipient.class::cast)
                .map(httpRecipient -> {
                    String processInstanceId = httpRecipient.getHeader("processInstanceId");
                    String rootProcessInstanceId = httpRecipient.getHeader("rootProcessInstanceId");
                    String processId = httpRecipient.getHeader("processId");
                    String rootProcessId = httpRecipient.getHeader("rootProcessId");
                    String nodeInstanceId = httpRecipient.getHeader("nodeInstanceId");
                    return new ProcessPayload(processInstanceId, rootProcessInstanceId, processId, rootProcessId, nodeInstanceId);
                })
                .filter(processPayload -> Objects.nonNull(processPayload.processInstanceId))//just to guarantee headers were present
                .orElse(new ProcessPayload());

        return ScheduledJob.builder()
                .job(new JobBuilder()
                        .id(jobDetails.getId())
                        .priority(jobDetails.getPriority())
                        .expirationTime(Optional.ofNullable(jobDetails.getTrigger())
                                .map(Trigger::hasNextFireTime)
                                .map(DateUtil::fromDate)
                                .orElse(null))
                        .callbackEndpoint(Optional.ofNullable(jobDetails.getRecipient())
                                .map(Recipient::getRecipient)
                                .filter(HttpRecipient.class::isInstance)
                                .map(HttpRecipient.class::cast)
                                .map(HttpRecipient::getUrl)
                                .orElse(null))
                        .repeatLimit(extractRepeatLimit(jobDetails.getTrigger()))
                        .repeatInterval(extractRepeatInterval(jobDetails.getTrigger()))
                        .rootProcessId(payload.getRootProcessId())
                        .rootProcessInstanceId(payload.getRootProcessInstanceId())
                        .processId(payload.getProcessId())
                        .processInstanceId(payload.getProcessInstanceId())
                        .nodeInstanceId(payload.getNodeInstanceId())
                        .build())
                .scheduledId(jobDetails.getScheduledId())
                .status(jobDetails.getStatus())
                .executionCounter(jobDetails.getExecutionCounter())
                .retries(jobDetails.getRetries())
                .lastUpdate(jobDetails.getLastUpdate())
                .build();
    }