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 @Override
035 public void addPollerCometDelayedTask(
036 PollerCometDelayedTask pollerCometDelayedTask) {
037
038 synchronized (_pollerCometDelayedTasks) {
039 if (_timer == null) {
040 _timer = new Timer(PollerCometDelayedJobImpl.class.getName());
041
042 _timer.schedule(
043 new PollerCometTimerTask(),
044 PropsValues.POLLER_NOTIFICATIONS_TIMEOUT);
045 }
046
047 _pollerCometDelayedTasks.add(pollerCometDelayedTask);
048 }
049 }
050
051 @Override
052 protected synchronized void doReceive(Message message) throws Exception {
053 synchronized (_pollerCometDelayedTasks) {
054 for (PollerCometDelayedTask pollerCometDelayedTask :
055 _pollerCometDelayedTasks) {
056
057 try {
058 pollerCometDelayedTask.executeTask();
059 }
060 catch (Exception e) {
061 if (_log.isWarnEnabled()) {
062 _log.warn("Unable to do task" + e);
063 }
064 }
065 }
066
067 _pollerCometDelayedTasks.clear();
068 }
069 }
070
071 private static Log _log = LogFactoryUtil.getLog(
072 PollerCometDelayedJobImpl.class);
073
074 private List<PollerCometDelayedTask> _pollerCometDelayedTasks =
075 new LinkedList<PollerCometDelayedTask>();
076 private Timer _timer;
077
078 private class PollerCometTimerTask extends TimerTask {
079
080 @Override
081 public void run() {
082 synchronized (_pollerCometDelayedTasks) {
083 for (PollerCometDelayedTask pollerCometDelayedTask :
084 _pollerCometDelayedTasks) {
085
086 try {
087 pollerCometDelayedTask.executeTask();
088 }
089 catch (Exception e) {
090 if (_log.isWarnEnabled()) {
091 _log.warn("Unable to do task" + e);
092 }
093 }
094 }
095
096 _pollerCometDelayedTasks.clear();
097 }
098 }
099 }
100
101 }