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