1
22
23 package com.liferay.portal.scheduler.messaging;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.kernel.messaging.Message;
28 import com.liferay.portal.kernel.messaging.MessageBusUtil;
29 import com.liferay.portal.kernel.messaging.MessageListener;
30 import com.liferay.portal.kernel.messaging.sender.MessageSender;
31 import com.liferay.portal.kernel.scheduler.SchedulerEngine;
32 import com.liferay.portal.kernel.scheduler.messaging.SchedulerRequest;
33
34 import java.util.List;
35
36
43 public class SchedulerMessageListener implements MessageListener {
44
45 public SchedulerMessageListener(
46 MessageSender messageSender, SchedulerEngine schedulerEngine) {
47
48 _messageSender = messageSender;
49 _schedulerEngine = schedulerEngine;
50 }
51
52 public void receive(Message message) {
53 try {
54 doReceive(message);
55 }
56 catch (Exception e) {
57 _log.error("Unable to process message " + message, e);
58 }
59 }
60
61 protected void doReceive(Message message) throws Exception {
62 SchedulerRequest schedulerRequest =
63 (SchedulerRequest)message.getPayload();
64
65 String command = schedulerRequest.getCommand();
66
67 if (command.equals(SchedulerRequest.COMMAND_REGISTER)) {
68 _schedulerEngine.schedule(
69 schedulerRequest.getGroupName(), schedulerRequest.getCronText(),
70 schedulerRequest.getStartDate(), schedulerRequest.getEndDate(),
71 schedulerRequest.getDescription(),
72 schedulerRequest.getDestination(),
73 schedulerRequest.getMessageBody());
74 }
75 else if (command.equals(SchedulerRequest.COMMAND_RETRIEVE)) {
76 doCommandRetrieve(message, schedulerRequest);
77 }
78 else if (command.equals(SchedulerRequest.COMMAND_SHUTDOWN)) {
79 _schedulerEngine.shutdown();
80 }
81 else if (command.equals(SchedulerRequest.COMMAND_STARTUP)) {
82 _schedulerEngine.start();
83 }
84 else if (command.equals(SchedulerRequest.COMMAND_UNREGISTER)) {
85 _schedulerEngine.unschedule(
86 schedulerRequest.getJobName(), schedulerRequest.getGroupName());
87 }
88 }
89
90 protected void doCommandRetrieve(
91 Message message, SchedulerRequest schedulerRequest)
92 throws Exception {
93
94 List<SchedulerRequest> schedulerRequests =
95 _schedulerEngine.getScheduledJobs(schedulerRequest.getGroupName());
96
97 Message responseMessage = MessageBusUtil.createResponseMessage(
98 message, schedulerRequests);
99
100 _messageSender.send(responseMessage.getDestination(), responseMessage);
101 }
102
103 private static Log _log =
104 LogFactoryUtil.getLog(SchedulerMessageListener.class);
105
106 private MessageSender _messageSender;
107 private SchedulerEngine _schedulerEngine;
108
109 }