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

com/sun/ts/tests/jms/ee/all/sessiontests/SessionTests.java#SubscriberTests_from_standalone
com/sun/ts/tests/jms/ee/all/sessiontests/SessionTests.java#InvalidSelectorTests_from_standalone

com/sun/ts/tests/jms/ee/all/topicproperty/TopicPropertyTests.java#msgJMSXPropertiesTopicTest_from_standalone

com/sun/ts/tests/jms/ee/all/topictests/TopicTests.java#simpleDurableSubscriberTopicTest_from_standalone
com/sun/ts/tests/jms/ee/all/topictests/TopicTests.java#inactiveDurableSubscriberTopicRecTest_from_standalone
com/sun/ts/tests/jms/ee/all/topictests/TopicTests.java#durableSubscriberTopicNoLocalTest_from_standalone
com/sun/ts/tests/jms/ee/all/topictests/TopicTests.java#durableSubscriberChangeSelectorTest_from_standalone
com/sun/ts/tests/jms/ee/all/topictests/TopicTests.java#durableSubscriberNewTopicTest_from_standalone

com/sun/ts/tests/jms/ee/appclient/txtopictests/TxTopicTests.java#commitAckMsgTopicTest_from_standalone
com/sun/ts/tests/jms/ee/appclient/txtopictests/TxTopicTests.java#transactionRollbackOnSessionCloseReceiveTopicTest_from_standalone
com/sun/ts/tests/jms/ee/appclient/txtopictests/TxTopicTests.java#transactionRollbackOnPublishTopicTest_from_standalone
com/sun/ts/tests/jms/ee/appclient/txtopictests/TxTopicTests.java#txRollbackOnConnectionCloseReceiveTopicTest_from_standalone

