001
014
015 package com.liferay.portal.lar;
016
017 import com.liferay.portal.kernel.backgroundtask.BackgroundTaskThreadLocal;
018 import com.liferay.portal.kernel.lar.ManifestSummary;
019 import com.liferay.portal.kernel.lar.PortletDataHandlerStatusMessageSender;
020 import com.liferay.portal.kernel.lar.StagedModelDataHandler;
021 import com.liferay.portal.kernel.lar.StagedModelDataHandlerRegistryUtil;
022 import com.liferay.portal.kernel.messaging.Message;
023 import com.liferay.portal.kernel.messaging.sender.SingleDestinationMessageSender;
024 import com.liferay.portal.kernel.util.LongWrapper;
025 import com.liferay.portal.model.StagedModel;
026
027 import java.util.Map;
028
029
032 public class PortletDataHandlerStatusMessageSenderImpl
033 implements PortletDataHandlerStatusMessageSender {
034
035 @Override
036 public void sendStatusMessage(
037 String messageType, ManifestSummary manifestSummary) {
038
039 if (!BackgroundTaskThreadLocal.hasBackgroundTask()) {
040 return;
041 }
042
043 Message message = createMessage(messageType, manifestSummary);
044
045 _singleDestinationMessageSender.send(message);
046 }
047
048 @Override
049 public void sendStatusMessage(
050 String messageType, String portletId, ManifestSummary manifestSummary) {
051
052 if (!BackgroundTaskThreadLocal.hasBackgroundTask()) {
053 return;
054 }
055
056 Message message = createMessage(messageType, manifestSummary);
057
058 message.put("portletId", portletId);
059
060 _singleDestinationMessageSender.send(message);
061 }
062
063 @Override
064 public <T extends StagedModel> void sendStatusMessage(
065 String messageType, T stagedModel, ManifestSummary manifestSummary) {
066
067 if (!BackgroundTaskThreadLocal.hasBackgroundTask()) {
068 return;
069 }
070
071 Message message = createMessage(messageType, manifestSummary);
072
073 StagedModelDataHandler<T> stagedModelDataHandler =
074 (StagedModelDataHandler<T>)
075 StagedModelDataHandlerRegistryUtil.getStagedModelDataHandler(
076 stagedModel.getModelClassName());
077
078 message.put(
079 "stagedModelName",
080 stagedModelDataHandler.getDisplayName(stagedModel));
081
082 message.put(
083 "stagedModelType",
084 String.valueOf(stagedModel.getStagedModelType()));
085 message.put("uuid", stagedModel.getUuid());
086
087 _singleDestinationMessageSender.send(message);
088 }
089
090 public void setSingleDestinationMessageSender(
091 SingleDestinationMessageSender singleDestinationMessageSender) {
092
093 _singleDestinationMessageSender = singleDestinationMessageSender;
094 }
095
096 protected Message createMessage(
097 String messageType, ManifestSummary manifestSummary) {
098
099 Message message = new Message();
100
101 message.put(
102 "backgroundTaskId",
103 BackgroundTaskThreadLocal.getBackgroundTaskId());
104 message.put("messageType", messageType);
105
106 Map<String, LongWrapper> modelAdditionCounters =
107 manifestSummary.getModelAdditionCounters();
108
109 message.put("modelAdditionCounters", modelAdditionCounters);
110
111 Map<String, LongWrapper> modelDeletionCounters =
112 manifestSummary.getModelDeletionCounters();
113
114 message.put("modelDeletionCounters", modelDeletionCounters);
115
116 return message;
117 }
118
119 private SingleDestinationMessageSender _singleDestinationMessageSender;
120
121 }