View Javadoc

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   * Scheduler {@code MessageContext}.
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