/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.test.jms.slave;
import java.util.List;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import org.hibernate.search.cfg.Environment;
import org.hibernate.search.backend.LuceneWork;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.spi.SearchIntegrator;
/**
* Helper class to verify that the Slave places messages onto the queue.
*
* @author Emmanuel Bernard
* @author Hardy Ferentschik
*/
public class SearchQueueChecker implements MessageListener {
public static int queues;
public static int works;
private final SearchIntegrator searchIntegrator;
public SearchQueueChecker(SearchIntegrator searchIntegrator) {
this.searchIntegrator = searchIntegrator;
}
public static void reset() {
queues = 0;
works = 0;
}
@Override
public void onMessage(Message message) {
if ( !( message instanceof ObjectMessage ) ) {
return;
}
ObjectMessage objectMessage = (ObjectMessage) message;
List<LuceneWork> queue;
try {
String indexName = objectMessage.getStringProperty( Environment.INDEX_NAME_JMS_PROPERTY );
IndexManager indexManager = searchIntegrator.getIndexManager( indexName );
queue = indexManager.getSerializer().toLuceneWorks( (byte[]) objectMessage.getObject() );
}
catch (JMSException e) {
return;
}
catch (ClassCastException e) {
return;
}
queues++;
works += queue.size();
}
}