1
14
15 package com.liferay.portal.kernel.scheduler;
16
17 import com.liferay.portal.kernel.bean.ClassLoaderBeanHandler;
18 import com.liferay.portal.kernel.messaging.DestinationNames;
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.scheduler.messaging.SchedulerEventMessageListenerWrapper;
23 import com.liferay.portal.kernel.scheduler.messaging.SchedulerRequest;
24
25 import java.lang.reflect.Proxy;
26
27 import java.util.List;
28
29
35 public class SchedulerEngineUtil {
36
37 public static List<SchedulerRequest> getScheduledJobs(String groupName)
38 throws SchedulerException {
39
40 return _instance._getScheduledJobs(groupName);
41 }
42
43 public static void init(SchedulerEngine defaultScheduler) {
44 _instance._init(defaultScheduler);
45 }
46
47 public static void schedule(
48 SchedulerEntry schedulerEntry, ClassLoader classLoader)
49 throws SchedulerException {
50
51 MessageListener schedulerEventListener = null;
52
53 try {
54 schedulerEventListener = (MessageListener)classLoader.loadClass(
55 schedulerEntry.getEventListenerClass()).newInstance();
56
57 schedulerEventListener = (MessageListener)Proxy.newProxyInstance(
58 classLoader, new Class[] {MessageListener.class},
59 new ClassLoaderBeanHandler(
60 schedulerEventListener, classLoader));
61 }
62 catch (Exception e) {
63 throw new SchedulerException(e);
64 }
65
66 schedulerEventListener = new SchedulerEventMessageListenerWrapper(
67 schedulerEventListener, schedulerEntry.getEventListenerClass());
68
69 schedulerEntry.setEventListener(schedulerEventListener);
70
71 MessageBusUtil.registerMessageListener(
72 DestinationNames.SCHEDULER_DISPATCH, schedulerEventListener);
73
74 schedule(
75 schedulerEntry.getTrigger(), schedulerEntry.getDescription(),
76 DestinationNames.SCHEDULER_DISPATCH, null);
77 }
78
79 public static void schedule(
80 Trigger trigger, String description, String destinationName,
81 Message message)
82 throws SchedulerException {
83
84 _instance._schedule(trigger, description, destinationName, message);
85 }
86
87 public static void schedule(
88 Trigger trigger, String description, String destinationName,
89 Object payload)
90 throws SchedulerException {
91
92 Message message = new Message();
93
94 message.setPayload(payload);
95
96 _instance._schedule(trigger, description, destinationName, message);
97 }
98
99 public static void shutdown() throws SchedulerException {
100 _instance._shutdown();
101 }
102
103 public static void start() throws SchedulerException {
104 _instance._start();
105 }
106
107 public static void unschedule(SchedulerEntry schedulerEntry)
108 throws SchedulerException {
109
110 MessageListener schedulerEventListener =
111 schedulerEntry.getEventListener();
112
113 MessageBusUtil.unregisterMessageListener(
114 DestinationNames.SCHEDULER_DISPATCH, schedulerEventListener);
115
116 unschedule(schedulerEntry.getTrigger());
117 }
118
119 public static void unschedule(Trigger trigger) throws SchedulerException {
120 _instance._unschedule(trigger);
121 }
122
123 private List<SchedulerRequest> _getScheduledJobs(String groupName)
124 throws SchedulerException {
125
126 return _schedulerEngine.getScheduledJobs(groupName);
127 }
128
129 private void _init(SchedulerEngine schedulerEngine) {
130 _schedulerEngine = schedulerEngine;
131 }
132
133 private void _schedule(
134 Trigger trigger, String description, String destinationName,
135 Message message)
136 throws SchedulerException {
137
138 _schedulerEngine.schedule(
139 trigger, description, destinationName, message);
140 }
141
142 private void _shutdown() throws SchedulerException {
143 _schedulerEngine.shutdown();
144 }
145
146 private void _start() throws SchedulerException {
147 _schedulerEngine.start();
148 }
149
150 private void _unschedule(Trigger trigger) throws SchedulerException {
151 _schedulerEngine.unschedule(trigger);
152 }
153
154 private static SchedulerEngineUtil _instance = new SchedulerEngineUtil();
155
156 private SchedulerEngine _schedulerEngine;
157
158 }