| /* |
| * 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.axis2.transport.jms; |
| |
| import javax.jms.Destination; |
| |
| import org.apache.axis2.addressing.EndpointReference; |
| import org.apache.axis2.context.MessageContext; |
| import org.apache.axis2.description.AxisService; |
| import org.apache.axis2.transport.testkit.axis2.client.AxisTestClientConfigurator; |
| import org.apache.axis2.transport.testkit.channel.RequestResponseChannel; |
| import org.apache.axis2.transport.testkit.name.Key; |
| import org.apache.axis2.transport.testkit.tests.Setup; |
| import org.apache.axis2.transport.testkit.tests.TearDown; |
| import org.apache.axis2.transport.testkit.tests.Transient; |
| |
| public class JMSRequestResponseChannel extends JMSChannel implements RequestResponseChannel, AxisTestClientConfigurator { |
| private final String replyDestinationType; |
| private @Transient String replyDestinationName; |
| private @Transient String replyJndiName; |
| private @Transient Destination replyDestination; |
| |
| public JMSRequestResponseChannel(String name, String destinationType, String replyDestinationType, ContentTypeMode contentTypeMode) { |
| super(name, destinationType, contentTypeMode); |
| this.replyDestinationType = replyDestinationType; |
| } |
| |
| public JMSRequestResponseChannel(String destinationType, String replyDestinationType, ContentTypeMode contentTypeMode) { |
| this(null, destinationType, replyDestinationType, contentTypeMode); |
| } |
| |
| @Setup @SuppressWarnings("unused") |
| private void setUp(JMSTestEnvironment env) throws Exception { |
| replyDestinationName = buildDestinationName("response", replyDestinationType); |
| replyJndiName = buildJndiName("response", replyDestinationType); |
| replyDestination = env.createDestination(replyDestinationType, replyDestinationName); |
| context.bind(replyJndiName, replyDestination); |
| } |
| |
| @TearDown @SuppressWarnings("unused") |
| private void tearDown() throws Exception { |
| context.unbind(replyJndiName); |
| env.deleteDestination(replyDestination); |
| } |
| |
| @Override |
| public void setupService(AxisService service, boolean isClientSide) throws Exception { |
| super.setupService(service, isClientSide); |
| service.addParameter(JMSConstants.PARAM_REPLY_DEST_TYPE, replyDestinationType); |
| service.addParameter(JMSConstants.PARAM_REPLY_DESTINATION, replyJndiName); |
| } |
| |
| public void setupRequestMessageContext(MessageContext msgContext) { |
| // msgContext.setProperty(JMSConstants.JMS_REPLY_TO, replyDestinationName); |
| } |
| |
| @Override |
| public EndpointReference getEndpointReference() throws Exception { |
| String address = super.getEndpointReference().getAddress(); |
| return new EndpointReference(address + "&" + JMSConstants.PARAM_REPLY_DEST_TYPE + "=" + replyDestinationType + "&" + JMSConstants.PARAM_REPLY_DESTINATION + "=" + replyJndiName); |
| } |
| |
| @Key("replyDestType") |
| public String getReplyDestinationType() { |
| return replyDestinationType; |
| } |
| |
| public Destination getReplyDestination() { |
| return replyDestination; |
| } |
| } |