//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.collectionreaders; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import org.apache.uima.fit.factory.ExternalResourceFactory; import org.apache.uima.fit.util.JCasUtil; import org.apache.uima.resource.ExternalResourceDescription; import org.junit.Test; import uk.gov.dstl.baleen.collectionreaders.testing.AbstractReaderTest; import uk.gov.dstl.baleen.resources.SharedActiveMQResource; import uk.gov.dstl.baleen.types.metadata.Metadata; import uk.gov.dstl.baleen.uima.BaleenCollectionReader; public class ActiveMQReaderTest extends AbstractReaderTest { private static final String ACTIVEMQ = "activemq"; private static final String ENDPOINT = "documents"; private static String HOST_VALUE = "localhost"; private static String PROTOCOL_VALUE = "vm"; private static String BROKERARGS_VALUE = "broker.persistent=false"; private static String CONTENT_EXTRACTOR_VALUE = "UimaContentExtractor"; final Object[] configArr = new String[] { SharedActiveMQResource.PARAM_PROTOCOL, PROTOCOL_VALUE, SharedActiveMQResource.PARAM_HOST, HOST_VALUE, SharedActiveMQResource.PARAM_BROKERARGS, BROKERARGS_VALUE }; final ExternalResourceDescription erd = ExternalResourceFactory.createExternalResourceDescription(ACTIVEMQ, SharedActiveMQResource.class, configArr); public ActiveMQReaderTest(){ super(ActiveMQReader.class); } @Test public void test() throws Exception { BaleenCollectionReader bcr = getCollectionReader(ACTIVEMQ, erd, ActiveMQReader.PARAM_ENDPOINT, ENDPOINT, ActiveMQReader.PARAM_CONTENT_EXTRACTOR, CONTENT_EXTRACTOR_VALUE); final SharedActiveMQResource samr = (SharedActiveMQResource) bcr.getUimaContext().getResourceObject(ACTIVEMQ); createContent(samr); assertTrue(bcr.doHasNext()); bcr.getNext(jCas); assertEquals("Hello, World", jCas.getDocumentText().trim()); assertEquals(1, JCasUtil.select(jCas, Metadata.class).size()); jCas.reset(); assertTrue(bcr.doHasNext()); bcr.getNext(jCas); assertEquals("Hello, Test", jCas.getDocumentText().trim()); assertEquals(1, JCasUtil.select(jCas, Metadata.class).size()); jCas.reset(); assertFalse(bcr.doHasNext()); bcr.close(); } private void createContent(final SharedActiveMQResource samr) throws JMSException { // get producer and send to the queue we're monitoring // make dest using samr's session final Destination dest = samr.getSession().createQueue(ENDPOINT); // make message using samr's session final Message msg1 = samr.getSession().createTextMessage("Hello, World"); samr.getProducer().send(dest, msg1); final Message msg2 = samr.getSession().createTextMessage("Hello, Test"); samr.getProducer().send(dest, msg2); } }