1
22
23 package com.liferay.portal.scheduler.messaging;
24
25 import com.liferay.portal.kernel.messaging.Message;
26 import com.liferay.portal.kernel.messaging.MessageListener;
27 import com.liferay.portal.kernel.messaging.sender.MessageSender;
28 import com.liferay.portal.kernel.scheduler.SchedulerEngine;
29 import com.liferay.portal.kernel.scheduler.messaging.SchedulerRequest;
30
31 import java.util.List;
32
33 import org.apache.commons.logging.Log;
34 import org.apache.commons.logging.LogFactory;
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.setPayload(schedulerRequests);
98
99 _messageSender.send(message.getResponseDestination(), message);
100 }
101
102 private static Log _log = LogFactory.getLog(SchedulerMessageListener.class);
103
104 private MessageSender _messageSender;
105 private SchedulerEngine _schedulerEngine;
106
107 }