Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

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

How To Integrate with the uPortal Search API

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

  1. See the searchContent method in https://github.com/Jasig/SimpleContentPortlet/tree/master/src/main/java/org/jasig/portlet/cms/mvc/portlet/SearchContentController.java
  2. Here is where the work happens, EventRequest.getEvent() returns a SearchRequest
  3. SearchRequest specified the search terms that were specified, your portlet should use these to do its searching
  4. 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.  Set the type to a string relevant to your portlet.  The type is used to
    1. determine which tab to display the results on (as determined by map "searchTabs" in bean https://github.com/Jasig/uPortal/blob/master/uportal-war/src/main/resources/properties/contexts/servicesContext.xml)
    2. For prioritizing results for the ajax search-as-you-type response (see xxx in bean https://github.com/Jasig/uPortal/blob/master/uportal-war/src/main/resources/properties/contexts/servicesContext.xml)
  5. Call EventResponse.setEvent to send the results back to the search portlet
  6. This example is Spring 3.x specific but it can be doing using the plain-old portlet 2 APIs as well

 

Additional References

 

List of Apereo Portlets Already Integrated with the uPortal Search API

Having problems with these instructions?

Please send us feedback at uportal-user@lists.ja-sig.org

  • No labels