blob: a480a7d2a06e5d088cc9d5f90af08f48f1f89d1e [file] [log] [blame]
/**
* 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.activemq.test;
import javax.jms.Connection;
import javax.jms.ConnectionConsumer;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.ServerSessionPool;
import javax.jms.Session;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
*
*/
public class JmsResourceProvider {
private String serverUri = "vm://localhost?broker.persistent=false";
private boolean transacted;
private int ackMode = Session.AUTO_ACKNOWLEDGE;
private boolean isTopic;
private int deliveryMode = DeliveryMode.PERSISTENT;
private String durableName = "DummyName";
private String clientID = getClass().getName();
/**
* Creates a connection factory.
*
* @see org.apache.activemq.test.JmsResourceProvider#createConnectionFactory()
*/
public ConnectionFactory createConnectionFactory() throws Exception {
return new ActiveMQConnectionFactory(serverUri);
}
/**
* Creates a connection.
*
* @see org.apache.activemq.test.JmsResourceProvider#createConnection(javax.jms.ConnectionFactory)
*/
public Connection createConnection(ConnectionFactory cf) throws JMSException {
Connection connection = cf.createConnection();
if (getClientID() != null) {
connection.setClientID(getClientID());
}
return connection;
}
/**
* @see org.apache.activemq.test.JmsResourceProvider#createSession(javax.jms.Connection)
*/
public Session createSession(Connection conn) throws JMSException {
return conn.createSession(transacted, ackMode);
}
/**
* @see org.apache.activemq.test.JmsResourceProvider#createConsumer(javax.jms.Session,
* javax.jms.Destination)
*/
public MessageConsumer createConsumer(Session session, Destination destination) throws JMSException {
if (isDurableSubscriber()) {
return session.createDurableSubscriber((Topic)destination, durableName);
}
return session.createConsumer(destination);
}
/**
* Creates a connection for a consumer.
*
* @param ssp - ServerSessionPool
* @return ConnectionConsumer
*/
public ConnectionConsumer createConnectionConsumer(Connection connection, Destination destination, ServerSessionPool ssp) throws JMSException {
return connection.createConnectionConsumer(destination, null, ssp, 1);
}
/**
* Creates a producer.
*
* @see org.apache.activemq.test.JmsResourceProvider#createProducer(javax.jms.Session,
* javax.jms.Destination)
*/
public MessageProducer createProducer(Session session, Destination destination) throws JMSException {
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(deliveryMode);
return producer;
}
/**
* Creates a destination, which can either a topic or a queue.
*
* @see org.apache.activemq.test.JmsResourceProvider#createDestination(javax.jms.Session,
* java.lang.String)
*/
public Destination createDestination(Session session, String name) throws JMSException {
if (isTopic) {
return session.createTopic("TOPIC." + name);
} else {
return session.createQueue("QUEUE." + name);
}
}
/**
* Returns true if the subscriber is durable.
*
* @return isDurableSubscriber
*/
public boolean isDurableSubscriber() {
return isTopic && durableName != null;
}
/**
* Returns the acknowledgement mode.
*
* @return Returns the ackMode.
*/
public int getAckMode() {
return ackMode;
}
/**
* Sets the acnknowledgement mode.
*
* @param ackMode The ackMode to set.
*/
public void setAckMode(int ackMode) {
this.ackMode = ackMode;
}
/**
* Returns true if the destination is a topic, false if the destination is a
* queue.
*
* @return Returns the isTopic.
*/
public boolean isTopic() {
return isTopic;
}
/**
* @param isTopic The isTopic to set.
*/
public void setTopic(boolean isTopic) {
this.isTopic = isTopic;
}
/**
* Returns the server URI.
*
* @return Returns the serverUri.
*/
public String getServerUri() {
return serverUri;
}
/**
* Sets the server URI.
*
* @param serverUri - the server URI to set.
*/
public void setServerUri(String serverUri) {
this.serverUri = serverUri;
}
/**
* Return true if the session is transacted.
*
* @return Returns the transacted.
*/
public boolean isTransacted() {
return transacted;
}
/**
* Sets the session to be transacted.
*
* @param transacted
*/
public void setTransacted(boolean transacted) {
this.transacted = transacted;
if (transacted) {
setAckMode(Session.SESSION_TRANSACTED);
}
}
/**
* Returns the delivery mode.
*
* @return deliveryMode
*/
public int getDeliveryMode() {
return deliveryMode;
}
/**
* Sets the delivery mode.
*
* @param deliveryMode
*/
public void setDeliveryMode(int deliveryMode) {
this.deliveryMode = deliveryMode;
}
/**
* Returns the client id.
*
* @return clientID
*/
public String getClientID() {
return clientID;
}
/**
* Sets the client id.
*
* @param clientID
*/
public void setClientID(String clientID) {
this.clientID = clientID;
}
/**
* Returns the durable name of the provider.
*
* @return durableName
*/
public String getDurableName() {
return durableName;
}
/**
* Sets the durable name of the provider.
*
* @param durableName
*/
public void setDurableName(String durableName) {
this.durableName = durableName;
}
}