001
014
015 package com.liferay.portal.backgroundtask.messaging;
016
017 import com.liferay.portal.kernel.backgroundtask.BackgroundTaskStatus;
018 import com.liferay.portal.kernel.backgroundtask.BackgroundTaskStatusMessageTranslator;
019 import com.liferay.portal.kernel.backgroundtask.BackgroundTaskStatusRegistryUtil;
020 import com.liferay.portal.kernel.log.Log;
021 import com.liferay.portal.kernel.log.LogFactoryUtil;
022 import com.liferay.portal.kernel.messaging.BaseMessageListener;
023 import com.liferay.portal.kernel.messaging.Message;
024
025
028 public class BackgroundTaskStatusMessageListener extends BaseMessageListener {
029
030 public BackgroundTaskStatusMessageListener(
031 long backgroundTaskId,
032 BackgroundTaskStatusMessageTranslator
033 backgroundTaskStatusMessageTranslator) {
034
035 _backgroundTaskId = backgroundTaskId;
036 _backgroundTaskStatusMessageTranslator =
037 backgroundTaskStatusMessageTranslator;
038 }
039
040 @Override
041 protected void doReceive(Message message) throws Exception {
042 long backgroundTaskId = message.getLong("backgroundTaskId");
043
044 if (backgroundTaskId != _backgroundTaskId) {
045 return;
046 }
047
048 BackgroundTaskStatus backgroundTaskStatus =
049 BackgroundTaskStatusRegistryUtil.getBackgroundTaskStatus(
050 backgroundTaskId);
051
052 if (backgroundTaskStatus == null) {
053 if (_log.isDebugEnabled()) {
054 _log.debug(
055 "Unable to locate status for background task " +
056 backgroundTaskId + " to process " + message);
057 }
058
059 return;
060 }
061
062 _backgroundTaskStatusMessageTranslator.translate(
063 backgroundTaskStatus, message);
064 }
065
066 private static final Log _log = LogFactoryUtil.getLog(
067 BackgroundTaskStatusMessageListener.class);
068
069 private final long _backgroundTaskId;
070 private final BackgroundTaskStatusMessageTranslator
071 _backgroundTaskStatusMessageTranslator;
072
073 }