/* * Copyright (c) 2016 Red Hat, Inc. and/or its affiliates. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Cheng Fang - Initial API and implementation */ package org.jberet.support.io; import java.util.List; import java.util.Map; import org.apache.activemq.artemis.api.core.Message; import org.apache.activemq.artemis.api.core.TransportConfiguration; import org.apache.activemq.artemis.api.core.client.ActiveMQClient; import org.apache.activemq.artemis.api.core.client.ClientSession; import org.apache.activemq.artemis.api.core.client.SendAcknowledgementHandler; import org.apache.activemq.artemis.core.config.Configuration; import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl; import org.apache.activemq.artemis.core.server.ActiveMQServer; import org.apache.activemq.artemis.core.server.ActiveMQServers; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.jberet.support.io.JmsReaderWriterTest.ibmStockTradeCellProcessorsDateAsString; import static org.jberet.support.io.JmsReaderWriterTest.ibmStockTradeExpected1_10; import static org.jberet.support.io.JmsReaderWriterTest.ibmStockTradeForbid1_10; import static org.jberet.support.io.JmsReaderWriterTest.testRead0; import static org.jberet.support.io.JmsReaderWriterTest.testWrite0; public class ArtemisReaderWriterTest { static final String writerTestJobName = "org.jberet.support.io.ArtemisWriterTest.xml"; static final String readerTestJobName = "org.jberet.support.io.ArtemisReaderTest.xml"; //static final String connectorFactoryName = "org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory"; //static final String acceptorFactoryName = "org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory"; static final String connectorFactoryName = "org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory"; static final String acceptorFactoryName = "org.apache.activemq.artemis.core.remoting.impl.invm.InVMAcceptorFactory"; static final String queueAddress = "example"; ActiveMQServer server; ClientSession coreSession; @Before public void before() throws Exception { //Create the Configuration, and set the properties accordingly final Configuration configuration = new ConfigurationImpl(); configuration.setPersistenceEnabled(false); configuration.setSecurityEnabled(false); configuration.getAcceptorConfigurations().add(new TransportConfiguration(acceptorFactoryName)); //Create and start the server server = ActiveMQServers.newActiveMQServer(configuration); server.start(); final TransportConfiguration transportConfiguration = new TransportConfiguration(connectorFactoryName); MessagingResourceProducer.artemisServerLocator = ActiveMQClient.createServerLocatorWithoutHA(transportConfiguration); MessagingResourceProducer.artemisServerLocator.setBlockOnAcknowledge(false); MessagingResourceProducer.artemisServerLocator.setConfirmationWindowSize(5); MessagingResourceProducer.artemisSessionFactory = MessagingResourceProducer.artemisServerLocator.createSessionFactory(); coreSession = MessagingResourceProducer.artemisSessionFactory.createSession(false, false, false); coreSession.createQueue(queueAddress, queueAddress); } @After public void after() throws Exception { if (coreSession != null) { coreSession.close(); } if (server != null) { server.stop(); } } @Test public void readIBMStockTradeCsvWriteArtemisBeanType() throws Exception { testWrite0(writerTestJobName, StockTrade.class, ExcelWriterTest.ibmStockTradeHeader, ExcelWriterTest.ibmStockTradeCellProcessors, "1", "10"); // CsvItemReaderWriter uses header "Date, Time, Open, ..." // CsvItemReaderWriter has nameMapping "date, time, open, ..." to match java fields in StockTrade. CsvItemReaderWriter // does not understand Jackson mapping annotations in POJO. testRead0(readerTestJobName, StockTrade.class, "readIBMStockTradeCsvWriteArtemisBeanType.out", ExcelWriterTest.ibmStockTradeNameMapping, ExcelWriterTest.ibmStockTradeHeader, ibmStockTradeExpected1_10, ibmStockTradeForbid1_10); } @Test public void readIBMStockTradeCsvWriteArtemisMapType() throws Exception { testWrite0(writerTestJobName, Map.class, ExcelWriterTest.ibmStockTradeHeader, ibmStockTradeCellProcessorsDateAsString, "1", "10"); testRead0(readerTestJobName, Map.class, "readIBMStockTradeCsvWriteArtemisMapType.out", ExcelWriterTest.ibmStockTradeNameMapping, ExcelWriterTest.ibmStockTradeHeader, ibmStockTradeExpected1_10, ibmStockTradeForbid1_10); } @Test public void readIBMStockTradeCsvWriteArtemisListType() throws Exception { testWrite0(writerTestJobName, List.class, ExcelWriterTest.ibmStockTradeHeader, ExcelWriterTest.ibmStockTradeCellProcessors, "1", "10"); testRead0(readerTestJobName, List.class, "readIBMStockTradeCsvWriteArtemisListType.out", ExcelWriterTest.ibmStockTradeNameMapping, ExcelWriterTest.ibmStockTradeHeader, ibmStockTradeExpected1_10, ibmStockTradeForbid1_10); } public static class ArtemisSendAcknowledgementHandler implements SendAcknowledgementHandler { @Override public void sendAcknowledged(final Message message) { System.out.printf("sendAcknowledged message: %s in %s%n", message, this); } } }