1
14
15 package com.liferay.portal.kernel.search.messaging;
16
17 import com.liferay.portal.kernel.log.Log;
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
19 import com.liferay.portal.kernel.messaging.Message;
20 import com.liferay.portal.kernel.messaging.MessageBusUtil;
21 import com.liferay.portal.kernel.search.Hits;
22
23
28 public class SearchReaderMessageListener
29 extends BaseSearchEngineMessageListener {
30
31 public void receive(Message message) {
32 try {
33 doReceive(message);
34 }
35 catch (Exception e) {
36 _log.error("Unable to process message " + message, e);
37 }
38 }
39
40 protected void doCommandSearch(Message message, SearchRequest searchRequest)
41 throws Exception {
42
43 Hits hits = searchEngine.getSearcher().search(
44 searchRequest.getCompanyId(), searchRequest.getQuery(),
45 searchRequest.getSorts(), searchRequest.getStart(),
46 searchRequest.getEnd());
47
48 Message responseMessage = MessageBusUtil.createResponseMessage(
49 message, hits);
50
51 MessageBusUtil.sendMessage(
52 responseMessage.getDestinationName(), responseMessage);
53 }
54
55 protected void doReceive(Message message) throws Exception {
56 Object payload = message.getPayload();
57
58 if (!(payload instanceof SearchRequest)) {
59 return;
60 }
61
62 SearchRequest searchRequest = (SearchRequest)payload;
63
64 SearchEngineCommand searchEnginecommand =
65 searchRequest.getSearchEngineCommand();
66
67 if (searchEnginecommand.equals(SearchEngineCommand.SEARCH)) {
68 doCommandSearch(message, searchRequest);
69 }
70 }
71
72 private static Log _log = LogFactoryUtil.getLog(
73 SearchReaderMessageListener.class);
74
75 }