/* * Copyright 2002-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.flex.messaging.jms; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import org.springframework.beans.MutablePropertyValues; import org.springframework.context.support.StaticApplicationContext; import org.springframework.flex.core.AbstractMessageBrokerTests; import org.springframework.flex.messaging.MessageDestinationFactory; import flex.messaging.MessageBroker; import flex.messaging.MessageDestination; import flex.messaging.services.MessageService; import org.junit.After; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; /** * @author Mark Fisher */ public class JmsDestinationTests extends AbstractMessageBrokerTests { private static final String DEFAULT_ID = "testJmsDestinationExporter"; MessageDestinationFactory factory; @Before public void setUp() throws Exception { configureFactory(); } @After public void tearDown() throws Exception { this.factory.destroy(); } @Test public void destinationRegisteredWithDefaultConfig() throws Exception { MessageService messageService = getMessageService(); this.factory.afterPropertiesSet(); MessageDestination messageDestination = (MessageDestination) messageService.getDestination(DEFAULT_ID); assertNotNull("MessageDestination not registered", messageDestination); assertTrue("MessageDestination not started", messageDestination.isStarted()); assertEquals("MessagingAdapter not set", "test-jms-adapter", messageDestination.getAdapter().getId()); assertTrue("No channels set on destination", messageDestination.getChannels().size() > 0); } @Test public void destinationRegisteredWithDestinationId() throws Exception { MessageService messageService = getMessageService(); String destinationId = "myDestination"; this.factory.setDestinationId(destinationId); this.factory.afterPropertiesSet(); assertNotNull("MessageDestination not registered", messageService.getDestination(destinationId)); } private void configureFactory() throws Exception { String adapterBeanName = "test-jms-adapter"; MutablePropertyValues properties = new MutablePropertyValues(); properties.addPropertyValue("connectionFactory", new StubConnectionFactory()); properties.addPropertyValue("jmsDestination", new Destination() { }); StaticApplicationContext context = new StaticApplicationContext(); context.registerPrototype(adapterBeanName, JmsAdapter.class, properties); this.factory = new MessageDestinationFactory(); this.factory.setBeanName(DEFAULT_ID); this.factory.setServiceAdapter(adapterBeanName); this.factory.setBeanFactory(context); this.factory.setMessageBroker(getMessageBroker()); } private MessageService getMessageService() throws Exception { MessageBroker broker = getMessageBroker(); return (MessageService) broker.getServiceByType(MessageService.class.getName()); } private static class StubConnectionFactory implements ConnectionFactory { public Connection createConnection() throws JMSException { return null; } public Connection createConnection(String userName, String password) throws JMSException { return null; } } }