001
014
015 package com.liferay.portal.poller.comet;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.messaging.BaseMessageListener;
020 import com.liferay.portal.kernel.messaging.Message;
021 import com.liferay.portal.util.PropsValues;
022
023 import java.util.LinkedList;
024 import java.util.List;
025 import java.util.Timer;
026 import java.util.TimerTask;
027
028
031 public class PollerCometDelayedJobImpl
032 extends BaseMessageListener implements PollerCometDelayedJob {
033
034 public void addPollerCometDelayedTask(
035 PollerCometDelayedTask pollerCometDelayedTask) {
036
037 synchronized (_pollerCometDelayedTasks) {
038 if (_timer == null) {
039 _timer = new Timer(PollerCometDelayedJobImpl.class.getName());
040
041 _timer.schedule(
042 new PollerCometTimerTask(),
043 PropsValues.POLLER_NOTIFICATIONS_TIMEOUT);
044 }
045
046 _pollerCometDelayedTasks.add(pollerCometDelayedTask);
047 }
048 }
049
050 @Override
051 protected synchronized void doReceive(Message message) throws Exception {
052 synchronized (_pollerCometDelayedTasks) {
053 for (PollerCometDelayedTask pollerCometDelayedTask :
054 _pollerCometDelayedTasks) {
055
056 try {
057 pollerCometDelayedTask.executeTask();
058 }
059 catch (Exception e) {
060 if (_log.isWarnEnabled()) {
061 _log.warn("Unable to do task" + e);
062 }
063 }
064 }
065
066 _pollerCometDelayedTasks.clear();
067 }
068 }
069
070 private static Log _log = LogFactoryUtil.getLog(
071 PollerCometDelayedJob.class);
072
073 private List<PollerCometDelayedTask> _pollerCometDelayedTasks =
074 new LinkedList<PollerCometDelayedTask>();
075 private Timer _timer;
076
077 private class PollerCometTimerTask extends TimerTask {
078
079 @Override
080 public void run() {
081 synchronized (_pollerCometDelayedTasks) {
082 for (PollerCometDelayedTask pollerCometDelayedTask :
083 _pollerCometDelayedTasks) {
084
085 try {
086 pollerCometDelayedTask.executeTask();
087 }
088 catch (Exception e) {
089 if (_log.isWarnEnabled()) {
090 _log.warn("Unable to do task" + e);
091 }
092 }
093 }
094
095 _pollerCometDelayedTasks.clear();
096 }
097 }
098 }
099
100 }