@EventMapping(SearchConstants.SEARCH_REQUEST_QNAME_STRING) public void handleSearchEvents(EventRequest request, EventResponse response) { log.debug("Responding to Search Event"); final Event event = request.getEvent(); final SearchRequest searchQuery = (SearchRequest) event.getValue(); final String searchTerms = searchQuery.getSearchTerms(); final SearchResults searchResults = new SearchResults(); searchResults.setQueryId(searchQuery.getQueryId()); searchResults.setWindowId(request.getWindowID()); for (ContactDomain domain : contactDomains) { if (domain.getHasSearch()) { ContactSet contacts = domain.search(searchTerms); for (Contact contact : contacts) { // Build the result object for the match final SearchResult searchResult = new SearchResult(); String title = contact.getSurname().toUpperCase() + ", " + contact.getTitle() + " " + contact.getFirstname(); if (contact.getPosition() != null && !contact.getPosition().equals("")) title += " (" + contact.getPosition() + ")"; List<String> summary = new ArrayList<String>(); ; if (contact.getPrimaryEmailAddress() != null) summary.add("E:" + contact.getPrimaryEmailAddress().getEmailAddress()); if (contact.getPrimaryPhoneNumber() != null) summary.add("T:" + contact.getPrimaryPhoneNumber().getPhoneNumber()); String summaryText = StringUtils.collectionToDelimitedString(summary, " -- "); searchResult.setTitle(title); searchResult.setSummary(summaryText); /* * Portlet URL to be added when / if portlet support for * deep linking added. */ PortletUrl url = new PortletUrl(); url.setPortletMode("VIEW"); url.setWindowState(WindowState.MAXIMIZED.toString()); PortletUrlParameter domainParam = new PortletUrlParameter(); domainParam.setName("domain"); domainParam.getValue().add(domain.getId()); url.getParam().add(domainParam); PortletUrlParameter urnParam = new PortletUrlParameter(); urnParam.setName("urn"); urnParam.getValue().add(contact.getURN()); url.getParam().add(urnParam); searchResult.setPortletUrl(url); searchResult.getType().add("contact"); // Add the result to the results and send the event searchResults.getSearchResult().add(searchResult); } } } response.setEvent(SearchConstants.SEARCH_RESULTS_QNAME, searchResults); log.debug( "Finished response -- " + searchResults.getSearchResult().size() + " -- results returned"); }