The Search API uses the Events API that is part of JSR-286. Below is a summary of the approach used to implement the new Search API included in uPortal 4
Step 1. Add the uportal-search-api jar to your portlet
Step 2. Add the portlet-app level event-definitions and .....
Add the portlet-app level event-definitions and the portlet level supported-publishing-event and supported-processing-event elements. These declare to the portal the events your portlet app knows about and which events your portlet wants to be notified of and which events it will be publishing.
Step 3. Add @EventMapping...
Add @EventMapping(SearchConstants.SEARCH_REQUEST_QNAME_STRING) to a method in a @Controller
- See the searchContent method in https://github.com/Jasig/SimpleContentPortlet/tree/master/src/main/java/org/jasig/portlet/cms/mvc/portlet/SearchContentController.java
- Here is where the work happens, EventRequest.getEvent() returns a SearchRequest
- SearchRequest specified the search terms that where specified, your portlet should use these to do its searching
- If there is a hit create a SearchResults object, copy over the queryId, set the windowId, for each result create a SearchResult and set title/summary
- Call EventResponse.setEvent to send the results back to the search portlet
- This example is Spring 3.x specific but it can be doing using the plain-old portlet 2 APIs as well