diff options
Diffstat (limited to 'branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java')
-rw-r--r-- | branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java | 56 |
1 files changed, 9 insertions, 47 deletions
diff --git a/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java b/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java index e84279cae1..62b51bd797 100644 --- a/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java +++ b/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java @@ -18,32 +18,23 @@ */ package org.apache.tuscany.sca.binding.jms.transport; -import java.util.List; - import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.MessageProducer; import javax.jms.Session; import javax.naming.NamingException; - import org.apache.tuscany.sca.binding.jms.context.JMSBindingContext; import org.apache.tuscany.sca.binding.jms.impl.JMSBinding; import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants; import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException; -import org.apache.tuscany.sca.binding.jms.policy.authentication.token.JMSTokenAuthenticationPolicy; -import org.apache.tuscany.sca.binding.jms.policy.header.JMSHeaderPolicy; import org.apache.tuscany.sca.binding.jms.provider.JMSMessageProcessor; import org.apache.tuscany.sca.binding.jms.provider.JMSMessageProcessorUtil; import org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactory; -import org.apache.tuscany.sca.interfacedef.Operation; import org.apache.tuscany.sca.invocation.Interceptor; import org.apache.tuscany.sca.invocation.Invoker; import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.policy.PolicySet; -import org.apache.tuscany.sca.policy.PolicySetAttachPoint; import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; import org.apache.tuscany.sca.runtime.RuntimeWire; /** @@ -53,18 +44,14 @@ import org.apache.tuscany.sca.runtime.RuntimeWire; * @version $Rev$ $Date$ */ public class TransportReferenceInterceptor implements Interceptor { - - private static final String ON_MESSAGE_METHOD_NAME = "onMessage"; - + private Invoker next; private RuntimeWire runtimeWire; private JMSResourceFactory jmsResourceFactory; private JMSBinding jmsBinding; private JMSMessageProcessor requestMessageProcessor; private JMSMessageProcessor responseMessageProcessor; - private RuntimeComponentReference reference; - protected JMSHeaderPolicy jmsHeaderPolicy = null; - + private RuntimeComponentReference reference; public TransportReferenceInterceptor(JMSBinding jmsBinding, JMSResourceFactory jmsResourceFactory, RuntimeWire runtimeWire) { super(); @@ -73,26 +60,14 @@ public class TransportReferenceInterceptor implements Interceptor { this.jmsResourceFactory = jmsResourceFactory; this.requestMessageProcessor = JMSMessageProcessorUtil.getRequestMessageProcessor(jmsBinding); this.responseMessageProcessor = JMSMessageProcessorUtil.getResponseMessageProcessor(jmsBinding); - this.reference = (RuntimeComponentReference)runtimeWire.getSource().getContract(); - - // find out if the header policy is active - if (jmsBinding instanceof PolicySetAttachPoint) { - List<PolicySet> policySets = ((PolicySetAttachPoint)jmsBinding).getApplicablePolicySets(); - for (PolicySet ps : policySets) { - for (Object p : ps.getPolicies()) { - if (JMSHeaderPolicy.class.isInstance(p)) { - jmsHeaderPolicy = (JMSHeaderPolicy)p; - } - } - } - } + this.reference = (RuntimeComponentReference)runtimeWire.getSource().getContract(); } public Message invoke(Message msg) { Message responseMsg = invokeRequest(msg); // get the jms context - JMSBindingContext context = (JMSBindingContext)msg.getHeaders().get(JMSBindingConstants.MSG_CTXT_POSITION); + JMSBindingContext context = msg.getBindingContext(); if (context.getReplyToDestination() == null) { responseMsg.setBody(null); @@ -106,7 +81,7 @@ public class TransportReferenceInterceptor implements Interceptor { public Message invokeRequest(Message msg) { try { // get the jms context - JMSBindingContext context = (JMSBindingContext)msg.getHeaders().get(JMSBindingConstants.MSG_CTXT_POSITION); + JMSBindingContext context = msg.getBindingContext(); Session session = context.getJmsSession(); MessageProducer producer = session.createProducer(context.getRequestDestination()); @@ -129,34 +104,21 @@ public class TransportReferenceInterceptor implements Interceptor { public Message invokeResponse(Message msg) { try { // get the jms context - JMSBindingContext context = (JMSBindingContext)msg.getHeaders().get(JMSBindingConstants.MSG_CTXT_POSITION); + JMSBindingContext context = msg.getBindingContext(); Session session = context.getJmsSession(); javax.jms.Message requestMessage = (javax.jms.Message)msg.getBody(); - - String operationName = msg.getOperation().getName(); - + String msgSelector = "JMSCorrelationID = '" + requestMessage.getJMSMessageID() + "'"; - MessageConsumer consumer = session.createConsumer(context.getReplyToDestination(), msgSelector); - - long receiveWait; - - if ((jmsHeaderPolicy != null) && - (jmsHeaderPolicy.getTimeToLive() != null)) { - receiveWait = jmsHeaderPolicy.getTimeToLive(); - } else if (jmsBinding.getOperationJMSTimeToLive(operationName) != null) { - receiveWait = jmsBinding.getOperationJMSTimeToLive(operationName) * 2; - } else { - receiveWait = JMSBindingConstants.DEFAULT_TIME_TO_LIVE; - } + MessageConsumer consumer = session.createConsumer(context.getReplyToDestination(), msgSelector); javax.jms.Message replyMsg; try { context.getJmsResourceFactory().startConnection(); //jmsResourceFactory.startConnection(); - replyMsg = consumer.receive(receiveWait); + replyMsg = consumer.receive(context.getTimeToLive()); } finally { consumer.close(); } |