1 package com.atlassian.messagequeue.internal.scheduler;
2
3 import com.atlassian.messagequeue.registry.MessageContext;
4 import com.atlassian.scheduler.JobRunnerRequest;
5 import com.atlassian.scheduler.SchedulerService;
6 import com.atlassian.scheduler.config.JobId;
7
8 import javax.annotation.Nonnull;
9 import javax.annotation.Nullable;
10 import java.util.Optional;
11
12 import static java.util.Objects.requireNonNull;
13
14
15
16
17 public class SchedulerMessageContext implements MessageContext {
18 private final JobId jobId;
19 private final String payload;
20 private final SchedulerService schedulerService;
21 private final JobRunnerRequest jobRunnerRequest;
22 private boolean autoAcknowledgeMessage = true;
23
24 public SchedulerMessageContext(@Nonnull JobRunnerRequest jobRunnerRequest, @Nullable String payload, SchedulerService schedulerService) {
25 this.jobRunnerRequest = requireNonNull(jobRunnerRequest, "jobRunnerRequest");
26 this.jobId = requireNonNull(jobRunnerRequest.getJobId(), "jobId");
27 this.payload = payload;
28 this.schedulerService = requireNonNull(schedulerService, "schedulerService");
29 }
30
31 @Override
32 public Optional<String> getMessageId() {
33 return Optional.of(jobId.toString());
34 }
35
36 @Override
37 public Optional<String> getPayload() {
38 return Optional.ofNullable(payload);
39 }
40
41 @Override
42 public void acknowledge() {
43 schedulerService.unscheduleJob(jobId);
44 }
45
46 @Override
47 public boolean isCancellationRequested() {
48 return jobRunnerRequest.isCancellationRequested();
49 }
50
51 @Override
52 public boolean shouldAutoAcknowledgeMessage() {
53 return autoAcknowledgeMessage;
54 }
55
56 @Override
57 public void cancelAutoAcknowledgementOfMessage() {
58 autoAcknowledgeMessage = false;
59 }
60 }
61