#
#
# 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.
#
#

java.naming.factory.initial = org.apache.qpid.jms.jndi.JmsInitialContextFactory

connectionfactory.QueueConnectionFactory = amqp://${tck.broker-hostport}
connectionfactory.TopicConnectionFactory = amqp://${tck.broker-hostport}
connectionfactory.jms/DURABLE_SUB_CONNECTION_FACTORY = amqp://${tck.broker-hostport}
connectionfactory.jms/TopicConnectionFactory = amqp://${tck.broker-hostport}
connectionfactory.jms/MyTopicConnectionFactory = amqp://${tck.broker-hostport}

queue.MY_QUEUE = myQueue
queue.MY_QUEUE2 = myQueue2
queue.testQ0 = testQ0
queue.testQ1 = testQ1
queue.testQ2 = testQ2
queue.testQueue2 = testQueue2
queue.Q2 = q2
topic.MY_TOPIC = myTopic
topic.MY_TOPIC1 = myTopic1



