From d888428d9fc7e9a9be609dd2d0b8576004af93ad Mon Sep 17 00:00:00 2001 From: antelder Date: Wed, 9 Nov 2011 15:31:53 +0000 Subject: Update the JMS binding so that the message format may be either AXIOM or DOM. The default is still DOM as that minimizes the required dependencies but you can now configure it to use AXIOM OMElements which are optimized in some runtime environments git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1199797 13f79535-47bb-0310-9956-ffa450edef68 --- ...rationSelectorJMSDefaultServiceInterceptor.java | 31 +++++++++------------- 1 file changed, 12 insertions(+), 19 deletions(-) (limited to 'sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/operationselector/jmsdefault/runtime') diff --git a/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/operationselector/jmsdefault/runtime/OperationSelectorJMSDefaultServiceInterceptor.java b/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/operationselector/jmsdefault/runtime/OperationSelectorJMSDefaultServiceInterceptor.java index 57879952ce..352141682d 100644 --- a/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/operationselector/jmsdefault/runtime/OperationSelectorJMSDefaultServiceInterceptor.java +++ b/sca-java-2.x/trunk/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/operationselector/jmsdefault/runtime/OperationSelectorJMSDefaultServiceInterceptor.java @@ -31,20 +31,18 @@ import org.apache.tuscany.sca.binding.jms.context.JMSBindingContext; 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.binding.jms.provider.xml.XMLHelper; +import org.apache.tuscany.sca.binding.jms.provider.xml.XMLHelperFactory; import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSBytesXML; import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSDefault; import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSTextXML; -import org.apache.tuscany.sca.common.xml.dom.DOMHelper; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.invocation.InterceptorAsyncImpl; 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.runtime.RuntimeComponentService; import org.apache.tuscany.sca.runtime.RuntimeEndpoint; -import org.w3c.dom.Node; -import org.xml.sax.SAXException; /** * Policy handler to handle PolicySet related to Logging with the QName @@ -64,7 +62,7 @@ public class OperationSelectorJMSDefaultServiceInterceptor extends InterceptorAs private JMSMessageProcessor responseMessageProcessor; private RuntimeComponentService service; private List serviceOperations; - private DOMHelper domHelper; + private XMLHelper xmlHelper; public OperationSelectorJMSDefaultServiceInterceptor(ExtensionPointRegistry registry, JMSResourceFactory jmsResourceFactory, RuntimeEndpoint endpoint) { super(); @@ -75,7 +73,7 @@ public class OperationSelectorJMSDefaultServiceInterceptor extends InterceptorAs this.responseMessageProcessor = JMSMessageProcessorUtil.getResponseMessageProcessor(registry, jmsBinding); this.service = (RuntimeComponentService)endpoint.getService(); this.serviceOperations = service.getInterfaceContract().getInterface().getOperations(); - this.domHelper = DOMHelper.getInstance(registry); + this.xmlHelper = XMLHelperFactory.createXMLHelper(registry); } public Message invoke(Message msg) { @@ -118,10 +116,9 @@ public class OperationSelectorJMSDefaultServiceInterceptor extends InterceptorAs } } } else if (jmsBinding.getRequestWireFormat() instanceof WireFormatJMSDefault - || jmsBinding.getRequestWireFormat() instanceof WireFormatJMSTextXML - || jmsBinding.getRequestWireFormat() instanceof WireFormatJMSBytesXML) { + || jmsBinding.getRequestWireFormat() instanceof WireFormatJMSTextXML + || jmsBinding.getRequestWireFormat() instanceof WireFormatJMSBytesXML) { - Node rootElement; String operationFromPayload; try { @@ -129,10 +126,9 @@ public class OperationSelectorJMSDefaultServiceInterceptor extends InterceptorAs String xmlPayload = ((TextMessage) jmsMsg).getText(); if (xmlPayload != null) { - rootElement = domHelper.load(xmlPayload); - Node firstChild = rootElement.getFirstChild(); - if (firstChild != null) { - operationFromPayload = firstChild.getLocalName(); + Object rootElement = xmlHelper.load(xmlPayload); + operationFromPayload = xmlHelper.getOperationName(rootElement); + if (operationFromPayload != null) { for (Operation op : serviceOperations) { if (op.getName().equals(operationFromPayload)) { operation = op; @@ -148,10 +144,9 @@ public class OperationSelectorJMSDefaultServiceInterceptor extends InterceptorAs ((BytesMessage) jmsMsg).reset(); if (bytes != null) { - rootElement = domHelper.load(new String(bytes)); - Node firstChild = rootElement.getFirstChild(); - if (firstChild != null) { - operationFromPayload = firstChild.getLocalName(); + Object rootElement = xmlHelper.load(new String(bytes)); + operationFromPayload = xmlHelper.getOperationName(rootElement); + if (operationFromPayload != null) { for (Operation op : serviceOperations) { if (op.getName().equals(operationFromPayload)) { operation = op; @@ -164,8 +159,6 @@ public class OperationSelectorJMSDefaultServiceInterceptor extends InterceptorAs } catch (IOException e) { //let's ignore this in case the client doesn't want to use a wrapped xml message - } catch (SAXException e) { - //let's ignore this in case the client doesn't want to use a wrapped xml message } catch (JMSException e) { throw new JMSBindingException(e); } -- cgit v1.2.3