Search in sources :

Example 16 with ServiceNotAvailableException

use of org.olat.search.ServiceNotAvailableException in project openolat by klemens.

the class JmsSearchProvider method onSearchMessage.

void onSearchMessage(SearchRequest searchRequest, String correlationID, Destination replyTo) {
    if (log_.isDebug()) {
        log_.debug("onSearchMessage, correlationID=" + correlationID + " , replyTo=" + replyTo + " , searchRequest=" + searchRequest);
    }
    Session session = null;
    try {
        Identity identity = BaseSecurityManager.getInstance().loadIdentityByKey(searchRequest.getIdentityId());
        SearchResults searchResults = this.doSearch(searchRequest.getQueryString(), searchRequest.getCondQueries(), identity, searchRequest.getRoles(), searchRequest.getFirstResult(), searchRequest.getMaxResults(), searchRequest.isDoHighlighting());
        if (log_.isDebug()) {
            log_.debug("searchResults: " + searchResults.size());
        }
        if (searchResults != null) {
            session = acquireSession();
            Message responseMessage = session.createObjectMessage(searchResults);
            responseMessage.setJMSCorrelationID(correlationID);
            responseMessage.setStringProperty(SearchClientProxy.JMS_RESPONSE_STATUS_PROPERTY_NAME, SearchClientProxy.JMS_RESPONSE_STATUS_OK);
            MessageProducer producer = session.createProducer(replyTo);
            if (log_.isDebug()) {
                log_.debug("onSearchMessage, send ResponseMessage=" + responseMessage + " to replyTo=" + replyTo);
            }
            producer.send(responseMessage);
            producer.close();
            return;
        } else {
            log_.info("onSearchMessage, no searchResults (searchResults=null)");
        }
    } catch (JMSException e) {
        log_.error("error when receiving jms messages", e);
        // signal search not available
        return;
    // do not throw exceptions here throw new OLATRuntimeException();
    } catch (ServiceNotAvailableException sex) {
        sendErrorResponse(SearchClientProxy.JMS_RESPONSE_STATUS_SERVICE_NOT_AVAILABLE_EXCEPTION, correlationID, replyTo);
    } catch (ParseException pex) {
        sendErrorResponse(SearchClientProxy.JMS_RESPONSE_STATUS_PARSE_EXCEPTION, correlationID, replyTo);
    } catch (QueryException qex) {
        sendErrorResponse(SearchClientProxy.JMS_RESPONSE_STATUS_QUERY_EXCEPTION, correlationID, replyTo);
    } catch (Throwable th) {
        log_.error("error at ClusteredSearchProvider.receive()", th);
        // signal search not available
        return;
    // do not throw exceptions throw new OLATRuntimeException();
    } finally {
        releaseSession(session);
        DBFactory.getInstance().commitAndCloseSession();
    }
}
Also used : ServiceNotAvailableException(org.olat.search.ServiceNotAvailableException) QueryException(org.olat.search.QueryException) ObjectMessage(javax.jms.ObjectMessage) Message(javax.jms.Message) TextMessage(javax.jms.TextMessage) JMSException(javax.jms.JMSException) MessageProducer(javax.jms.MessageProducer) ParseException(org.apache.lucene.queryparser.classic.ParseException) Identity(org.olat.core.id.Identity) SearchResults(org.olat.search.SearchResults) Session(javax.jms.Session)

Aggregations

ServiceNotAvailableException (org.olat.search.ServiceNotAvailableException)16 ParseException (org.apache.lucene.queryparser.classic.ParseException)12 QueryException (org.olat.search.QueryException)8 SearchResults (org.olat.search.SearchResults)8 JMSException (javax.jms.JMSException)6 Message (javax.jms.Message)6 ObjectMessage (javax.jms.ObjectMessage)6 Session (javax.jms.Session)6 TextMessage (javax.jms.TextMessage)6 HashSet (java.util.HashSet)4 Document (org.apache.lucene.document.Document)4 BooleanQuery (org.apache.lucene.search.BooleanQuery)4 IndexSearcher (org.apache.lucene.search.IndexSearcher)4 TopDocs (org.apache.lucene.search.TopDocs)4 AbstractOlatDocument (org.olat.search.model.AbstractOlatDocument)4 ArrayList (java.util.ArrayList)2 Date (java.util.Date)2 LinkedList (java.util.LinkedList)2 List (java.util.List)2 ExecutionException (java.util.concurrent.ExecutionException)2