/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.cxf.transport.jms;
import javax.naming.NamingException;
import javax.transaction.TransactionManager;
import javax.transaction.xa.XAException;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.configuration.ConfiguredBeanLocator;
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.transport.jms.uri.JMSEndpoint;
import org.apache.cxf.transport.jms.uri.MyBeanLocator;
import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
import org.junit.Assert;
import org.junit.Test;
public class JMSConfigFactoryTest extends AbstractJMSTester {
@Test
public void testUsernameAndPassword() throws Exception {
EndpointInfo ei = setupServiceInfo("HelloWorldService", "HelloWorldPort");
JMSConfiguration config = JMSConfigFactory.createFromEndpointInfo(bus, ei, target);
Assert.assertEquals("User name does not match.", "testUser", config.getUserName());
Assert.assertEquals("Password does not match.", "testPassword", config.getPassword());
}
@Test
public void testTransactionManagerFromBus() throws XAException, NamingException {
Bus bus = BusFactory.newInstance().createBus();
ConfiguredBeanLocator cbl = bus.getExtension(ConfiguredBeanLocator.class);
MyBeanLocator mybl = new MyBeanLocator(cbl);
bus.setExtension(mybl, ConfiguredBeanLocator.class);
TransactionManager tmExpected = new GeronimoTransactionManager();
mybl.register("tm", tmExpected);
tmByName(bus, tmExpected);
tmByClass(bus, tmExpected);
}
private void tmByName(Bus bus, TransactionManager tmExpected) {
JMSEndpoint endpoint = new JMSEndpoint("jms:queue:Foo.Bar?jndiTransactionManagerName=tm");
Assert.assertEquals("tm", endpoint.getJndiTransactionManagerName());
JMSConfiguration jmsConfig = JMSConfigFactory.createFromEndpoint(bus, endpoint);
TransactionManager tm = jmsConfig.getTransactionManager();
Assert.assertEquals(tmExpected, tm);
}
private void tmByClass(Bus bus, TransactionManager tmExpected) {
JMSEndpoint endpoint = new JMSEndpoint("jms:queue:Foo.Bar");
JMSConfiguration jmsConfig = JMSConfigFactory.createFromEndpoint(bus, endpoint);
TransactionManager tm = jmsConfig.getTransactionManager();
Assert.assertEquals(tmExpected, tm);
}
@Test
public void testTransactionManagerFromJndi() throws XAException, NamingException {
JMSEndpoint endpoint =
new JMSEndpoint("jms:queue:Foo.Bar?jndiTransactionManagerName=java:/comp/TransactionManager");
Assert.assertEquals("java:/comp/TransactionManager", endpoint.getJndiTransactionManagerName());
// TODO Check JNDI lookup
}
@Test
public void testConcurrentConsumers() {
JMSEndpoint endpoint = new JMSEndpoint("jms:queue:Foo.Bar?concurrentConsumers=4");
JMSConfiguration jmsConfig = JMSConfigFactory.createFromEndpoint(bus, endpoint);
Assert.assertEquals(4, jmsConfig.getConcurrentConsumers());
}
@Test
public void testMessageSelectorIsSet() {
EndpointInfo ei = setupServiceInfo("HelloWorldSelectorService", "HelloWorldPort");
JMSConfiguration config = JMSConfigFactory.createFromEndpointInfo(bus, ei, target);
Assert.assertEquals("customJMSAttribute=helloWorld", config.getMessageSelector());
}
}