diff options
Diffstat (limited to 'branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime')
5 files changed, 0 insertions, 813 deletions
diff --git a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java b/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java deleted file mode 100644 index 98ca94e407..0000000000 --- a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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.tuscany.sca.binding.jms.wireformat.jmsdefault.runtime; - -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.binding.jms.JMSBinding; -import org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactory; -import org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactoryExtensionPoint; -import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSDefault; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.provider.WireFormatProvider; -import org.apache.tuscany.sca.provider.WireFormatProviderFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * @version $Rev$ $Date$ - */ -public class WireFormatJMSDefaultProviderFactory implements WireFormatProviderFactory<WireFormatJMSDefault> { - private ExtensionPointRegistry registry; - private JMSResourceFactoryExtensionPoint jmsRFEP; - - public WireFormatJMSDefaultProviderFactory(ExtensionPointRegistry registry) { - super(); - this.registry = registry; - jmsRFEP = (JMSResourceFactoryExtensionPoint) registry.getExtensionPoint(JMSResourceFactoryExtensionPoint.class); - } - - /** - */ - public WireFormatProvider createReferenceWireFormatProvider(RuntimeComponent component, RuntimeComponentReference reference, - Binding binding) { - return new WireFormatJMSDefaultReferenceProvider(registry, component, reference, binding); - } - - /** - */ - public WireFormatProvider createServiceWireFormatProvider(RuntimeComponent component, RuntimeComponentService service, Binding binding) { - JMSResourceFactory jmsRF = jmsRFEP.createJMSResourceFactory((JMSBinding) binding); - return new WireFormatJMSDefaultServiceProvider(registry, component, service, binding, jmsRF); - } - - /** - * @see org.apache.tuscany.sca.provider.ProviderFactory#getModelType() - */ - public Class getModelType() { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java b/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java deleted file mode 100644 index 7bdeb9dae8..0000000000 --- a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * 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.tuscany.sca.binding.jms.wireformat.jmsdefault.runtime; - -import java.util.HashMap; - -import javax.jms.BytesMessage; -import javax.jms.JMSException; -import javax.jms.Session; -import javax.xml.namespace.QName; - -import org.apache.axiom.om.OMElement; -import org.apache.tuscany.sca.binding.jms.JMSBinding; -import org.apache.tuscany.sca.binding.jms.JMSBindingConstants; -import org.apache.tuscany.sca.binding.jms.JMSBindingException; -import org.apache.tuscany.sca.binding.jms.context.JMSBindingContext; -import org.apache.tuscany.sca.binding.jms.provider.DefaultMessageProcessor; -import org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactory; -import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSDefault; -import org.apache.tuscany.sca.interfacedef.DataType; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.util.FaultException; -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.RuntimeWire; - -/** - * - * @version $Rev$ $Date$ - */ -public class WireFormatJMSDefaultReferenceInterceptor implements Interceptor { - - private Invoker next; - private RuntimeWire runtimeWire; - private JMSResourceFactory jmsResourceFactory; - private JMSBinding jmsBinding; - private DefaultMessageProcessor requestMessageProcessor; - private DefaultMessageProcessor responseMessageProcessor; - private HashMap<String, Boolean> inputWrapperMap; - private HashMap<String, OMElement> outputWrapperMap; - - public WireFormatJMSDefaultReferenceInterceptor(JMSBinding jmsBinding, JMSResourceFactory jmsResourceFactory, RuntimeWire runtimeWire, HashMap<String, Boolean> inputWrapperMap, - HashMap<String, OMElement> outputWrapperMap) { - super(); - this.jmsBinding = jmsBinding; - this.runtimeWire = runtimeWire; - this.jmsResourceFactory = jmsResourceFactory; - // Note the default processor doesn't follow the normal processor pattern - // as it has to handle both text and bytes messages - this.requestMessageProcessor = new DefaultMessageProcessor(jmsBinding); - this.responseMessageProcessor = new DefaultMessageProcessor(jmsBinding); - this.inputWrapperMap = inputWrapperMap; - this.outputWrapperMap = outputWrapperMap; - } - - public Message invoke(Message msg) { - - if (jmsBinding.getRequestWireFormat() instanceof WireFormatJMSDefault) { - msg = invokeRequest(msg); - } - - msg = getNext().invoke(msg); - - if (jmsBinding.getResponseWireFormat() instanceof WireFormatJMSDefault) { - msg = invokeResponse(msg); - } - - return msg; - } - - public Message invokeRequest(Message msg) { - try { - // get the jms context - JMSBindingContext context = msg.getBindingContext(); - Session session = context.getJmsSession(); - - javax.jms.Message requestMsg; - - if (((WireFormatJMSDefault) jmsBinding.getRequestWireFormat()).isUseBytesMessage()) { - requestMsg = requestMessageProcessor.insertPayloadIntoJMSBytesMessage(session, msg.getBody(), this.inputWrapperMap.get(msg.getOperation().getName())); - } else { - requestMsg = requestMessageProcessor.insertPayloadIntoJMSTextMessage(session, msg.getBody(), this.inputWrapperMap.get(msg.getOperation().getName())); - } - - msg.setBody(requestMsg); - - requestMsg.setJMSReplyTo(context.getReplyToDestination()); - - return msg; - } catch (JMSException e) { - throw new JMSBindingException(e); - } - } - - public Message invokeResponse(Message msg) { - if (msg.getBody() != null) { - javax.jms.Message jmsMsg = (javax.jms.Message) msg.getBody(); - - Operation op = msg.getOperation(); - DataType outputDataType = op.getOutputType(); - - Class<?> outputType = null; - if (outputDataType != null) { - outputType = outputDataType.getPhysical(); - } - - if (outputType != null && javax.jms.Message.class.isAssignableFrom(outputType)) { - msg.setBody(jmsMsg); - } else { - - OMElement wrapper = null; - // if we have a fault no need to wrap the response - try { - if (!jmsMsg.getBooleanProperty(JMSBindingConstants.FAULT_PROPERTY)) { - // If there is only one arg we must add a wrapper if the operation is wrapper style - wrapper = this.outputWrapperMap.get(msg.getOperation().getName()); - } - } catch (JMSException e) { - throw new JMSBindingException(e); - } - - Object response; - if (jmsMsg instanceof BytesMessage) { - response = responseMessageProcessor.extractPayloadFromJMSBytesMessage(jmsMsg, wrapper); - } else { - response = responseMessageProcessor.extractPayloadFromJMSTextMessage(jmsMsg, wrapper); - } - - if (response != null) { - msg.setBody(response); - try { - if (jmsMsg.getBooleanProperty(JMSBindingConstants.FAULT_PROPERTY)) { - FaultException e = new FaultException("remote exception", response); - OMElement om = (OMElement) response; - e.setFaultName(new QName(om.getNamespace().getNamespaceURI(), om.getLocalName())); - msg.setFaultBody(e); - } - } catch (JMSException e) { - throw new JMSBindingException(e); - } - } else { - msg.setBody(null); - } - } - } - - return msg; - } - - public Invoker getNext() { - return next; - } - - public void setNext(Invoker next) { - this.next = next; - } -} diff --git a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java b/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java deleted file mode 100644 index deec71a3f6..0000000000 --- a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * 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.tuscany.sca.binding.jms.wireformat.jmsdefault.runtime; - -import java.util.HashMap; -import java.util.List; - -import org.apache.axiom.om.OMAbstractFactory; -import org.apache.axiom.om.OMElement; -import org.apache.axiom.om.OMFactory; -import org.apache.axiom.om.OMNamespace; -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.binding.jms.JMSBinding; -import org.apache.tuscany.sca.binding.jms.JMSBindingConstants; -import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSDefault; -import org.apache.tuscany.sca.binding.ws.WebServiceBinding; -import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory; -import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.interfacedef.DataType; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.util.ElementInfo; -import org.apache.tuscany.sca.invocation.Interceptor; -import org.apache.tuscany.sca.invocation.Phase; -import org.apache.tuscany.sca.provider.WireFormatProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; - -/** - * @version $Rev$ $Date$ - */ -public class WireFormatJMSDefaultReferenceProvider implements WireFormatProvider { - private ExtensionPointRegistry registry; - private RuntimeComponent component; - private RuntimeComponentReference reference; - private JMSBinding binding; - private InterfaceContract interfaceContract; - private HashMap<String, Boolean> inputWrapperMap; - private HashMap<String, OMElement> outputWrapperMap; - - public WireFormatJMSDefaultReferenceProvider(ExtensionPointRegistry registry, RuntimeComponent component, RuntimeComponentReference reference, Binding binding) { - super(); - this.registry = registry; - this.component = component; - this.reference = reference; - this.binding = (JMSBinding) binding; - - this.inputWrapperMap = new HashMap<String, Boolean>(); - this.outputWrapperMap = new HashMap<String, OMElement>(); - - // configure the reference based on this wire format - - // currently maintaining the message processor structure which - // contains the details of jms message processing so set the message - // type here if not set explicitly in SCDL - if (this.binding.getRequestWireFormat() instanceof WireFormatJMSDefault){ - this.binding.setRequestMessageProcessorName(JMSBindingConstants.DEFAULT_MP_CLASSNAME); - } - if (this.binding.getResponseWireFormat() instanceof WireFormatJMSDefault){ - this.binding.setResponseMessageProcessorName(JMSBindingConstants.DEFAULT_MP_CLASSNAME); - } - - // TODO - can be null if it's a $self$ reference. Need to decide if - // that's valid - if (reference.getReference() == null){ - interfaceContract = reference.getInterfaceContract(); - return; - } - - List<Operation> opList = reference.getReference().getInterfaceContract().getInterface().getOperations(); - - // Go through each operation and add wrapper info - OMFactory factory = OMAbstractFactory.getOMFactory(); - - // set the binding interface contract to represent the WSDL for the - // xml messages that will be sent - // I think we have to check for asIs because the Java2WSDL will blow up when using javax.jms.Message - if (reference.getInterfaceContract() != null && !isAsIs()) { - WebServiceBindingFactory wsFactory = registry.getExtensionPoint(WebServiceBindingFactory.class); - WebServiceBinding wsBinding = wsFactory.createWebServiceBinding(); - BindingWSDLGenerator.generateWSDL(component, reference, wsBinding, registry, null); - interfaceContract = wsBinding.getBindingInterfaceContract(); - interfaceContract.getInterface().resetDataBinding(OMElement.class.getName()); - - List<Operation> wsdlOpList = interfaceContract.getInterface().getOperations(); - - for (Operation op : opList) { - - String name = op.getName(); - Operation matchingWsdlOp = null; - - // find the matching wsdlop - for (Operation wsdlOp : wsdlOpList) { - if (name.equals(wsdlOp.getName())) { - matchingWsdlOp = wsdlOp; - - break; - } - } - - // only add operations that need to be wrapped/unwrapped - // we need to look at the wsdl interface to determine if the op is wrapped or not - - // TODO - not sure we really support viewing the input/output as separately wrapped - // like the separate code paths imply. Not sure how many @OneWay tests we have, this might - // not be an issue. - - if (matchingWsdlOp.isWrapperStyle()) { - if (op.getInputType().getLogical().size() == 1) { - this.inputWrapperMap.put(name, true); - } else { - this.inputWrapperMap.put(name, false); - } - } else { - this.inputWrapperMap.put(name, false); - } - - if (matchingWsdlOp.isWrapperStyle()) { - // we only need to know what the wrapper is on the deserialization - // might need to change this when there input/output wrapper style is different - ElementInfo ei = op.getWrapper().getOutputWrapperElement(); - String namespace = ei.getQName().getNamespaceURI(); - String opName = ei.getQName().getLocalPart(); - OMNamespace ns = factory.createOMNamespace(namespace, "ns2"); - OMElement wrapper = factory.createOMElement(opName, ns); - - this.outputWrapperMap.put(name, wrapper); - } - } - } else { - interfaceContract = reference.getReference().getInterfaceContract(); - } - - } - - protected boolean isAsIs() { - InterfaceContract ic = reference.getInterfaceContract(); - if (ic.getInterface().getOperations().size() != 1) { - return false; - } - - List<DataType> inputDataTypes = ic.getInterface().getOperations().get(0).getInputType().getLogical(); - - if (inputDataTypes.size() != 1) { - return false; - } - - Class<?> inputType = inputDataTypes.get(0).getPhysical(); - - if (javax.jms.Message.class.isAssignableFrom(inputType)) { - return true; - } - return false; - } - - public InterfaceContract configureWireFormatInterfaceContract(InterfaceContract interfaceContract){ - - if (this.interfaceContract != null && - !isAsIs()) { - if (this.binding.getRequestWireFormat() instanceof WireFormatJMSDefault){ - // set the request data transformation - interfaceContract.getInterface().resetInterfaceInputTypes(this.interfaceContract.getInterface()); - } - if (this.binding.getResponseWireFormat() instanceof WireFormatJMSDefault){ - // set the response data transformation - interfaceContract.getInterface().resetInterfaceOutputTypes(this.interfaceContract.getInterface()); - } - } - - return interfaceContract; - } - - public Interceptor createInterceptor() { - return new WireFormatJMSDefaultReferenceInterceptor((JMSBinding) binding, null, reference.getRuntimeWire(binding), inputWrapperMap, outputWrapperMap); - } - - public String getPhase() { - return Phase.REFERENCE_BINDING_WIREFORMAT; - } - - public InterfaceContract getWireFormatInterfaceContract() { - return interfaceContract; - } -} diff --git a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultServiceInterceptor.java b/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultServiceInterceptor.java deleted file mode 100644 index 2043a122ce..0000000000 --- a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultServiceInterceptor.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * 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.tuscany.sca.binding.jms.wireformat.jmsdefault.runtime; - -import java.util.HashMap; -import java.util.List; - -import javax.jms.BytesMessage; -import javax.jms.Session; - -import org.apache.axiom.om.OMElement; -import org.apache.tuscany.sca.binding.jms.JMSBinding; -import org.apache.tuscany.sca.binding.jms.context.JMSBindingContext; -import org.apache.tuscany.sca.binding.jms.provider.DefaultMessageProcessor; -import org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactory; -import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSDefault; -import org.apache.tuscany.sca.interfacedef.DataType; -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.RuntimeWire; - -/** - * Policy handler to handle PolicySet related to Logging with the QName {http://tuscany.apache.org/xmlns/sca/1.0/impl/java}LoggingPolicy - * - * @version $Rev$ $Date$ - */ -public class WireFormatJMSDefaultServiceInterceptor implements Interceptor { - private Invoker next; - private RuntimeWire runtimeWire; - private JMSResourceFactory jmsResourceFactory; - private JMSBinding jmsBinding; - private DefaultMessageProcessor requestMessageProcessor; - private DefaultMessageProcessor responseMessageProcessor; - private HashMap<String,OMElement> inputWrapperMap; - private HashMap<String, Boolean> outputWrapperMap; - - public WireFormatJMSDefaultServiceInterceptor(JMSBinding jmsBinding, JMSResourceFactory jmsResourceFactory, RuntimeWire runtimeWire, HashMap<String, OMElement> inputWrapperMap, - HashMap<String, Boolean> outputWrapperMap) { - super(); - this.jmsBinding = jmsBinding; - this.runtimeWire = runtimeWire; - this.jmsResourceFactory = jmsResourceFactory; - // Note the default processor doesn't follow the normal processor pattern - // as it has to handle both text and bytes messages - this.requestMessageProcessor = new DefaultMessageProcessor(jmsBinding); - this.responseMessageProcessor = new DefaultMessageProcessor(jmsBinding); - this.inputWrapperMap = inputWrapperMap; - this.outputWrapperMap = outputWrapperMap; - - } - - public Message invoke(Message msg) { - - if (jmsBinding.getRequestWireFormat() instanceof WireFormatJMSDefault) { - msg = invokeRequest(msg); - } - - msg = getNext().invoke(msg); - - // if it's oneway return back - Operation operation = msg.getOperation(); - if (operation != null && operation.isNonBlocking()) { - return msg; - } - - if (jmsBinding.getResponseWireFormat() instanceof WireFormatJMSDefault) { - msg = invokeResponse(msg); - } - - return msg; - } - - public Message invokeRequest(Message msg) { - // get the jms context - JMSBindingContext context = msg.getBindingContext(); - javax.jms.Message jmsMsg = context.getJmsMsg(); - - Operation op = msg.getOperation(); - List<DataType> inputDataTypes = op.getInputType().getLogical(); - - Class<?> inputType = null; - if (inputDataTypes.size() == 1) { - inputType = inputDataTypes.get(0).getPhysical(); - } - if (inputType != null && javax.jms.Message.class.isAssignableFrom(inputType)) { - msg.setBody(new Object[] { jmsMsg }); - - if (jmsMsg instanceof BytesMessage) { - context.setUseBytesForWFJMSDefaultResponse(true); - } else { - context.setUseBytesForWFJMSDefaultResponse(false); - } - } else { - - // If there is only one arg we must add a wrapper if the operation is wrapper style - OMElement wrapper = this.inputWrapperMap.get(msg.getOperation().getName()); - - Object requestPayload; - if (jmsMsg instanceof BytesMessage) { - requestPayload = responseMessageProcessor.extractPayloadFromJMSBytesMessage(jmsMsg, wrapper); - context.setUseBytesForWFJMSDefaultResponse(true); - } else { - requestPayload = responseMessageProcessor.extractPayloadFromJMSTextMessage(jmsMsg, wrapper ); - context.setUseBytesForWFJMSDefaultResponse(false); - } - - msg.setBody(new Object[] { requestPayload }); - } - - return msg; - - } - - public Message invokeResponse(Message msg) { - - // get the jms context - JMSBindingContext context = msg.getBindingContext(); - Session session = context.getJmsResponseSession(); - - javax.jms.Message responseJMSMsg; - - boolean respondBytesMessage = context.isUseBytesForWFJMSDefaultResponse(); - - if (msg.isFault()) { - if (respondBytesMessage == true) { - responseJMSMsg = requestMessageProcessor.createFaultJMSBytesMessage(session, (Throwable) msg.getBody()); - } else { - responseJMSMsg = responseMessageProcessor.createFaultJMSTextMessage(session, (Throwable) msg.getBody()); - } - } else { - boolean unwrap = false; - - if (this.outputWrapperMap.get(msg.getOperation().getName()) != null){ - unwrap = this.outputWrapperMap.get(msg.getOperation().getName()); - } - - if (respondBytesMessage == true) { - responseJMSMsg = requestMessageProcessor.insertPayloadIntoJMSBytesMessage(session, msg.getBody(), unwrap); - } else { - responseJMSMsg = requestMessageProcessor.insertPayloadIntoJMSTextMessage(session, msg.getBody(), unwrap); - } - } - - msg.setBody(responseJMSMsg); - - return msg; - } - - public Invoker getNext() { - return next; - } - - public void setNext(Invoker next) { - this.next = next; - } -} diff --git a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultServiceProvider.java b/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultServiceProvider.java deleted file mode 100644 index 68d2f8189d..0000000000 --- a/branches/sca-java-2.0-M4/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultServiceProvider.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * 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.tuscany.sca.binding.jms.wireformat.jmsdefault.runtime; - -import java.util.HashMap; -import java.util.List; - -import org.apache.axiom.om.OMAbstractFactory; -import org.apache.axiom.om.OMElement; -import org.apache.axiom.om.OMFactory; -import org.apache.axiom.om.OMNamespace; -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.binding.jms.JMSBinding; -import org.apache.tuscany.sca.binding.jms.JMSBindingConstants; -import org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactory; -import org.apache.tuscany.sca.binding.jms.wireformat.WireFormatJMSDefault; -import org.apache.tuscany.sca.binding.ws.WebServiceBinding; -import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory; -import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.interfacedef.DataType; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.util.ElementInfo; -import org.apache.tuscany.sca.invocation.Interceptor; -import org.apache.tuscany.sca.invocation.Phase; -import org.apache.tuscany.sca.provider.WireFormatProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * @version $Rev$ $Date$ - */ -public class WireFormatJMSDefaultServiceProvider implements WireFormatProvider { - private ExtensionPointRegistry registry; - private RuntimeComponent component; - private RuntimeComponentService service; - private JMSBinding binding; - private JMSResourceFactory jmsResourceFactory; - private InterfaceContract interfaceContract; - private HashMap<String, OMElement> inputWrapperMap; - private HashMap<String, Boolean> outputWrapperMap; - - public WireFormatJMSDefaultServiceProvider(ExtensionPointRegistry registry, RuntimeComponent component, RuntimeComponentService service, Binding binding, JMSResourceFactory jmsResourceFactory) { - super(); - this.component = component; - this.service = service; - this.binding = (JMSBinding) binding; - this.jmsResourceFactory = jmsResourceFactory; - - this.inputWrapperMap = new HashMap<String, OMElement>(); - this.outputWrapperMap = new HashMap<String, Boolean>(); - - // configure the service based on this wire format - - // currently maintaining the message processor structure which - // contains the details of jms message processing so set the message - // type here if not set explicitly in SCDL - if (this.binding.getRequestWireFormat() instanceof WireFormatJMSDefault){ - this.binding.setRequestMessageProcessorName(JMSBindingConstants.DEFAULT_MP_CLASSNAME); - } - if (this.binding.getResponseWireFormat() instanceof WireFormatJMSDefault){ - this.binding.setResponseMessageProcessorName(JMSBindingConstants.DEFAULT_MP_CLASSNAME); - } - - List<Operation> opList = service.getService().getInterfaceContract().getInterface().getOperations(); - - // Go through each operation and add wrapper info - OMFactory factory = OMAbstractFactory.getOMFactory(); - - // set the binding interface contract to represent the WSDL for the - // xml messages that will be sent - - // I think we have to check for asIs because the Java2WSDL will blow up when using javax.jms.Message - if (service.getInterfaceContract() != null && !isAsIs()) { - WebServiceBindingFactory wsFactory = registry.getExtensionPoint(WebServiceBindingFactory.class); - WebServiceBinding wsBinding = wsFactory.createWebServiceBinding(); - BindingWSDLGenerator.generateWSDL(component, service, wsBinding, registry, null); - interfaceContract = wsBinding.getBindingInterfaceContract(); - interfaceContract.getInterface().resetDataBinding(OMElement.class.getName()); - - List<Operation> wsdlOpList = interfaceContract.getInterface().getOperations(); - - for (Operation op : opList) { - String name = op.getName(); - - Operation matchingWsdlOp = null; - - // find the matching wsdlop - for (Operation wsdlOp : wsdlOpList) { - if (name.equals(wsdlOp.getName())) { - matchingWsdlOp = wsdlOp; - break; - } - } - - // only add operations that need to be wrapped/unwrapped - - // TODO - not sure we really support viewing the input/output as separately wrapped - // like the separate code paths imply. Not sure how many @OneWay tests we have, this might - // not be an issue. - if (matchingWsdlOp.isWrapperStyle()) { - if (op.getInputType().getLogical().size() == 1) { - // we only need to know what the wrapper is on the deserialization - // might need to change this when the input/output wrapper style is different - ElementInfo ei = op.getWrapper().getInputWrapperElement(); - String namespace = ei.getQName().getNamespaceURI(); - String opName = ei.getQName().getLocalPart(); - OMNamespace ns = factory.createOMNamespace(namespace, "ns1"); - OMElement wrapper = factory.createOMElement(opName, ns); - this.inputWrapperMap.put(name, wrapper); - } - } - - if (matchingWsdlOp.isWrapperStyle()) { - this.outputWrapperMap.put(name, true); - } else { - this.outputWrapperMap.put(name, false); - } - - } - - } else { - interfaceContract = service.getService().getInterfaceContract(); - } - } - - protected boolean isAsIs() { - InterfaceContract ic = service.getInterfaceContract(); - if (ic.getInterface().getOperations().size() != 1) { - return false; - } - - List<DataType> inputDataTypes = ic.getInterface().getOperations().get(0).getInputType().getLogical(); - - if (inputDataTypes.size() != 1) { - return false; - } - - Class<?> inputType = inputDataTypes.get(0).getPhysical(); - - if (javax.jms.Message.class.isAssignableFrom(inputType)) { - return true; - } - return false; - } - - public InterfaceContract configureWireFormatInterfaceContract(InterfaceContract interfaceContract){ - - if (this.interfaceContract != null && - !isAsIs()) { - if (this.binding.getRequestWireFormat() instanceof WireFormatJMSDefault){ - // set the request data transformation - interfaceContract.getInterface().resetInterfaceInputTypes(this.interfaceContract.getInterface()); - } - if (this.binding.getResponseWireFormat() instanceof WireFormatJMSDefault){ - // set the response data transformation - interfaceContract.getInterface().resetInterfaceOutputTypes(this.interfaceContract.getInterface()); - } - } - - return interfaceContract; - } - - - public Interceptor createInterceptor() { - return new WireFormatJMSDefaultServiceInterceptor(binding, jmsResourceFactory, service.getRuntimeWire(binding), this.inputWrapperMap, this.outputWrapperMap); - } - - public String getPhase() { - return Phase.SERVICE_BINDING_WIREFORMAT; - } - - public InterfaceContract getWireFormatInterfaceContract() { - return interfaceContract; - } -} |