001
014
015 package com.liferay.portal.kernel.scheduler;
016
017 import com.liferay.portal.kernel.bean.ClassLoaderBeanHandler;
018 import com.liferay.portal.kernel.messaging.DestinationNames;
019 import com.liferay.portal.kernel.messaging.Message;
020 import com.liferay.portal.kernel.messaging.MessageBusUtil;
021 import com.liferay.portal.kernel.messaging.MessageListener;
022 import com.liferay.portal.kernel.scheduler.messaging.SchedulerEventMessageListenerWrapper;
023 import com.liferay.portal.kernel.scheduler.messaging.SchedulerRequest;
024
025 import java.lang.reflect.Proxy;
026
027 import java.util.List;
028
029
033 public class SchedulerEngineUtil {
034
035 public static List<SchedulerRequest> getScheduledJobs(String groupName)
036 throws SchedulerException {
037
038 return _instance._getScheduledJobs(groupName);
039 }
040
041 public static void init(SchedulerEngine defaultScheduler) {
042 _instance._init(defaultScheduler);
043 }
044
045 public static void schedule(
046 SchedulerEntry schedulerEntry, ClassLoader classLoader)
047 throws SchedulerException {
048
049 MessageListener schedulerEventListener = null;
050
051 try {
052 schedulerEventListener = (MessageListener)classLoader.loadClass(
053 schedulerEntry.getEventListenerClass()).newInstance();
054
055 schedulerEventListener = (MessageListener)Proxy.newProxyInstance(
056 classLoader, new Class[] {MessageListener.class},
057 new ClassLoaderBeanHandler(
058 schedulerEventListener, classLoader));
059 }
060 catch (Exception e) {
061 throw new SchedulerException(e);
062 }
063
064 schedulerEventListener = new SchedulerEventMessageListenerWrapper(
065 schedulerEventListener, schedulerEntry.getEventListenerClass());
066
067 schedulerEntry.setEventListener(schedulerEventListener);
068
069 MessageBusUtil.registerMessageListener(
070 DestinationNames.SCHEDULER_DISPATCH, schedulerEventListener);
071
072 schedule(
073 schedulerEntry.getTrigger(), schedulerEntry.getDescription(),
074 DestinationNames.SCHEDULER_DISPATCH, null);
075 }
076
077 public static void schedule(
078 Trigger trigger, String description, String destinationName,
079 Message message)
080 throws SchedulerException {
081
082 _instance._schedule(trigger, description, destinationName, message);
083 }
084
085 public static void schedule(
086 Trigger trigger, String description, String destinationName,
087 Object payload)
088 throws SchedulerException {
089
090 Message message = new Message();
091
092 message.setPayload(payload);
093
094 _instance._schedule(trigger, description, destinationName, message);
095 }
096
097 public static void shutdown() throws SchedulerException {
098 _instance._shutdown();
099 }
100
101 public static void start() throws SchedulerException {
102 _instance._start();
103 }
104
105 public static void unschedule(SchedulerEntry schedulerEntry)
106 throws SchedulerException {
107
108 MessageListener schedulerEventListener =
109 schedulerEntry.getEventListener();
110
111 MessageBusUtil.unregisterMessageListener(
112 DestinationNames.SCHEDULER_DISPATCH, schedulerEventListener);
113
114 unschedule(schedulerEntry.getTrigger());
115 }
116
117 public static void unschedule(Trigger trigger) throws SchedulerException {
118 _instance._unschedule(trigger);
119 }
120
121 private List<SchedulerRequest> _getScheduledJobs(String groupName)
122 throws SchedulerException {
123
124 return _schedulerEngine.getScheduledJobs(groupName);
125 }
126
127 private void _init(SchedulerEngine schedulerEngine) {
128 _schedulerEngine = schedulerEngine;
129 }
130
131 private void _schedule(
132 Trigger trigger, String description, String destinationName,
133 Message message)
134 throws SchedulerException {
135
136 _schedulerEngine.schedule(
137 trigger, description, destinationName, message);
138 }
139
140 private void _shutdown() throws SchedulerException {
141 _schedulerEngine.shutdown();
142 }
143
144 private void _start() throws SchedulerException {
145 _schedulerEngine.start();
146 }
147
148 private void _unschedule(Trigger trigger) throws SchedulerException {
149 _schedulerEngine.unschedule(trigger);
150 }
151
152 private static SchedulerEngineUtil _instance = new SchedulerEngineUtil();
153
154 private SchedulerEngine _schedulerEngine;
155
156 }