You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2009/04/24 13:49:40 UTC

svn commit: r768263 [1/2] - in /tuscany/branches/sca-java-1.x: itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/ itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/ itest/jm...

Author: slaws
Date: Fri Apr 24 11:49:38 2009
New Revision: 768263

URL: http://svn.apache.org/viewvc?rev=768263&view=rev
Log:
TUSCANY-2930 main part of separating wireFormat.jmsdefault out from wireFormat.jmsTextXML. I've spotted a few more things that need fixing but this basic functionality passes all of our current JMS tests and now better matched what the specification says about default format.

Added:
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldReferenceImpl.java   (with props)
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldService.java   (with props)
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldServiceImpl.java   (with props)
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/Person.java   (with props)
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.composite   (with props)
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.wsdl   (with props)
    tuscany/branches/sca-java-1.x/itest/jms-format/src/test/java/org/apache/tuscany/sca/binding/jms/format/FormatJMSDefaultTestCase.java   (with props)
    tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpservice.composite   (with props)
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultMessageProcessor.java   (with props)
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java   (with props)
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java   (with props)
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java   (with props)
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultServiceInterceptor.java   (with props)
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultServiceProvider.java   (with props)
    tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/
    tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/WireFormatJMSDefault.java   (with props)
    tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/WireFormatJMSDefaultProcessor.java   (with props)
Modified:
    tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmstextxml/helloworld.composite
    tuscany/branches/sca-java-1.x/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java
    tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpclient.composite
    tuscany/branches/sca-java-1.x/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/MessageProcessorTestCase.java
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/context/JMSBindingContext.java
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstext/runtime/WireFormatJMSTextReferenceProvider.java
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstext/runtime/WireFormatJMSTextServiceProvider.java
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstextxml/runtime/WireFormatJMSTextXMLReferenceProvider.java
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstextxml/runtime/WireFormatJMSTextXMLServiceInterceptor.java
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstextxml/runtime/WireFormatJMSTextXMLServiceProvider.java
    tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.WireFormatProviderFactory
    tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java
    tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
    tuscany/branches/sca-java-1.x/modules/binding-jms/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
    tuscany/branches/sca-java-1.x/modules/host-jms-asf/src/main/java/org/apache/tuscany/sca/host/jms/asf/ServiceInvoker.java

Added: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldReferenceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldReferenceImpl.java?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldReferenceImpl.java (added)
+++ tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldReferenceImpl.java Fri Apr 24 11:49:38 2009
@@ -0,0 +1,47 @@
+/*
+ * 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.format.jmsdefault.helloworld;
+
+import org.osoa.sca.annotations.Reference;
+
+
+public class HelloWorldReferenceImpl implements HelloWorldService {
+    
+    @Reference
+    protected HelloWorldService helloWorldService1;
+    
+    @Reference
+    protected HelloWorldService helloWorldService2;
+    
+    @Reference
+    protected HelloWorldService helloWorldService3;
+
+    public String getGreetings(String name){
+        return helloWorldService1.getGreetings(name) + " " +
+               helloWorldService2.getGreetings(name) + " " +
+               helloWorldService3.getGreetings(name);
+    }
+    
+    public String getPersonGreetings(Person person){
+        return helloWorldService1.getPersonGreetings(person) + " " + 
+               helloWorldService2.getPersonGreetings(person) + " " +
+               helloWorldService3.getPersonGreetings(person);
+    }
+}
+

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldReferenceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldReferenceImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldService.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldService.java?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldService.java (added)
+++ tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldService.java Fri Apr 24 11:49:38 2009
@@ -0,0 +1,33 @@
+/*
+ * 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.format.jmsdefault.helloworld;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * This is the business interface of the HelloWorld greetings service.
+ */
+@Remotable
+public interface HelloWorldService {
+
+    public String getGreetings(String name);
+    
+    public String getPersonGreetings(Person person);
+}
+

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldService.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldServiceImpl.java?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldServiceImpl.java (added)
+++ tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldServiceImpl.java Fri Apr 24 11:49:38 2009
@@ -0,0 +1,35 @@
+/*
+ * 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.format.jmsdefault.helloworld;
+
+public class HelloWorldServiceImpl implements HelloWorldService {
+
+    public String getGreetings(String name){
+        String response =  "Hello " + name;
+        System.out.println("getGreetings: " + response);
+        return response;
+    }
+    
+    public String getPersonGreetings(Person person){
+        String response =  "Hello " + person.getFirstName() + " " + person.getLastName();
+        System.out.println("getPersonGreetings: " + response);
+        return response;
+    }
+}
+

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldServiceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/HelloWorldServiceImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/Person.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/Person.java?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/Person.java (added)
+++ tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/Person.java Fri Apr 24 11:49:38 2009
@@ -0,0 +1,42 @@
+/*
+ * 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.format.jmsdefault.helloworld;
+
+public class Person {
+    String firstName;
+    String lastName;
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+}
+

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/Person.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/java/org/apache/tuscany/sca/binding/jms/format/jmsdefault/helloworld/Person.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.composite
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.composite?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.composite (added)
+++ tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.composite Fri Apr 24 11:49:38 2009
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * 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.    
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+    targetNamespace="http://helloworld"
+    xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+    xmlns:hw="http://helloworld"
+    name="helloworld">
+
+    <component name="HelloWorldReferenceComponent">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.format.jmsdefault.helloworld.HelloWorldReferenceImpl" />
+        <reference name="helloWorldService1" >
+            <binding.jms>
+                <destination name="HelloWorldService1"/>
+            </binding.jms>
+        </reference>  
+        <reference name="helloWorldService2" >
+            <binding.jms>
+                <destination name="HelloWorldService2"/>
+                <tuscany:wireFormat.jmsdefault/>
+            </binding.jms>
+        </reference>
+        <reference name="helloWorldService3" >
+            <binding.jms>
+                <destination name="HelloWorldService3"/>
+                <tuscany:wireFormat.jmsdefault sendFormat="text"/>
+            </binding.jms>
+        </reference>      
+    </component>
+    
+    <component name="HelloWorldServiceComponent1">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.format.jmsdefault.helloworld.HelloWorldServiceImpl" />
+        <service name="HelloWorldService">
+            <binding.jms>
+                <destination name="HelloWorldService1"/>
+            </binding.jms>
+        </service>
+    </component> 
+    
+    <component name="HelloWorldServiceComponent2">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.format.jmsdefault.helloworld.HelloWorldServiceImpl" />
+        <service name="HelloWorldService">
+            <interface.java interface="org.apache.tuscany.sca.binding.jms.format.jmsdefault.helloworld.HelloWorldService" />
+            <binding.jms>
+                <destination name="HelloWorldService2"/>
+                <tuscany:wireFormat.jmsdefault/>
+            </binding.jms>
+        </service>
+    </component>    
+        
+    <component name="HelloWorldServiceComponent3">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.format.jmsdefault.helloworld.HelloWorldServiceImpl" />
+	    <service name="HelloWorldService">
+	        <!--interface.wsdl interface="http://helloworld/textxml#wsdl.interface(HelloWorld)" /-->
+            <binding.jms>
+                <destination name="HelloWorldService3"/>
+                <tuscany:wireFormat.jmsdefault sendFormat="text"/>
+            </binding.jms>
+	    </service>
+    </component>
+    
+</composite>
\ No newline at end of file

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.composite
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.composite
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.composite
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.wsdl
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.wsdl?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.wsdl (added)
+++ tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.wsdl Fri Apr 24 11:49:38 2009
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.    
+-->
+<wsdl:definitions targetNamespace="http://helloworld/textxml" xmlns:tns="http://helloworld/textxml" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	name="helloworld">
+
+    <wsdl:types>
+        <schema elementFormDefault="qualified" targetNamespace="http://helloworld/textxml" xmlns="http://www.w3.org/2001/XMLSchema">
+           
+            <element name="getGreetings">
+                <complexType>
+                    <sequence>
+                        <element name="name" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <element name="getGreetingsResponse">
+                <complexType>
+                    <sequence>
+                        <element name="getGreetingsReturn" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            
+        </schema>
+        <schema elementFormDefault="qualified" targetNamespace="http://helloworld/textxml" xmlns="http://www.w3.org/2001/XMLSchema">
+
+            <xsd:complexType name="PersonType">
+                <xsd:sequence>
+                    <xsd:element name="firstName" type="xsd:string"/>
+                    <xsd:element name="lastName" type="xsd:string"/>
+                </xsd:sequence>
+            </xsd:complexType>
+            
+            <element name="getPersonGreetings">
+                <complexType>
+                    <sequence>
+                        <element name="person" type="PersonType"/>
+                    </sequence>
+                </complexType>
+            </element> 
+            
+            <element name="getPersonGreetingsResponse">
+                <complexType>
+                    <sequence>
+                        <element name="getPersonGreetingsReturn" type="xsd:string"/>
+                    </sequence>
+                </complexType>
+            </element>
+        </schema>
+        
+    </wsdl:types>
+
+    <wsdl:message name="getGreetingsRequest">
+        <wsdl:part element="tns:getGreetings" name="parameters"/>
+    </wsdl:message>
+
+    <wsdl:message name="getGreetingsResponse">
+        <wsdl:part element="tns:getGreetingsResponse" name="parameters"/>
+    </wsdl:message>
+    
+    <wsdl:message name="getPersonGreetingsRequest">
+        <wsdl:part element="tns:getPersonGreetings" name="parameters"/>
+    </wsdl:message>
+
+    <wsdl:message name="getPersonGreetingsResponse">
+        <wsdl:part element="tns:getPersonGreetingsResponse" name="parameters"/>
+    </wsdl:message>    
+
+    <wsdl:portType name="HelloWorld">
+        <wsdl:operation name="getGreetings">
+            <wsdl:input message="tns:getGreetingsRequest" name="getGreetingsRequest"/>
+            <wsdl:output message="tns:getGreetingsResponse" name="getGreetingsResponse"/>
+        </wsdl:operation>
+        <wsdl:operation name="getPersonGreetings">
+            <wsdl:input message="tns:getPersonGreetingsRequest" name="getPersonGreetingsRequest"/>
+            <wsdl:output message="tns:getPersonGreetingsResponse" name="getPersonGreetingsResponse"/>
+        </wsdl:operation>        
+    </wsdl:portType>
+
+    <wsdl:binding name="HelloWorldSoapBinding" type="tns:HelloWorld">
+        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="getGreetings">
+            <wsdlsoap:operation soapAction=""/>
+            <wsdl:input name="getGreetingsRequest">
+                <wsdlsoap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output name="getGreetingsResponse">
+                <wsdlsoap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="getPersonGreetings">
+            <wsdlsoap:operation soapAction=""/>
+            <wsdl:input name="getPersonGreetingsRequest">
+                <wsdlsoap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output name="getPersonGreetingsResponse">
+                <wsdlsoap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>        
+    </wsdl:binding>
+
+    <!-- wsdl:binding name="HelloWorldSoapJmsBinding" type="tns:HelloWorld">
+        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/jms"/>
+        <wsdl:operation name="getGreetings">
+            <wsdlsoap:operation soapAction=""/>
+            <wsdl:input name="getGreetingsRequest">
+                <wsdlsoap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output name="getGreetingsResponse">
+                <wsdlsoap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding-->
+
+    <wsdl:service name="HelloWorldService">
+        <wsdl:port binding="tns:HelloWorldSoapBinding" name="HelloWorldSoapPort">
+            <wsdlsoap:address location="http://localhost:8085/HelloWorldService"/>
+        </wsdl:port>
+    </wsdl:service>
+
+</wsdl:definitions>

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmsdefault/helloworld.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmstextxml/helloworld.composite
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmstextxml/helloworld.composite?rev=768263&r1=768262&r2=768263&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmstextxml/helloworld.composite (original)
+++ tuscany/branches/sca-java-1.x/itest/jms-format/src/main/resources/jmstextxml/helloworld.composite Fri Apr 24 11:49:38 2009
@@ -34,11 +34,13 @@
         <reference name="helloWorldService2" >
             <binding.jms>
                 <destination name="HelloWorldService2"/>
+                <tuscany:wireFormat.jmsTextXML/>
             </binding.jms>
         </reference>
         <reference name="helloWorldService3" >
             <binding.jms>
                 <destination name="HelloWorldService3"/>
+                <tuscany:wireFormat.jmsTextXML/>
             </binding.jms>
         </reference>      
     </component>
@@ -59,6 +61,7 @@
             <interface.java interface="org.apache.tuscany.sca.binding.jms.format.jmstextxml.helloworld.HelloWorldService" />
             <binding.jms>
                 <destination name="HelloWorldService2"/>
+                <tuscany:wireFormat.jmsTextXML/>
             </binding.jms>
         </service>
     </component>    
@@ -69,6 +72,7 @@
 	        <interface.wsdl interface="http://helloworld/textxml#wsdl.interface(HelloWorld)" />
             <binding.jms>
                 <destination name="HelloWorldService3"/>
+                <tuscany:wireFormat.jmsTextXML/>
             </binding.jms>
 	    </service>
     </component>

Added: tuscany/branches/sca-java-1.x/itest/jms-format/src/test/java/org/apache/tuscany/sca/binding/jms/format/FormatJMSDefaultTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms-format/src/test/java/org/apache/tuscany/sca/binding/jms/format/FormatJMSDefaultTestCase.java?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms-format/src/test/java/org/apache/tuscany/sca/binding/jms/format/FormatJMSDefaultTestCase.java (added)
+++ tuscany/branches/sca-java-1.x/itest/jms-format/src/test/java/org/apache/tuscany/sca/binding/jms/format/FormatJMSDefaultTestCase.java Fri Apr 24 11:49:38 2009
@@ -0,0 +1,68 @@
+/*
+ * 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.format;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.tuscany.sca.binding.jms.format.jmsdefault.helloworld.HelloWorldService;
+import org.apache.tuscany.sca.binding.jms.format.jmsdefault.helloworld.Person;
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * This shows how to test the JMS binding using a simple HelloWorld application.
+ */
+public class FormatJMSDefaultTestCase {
+
+    private static SCANode node;
+
+    @Before
+    public void init() {
+        SCANodeFactory factory = SCANodeFactory.newInstance();
+        node = factory.createSCANode("jmsdefault/helloworld.composite", 
+                                     new SCAContribution("test", "./target/classes"));
+
+        node.start();
+    }
+
+    @Test
+    public void testHelloWorldCreate() throws Exception {
+        HelloWorldService helloWorldService = ((SCAClient)node).getService(HelloWorldService.class, "HelloWorldReferenceComponent");
+        
+        assertEquals("Hello Fred Bloggs Hello Fred Bloggs Hello Fred Bloggs", helloWorldService.getGreetings("Fred Bloggs"));
+        
+        Person person = new Person();
+        person.setFirstName("Fred");
+        person.setLastName("Bloggs");
+        assertEquals("Hello Fred Bloggs Hello Fred Bloggs Hello Fred Bloggs", helloWorldService.getPersonGreetings(person));
+    }
+
+    @After
+    public void end() {
+        if (node != null) {
+            node.stop();
+        }
+    }
+}

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/test/java/org/apache/tuscany/sca/binding/jms/format/FormatJMSDefaultTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/jms-format/src/test/java/org/apache/tuscany/sca/binding/jms/format/FormatJMSDefaultTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/branches/sca-java-1.x/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java?rev=768263&r1=768262&r2=768263&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java Fri Apr 24 11:49:38 2009
@@ -23,9 +23,9 @@
 import javax.jms.Session;
 
 import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
-import org.apache.tuscany.sca.binding.jms.provider.XMLTextMessageProcessor;
+import org.apache.tuscany.sca.binding.jms.provider.TextMessageProcessor;
 
-public class TestMessageProcessor extends XMLTextMessageProcessor {
+public class TestMessageProcessor extends TextMessageProcessor {
 
     public static boolean insertPayloadIntoJMSMessageCalled;
     public static boolean extractPayloadFromJMSMessageCalled;

Modified: tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpclient.composite
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpclient.composite?rev=768263&r1=768262&r2=768263&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpclient.composite (original)
+++ tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpclient.composite Fri Apr 24 11:49:38 2009
@@ -20,17 +20,17 @@
 <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
            name="MPClientComposite">
 
-    <component name="HelloWorldClient">
+    <component name="HelloWorldClientMP">
         <implementation.java class="org.apache.tuscany.sca.binding.jms.HelloWorldClientImpl"/>
         <reference name="serviceA" />
     </component>
 
-    <reference name="serviceA" promote="HelloWorldClient/serviceA">
+    <reference name="serviceMP" promote="HelloWorldClientMP/serviceA">
         <interface.java interface="org.apache.tuscany.sca.binding.jms.HelloWorldService" />
         <binding.jms messageProcessor="org.apache.tuscany.sca.binding.jms.TestMessageProcessor">
-            <destination name="DestQueueA"/>
+            <destination name="DestQueueMP"/>
             <response>
-               <destination name="RespQueueA"/>
+               <destination name="RespQueueMP"/>
             </response>
         </binding.jms>  
     </reference>

Added: tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpservice.composite
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpservice.composite?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpservice.composite (added)
+++ tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpservice.composite Fri Apr 24 11:49:38 2009
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.    
+ -->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           name="MPServiceComposite">
+
+    <component name="HelloWorldServiceMP">
+        <implementation.java class="org.apache.tuscany.sca.binding.jms.HelloWorldServiceImpl"/>
+        <service name="HelloWorldService">
+            <binding.jms messageProcessor="org.apache.tuscany.sca.binding.jms.TestMessageProcessor">
+               <destination name="DestQueueMP" create="always"> 
+               </destination>
+               <response>
+                  <destination name="RespQueueMP" create="always"/>
+               </response>
+            </binding.jms>  
+        </service> 
+    </component>       
+
+</composite>

Propchange: tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpservice.composite
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpservice.composite
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/branches/sca-java-1.x/itest/jms/src/main/resources/simple/mpservice.composite
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: tuscany/branches/sca-java-1.x/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/MessageProcessorTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/MessageProcessorTestCase.java?rev=768263&r1=768262&r2=768263&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/MessageProcessorTestCase.java (original)
+++ tuscany/branches/sca-java-1.x/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/MessageProcessorTestCase.java Fri Apr 24 11:49:38 2009
@@ -36,13 +36,12 @@
     @Before
     public void init() {
         scaDomain =
-            SCADomain.newInstance("http://localhost", "/", "simple/mpclient.composite", "simple/service.composite");
-        // scaDomain = SCADomain.newInstance("http://localhost", "/", "simple/client.composite");
+            SCADomain.newInstance("http://localhost", "/", "simple/mpclient.composite", "simple/mpservice.composite");
     }
 
     @Test
     public void testHelloWorldCreate() throws Exception {
-        HelloWorldService helloWorldService = scaDomain.getService(HelloWorldService.class, "HelloWorldClient");
+        HelloWorldService helloWorldService = scaDomain.getService(HelloWorldService.class, "HelloWorldClientMP");
         assertEquals("jmsHello Petra", helloWorldService.sayHello("Petra"));
         assertTrue(TestMessageProcessor.extractPayloadFromJMSMessageCalled);
         assertTrue(TestMessageProcessor.insertPayloadIntoJMSMessageCalled);

Modified: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/context/JMSBindingContext.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/context/JMSBindingContext.java?rev=768263&r1=768262&r2=768263&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/context/JMSBindingContext.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/context/JMSBindingContext.java Fri Apr 24 11:49:38 2009
@@ -42,6 +42,7 @@
     private Destination replyToDestination;
     private JMSResourceFactory jmsResourceFactory;
     private long timeToLive;
+    private boolean useBytesForWFJMSDefaultResponse;
 
     public Message getJmsMsg() {
         return jmsMsg;
@@ -130,4 +131,13 @@
     public void setTimeToLive(long timeToLive) {
 		this.timeToLive = timeToLive;
 	}
+
+    public boolean isUseBytesForWFJMSDefaultResponse() {
+        return useBytesForWFJMSDefaultResponse;
+    }
+
+    public void setUseBytesForWFJMSDefaultResponse(
+            boolean useBytesForWFJMSDefaultResponse) {
+        this.useBytesForWFJMSDefaultResponse = useBytesForWFJMSDefaultResponse;
+    }
 }

Added: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultMessageProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultMessageProcessor.java?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultMessageProcessor.java (added)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultMessageProcessor.java Fri Apr 24 11:49:38 2009
@@ -0,0 +1,267 @@
+/*
+ * 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.provider;
+
+import java.io.ByteArrayInputStream;
+import java.io.StringReader;
+import java.util.logging.Logger;
+
+import javax.jms.BytesMessage;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+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.interfacedef.util.FaultException;
+
+/**
+ * MessageProcessor for sending/receiving XML over javax.jms.TextMessage or javax.jms.BytesMessage 
+ * with the JMSBinding.
+ * This is very specific to the default wire format and is not tied into the usual hierarchy
+ * of message processors
+ * 
+ * @version $Rev$ $Date$
+ */
+public class DefaultMessageProcessor extends AbstractMessageProcessor {
+    private static final Logger logger = Logger.getLogger(DefaultMessageProcessor.class.getName());
+
+    public DefaultMessageProcessor(JMSBinding jmsBinding) {
+        super(jmsBinding);
+    }
+    
+    // inherited methods that don't do anything useful
+    @Override
+    protected Message createJMSMessage(Session session, Object o) {
+        // should not be used
+        return null;
+    }
+    
+    @Override
+    protected Object extractPayload(Message msg) {
+        // if it's not a text/bytes message or a fault then we don;t know what to do with it
+        return null;
+    }
+    
+    // TODO - This makes the assumption that whatever the text/bytes configuration of the
+    //        jms binding, unchecked faults will be sent as bytes. 
+    @Override
+    public Message createFaultMessage(Session session, Throwable o) {
+        return createFaultJMSBytesMessage(session, o);
+    }
+    
+    // handle text messages
+    
+    public Object extractPayloadFromJMSTextMessage(Message msg, OMElement wrapper) {
+        if (msg instanceof TextMessage) {
+            try {
+                String xml = ((TextMessage) msg).getText();
+                Object os;
+                if (xml != null) {
+                    XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(xml));
+                    StAXOMBuilder builder = new StAXOMBuilder(reader);
+                    os = builder.getDocumentElement();
+                } else {
+                    os = null;
+                }
+                
+                if (wrapper != null){
+                    //don't modify the original wrapper since it will be reused
+                    //clone the wrapper
+                    OMElement newWrapper = wrapper.cloneOMElement();
+                    newWrapper.addChild((OMNode)os);
+                    return newWrapper;
+                }
+                
+                return os;
+    
+            } catch (XMLStreamException e) {
+                throw new JMSBindingException(e);
+            } catch (JMSException e) {
+                throw new JMSBindingException(e);
+            }
+        } else {
+            // handle the non-text fault case
+            return super.extractPayloadFromJMSMessage(msg);
+        }
+    }
+    
+    public Message insertPayloadIntoJMSTextMessage(Session session, Object o, boolean unwrap) {
+
+        try {
+
+            TextMessage message = session.createTextMessage();
+
+            if (o instanceof OMElement) {
+                
+                if (unwrap){
+                    if (((OMElement)o).getFirstElement() != null ){
+                        message.setText(((OMElement)o).getFirstElement().toString());
+                    }
+                }else {
+                    message.setText(o.toString());
+                }
+            } else if ((o instanceof Object[]) && ((Object[]) o)[0] instanceof OMElement) {
+                if (unwrap){
+                    message.setText(((OMElement)((Object[]) o)[0]).getFirstElement().toString());
+                    //message.setText((((Object[]) o)[0]).toString());
+                }else {
+                    message.setText(((Object[]) o)[0].toString());
+                }
+            } else if (o != null) {
+                throw new IllegalStateException("expecting OMElement payload: " + o);
+            }
+
+            return message;
+
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
+    }
+
+    public Message createFaultJMSTextMessage(Session session, Throwable o) {
+
+        if (session == null) {
+            logger.fine("no response session to create fault message: " + String.valueOf(o));
+            return null;
+        }
+        if (o instanceof FaultException) {
+            try {
+
+                TextMessage message = session.createTextMessage();
+                message.setText(String.valueOf(((FaultException) o).getFaultInfo()));
+                message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, true);
+                return message;
+
+            } catch (JMSException e) {
+                throw new JMSBindingException(e);
+            }
+        } else {
+            // handle the non XML fault case
+            return super.createFaultMessage(session, o);
+        }
+    }
+
+    // handle bytes messages
+    
+    public Object extractPayloadFromJMSBytesMessage(Message msg, OMElement wrapper) {
+        
+        if (msg instanceof BytesMessage) {        
+            try {
+                Object os;
+    
+                long noOfBytes = ((BytesMessage) msg).getBodyLength();
+                byte[] bytes = new byte[(int) noOfBytes];
+                ((BytesMessage) msg).readBytes(bytes);
+    
+                if ((bytes != null) && (bytes.length > 0)) {
+                    XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(bytes));
+                    StAXOMBuilder builder = new StAXOMBuilder(reader);
+                    os = builder.getDocumentElement();
+                } else {
+                    os = null;
+                }
+                
+                if (wrapper != null){
+                    //don't modify the original wrapper since it will be reused
+                    //clone the wrapper
+                    OMElement newWrapper = wrapper.cloneOMElement();
+                    if (os != null){
+                        newWrapper.addChild((OMNode)os);
+                    } 
+                    return newWrapper;
+                }
+                
+                return os;
+    
+            } catch (XMLStreamException e) {
+                throw new JMSBindingException(e);
+            } catch (JMSException e) {
+                throw new JMSBindingException(e);
+            }
+        } else {
+            // trap the non-bytes fault case
+            return super.extractPayloadFromJMSMessage(msg);
+        }
+    }
+    
+    public Message insertPayloadIntoJMSBytesMessage(Session session, Object o, boolean unwrap) {
+
+        try {
+
+            BytesMessage message = session.createBytesMessage();
+            
+
+            if (o instanceof OMElement) {
+                if (unwrap) {
+                    if (((OMElement)o).getFirstElement() != null){
+                        message.writeBytes(((OMElement)o).getFirstElement().toString().getBytes());
+                    }
+                } else {
+                    message.writeBytes(o.toString().getBytes());                    
+                }
+
+            } else if ((o instanceof Object[]) && ((Object[]) o)[0] instanceof OMElement) {
+                if (unwrap){
+                    message.writeBytes(((OMElement)((Object[]) o)[0]).getFirstElement().toString().getBytes());
+                }else {
+                    message.writeBytes(((Object[]) o)[0].toString().getBytes());
+                }
+            } else if (o != null) {
+                throw new IllegalStateException("expecting OMElement payload: " + o);
+            }
+
+            return message;
+
+        } catch (JMSException e) {
+            throw new JMSBindingException(e);
+        }
+    }
+    
+    public Message createFaultJMSBytesMessage(Session session, Throwable o) {
+
+        if (session == null) {
+            logger.fine("no response session to create fault message: " + String.valueOf(o));
+            return null;
+        }
+        
+        if (o instanceof FaultException) {
+            try {
+
+                BytesMessage message = session.createBytesMessage();
+                message.writeBytes(String.valueOf(((FaultException) o).getFaultInfo()).getBytes());
+                message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, true);
+                return message;
+
+            } catch (JMSException e) {
+                throw new JMSBindingException(e);
+            }
+        } else {
+            return super.createFaultMessage(session, o);
+        }
+    }    
+}

Propchange: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultMessageProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultMessageProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java?rev=768263&r1=768262&r2=768263&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/RRBJMSBindingInvoker.java Fri Apr 24 11:49:38 2009
@@ -49,8 +49,6 @@
 
     protected JMSBinding jmsBinding;
     protected JMSResourceFactory jmsResourceFactory;
-    protected JMSMessageProcessor requestMessageProcessor;
-    protected JMSMessageProcessor responseMessageProcessor;
     protected Destination bindingRequestDest;
     protected Destination bindingReplyDest;
     protected RuntimeComponentReference reference;
@@ -65,9 +63,7 @@
         this.jmsResourceFactory = jmsResourceFactory;
         this.reference = reference;
         this.runtimeWire = reference.getRuntimeWire(jmsBinding);
-        this.requestMessageProcessor = JMSMessageProcessorUtil.getRequestMessageProcessor(jmsBinding);
-        this.responseMessageProcessor = JMSMessageProcessorUtil.getResponseMessageProcessor(jmsBinding);
-        
+       
         try {
             // If this is a callback reference, the destination is determined dynamically based on
             // properties of the inbound service request.  We should not look for or require a

Modified: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java?rev=768263&r1=768262&r2=768263&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportReferenceInterceptor.java Fri Apr 24 11:49:38 2009
@@ -49,8 +49,6 @@
     private RuntimeWire runtimeWire;
     private JMSResourceFactory jmsResourceFactory;
     private JMSBinding jmsBinding;
-    private JMSMessageProcessor requestMessageProcessor;
-    private JMSMessageProcessor responseMessageProcessor;
     private RuntimeComponentReference reference;    
 
     public TransportReferenceInterceptor(JMSBinding jmsBinding, JMSResourceFactory jmsResourceFactory, RuntimeWire runtimeWire) {
@@ -58,8 +56,6 @@
         this.jmsBinding = jmsBinding;
         this.runtimeWire = runtimeWire;
         this.jmsResourceFactory = jmsResourceFactory;
-        this.requestMessageProcessor = JMSMessageProcessorUtil.getRequestMessageProcessor(jmsBinding);
-        this.responseMessageProcessor = JMSMessageProcessorUtil.getResponseMessageProcessor(jmsBinding);
         this.reference = (RuntimeComponentReference)runtimeWire.getSource().getContract();        
     }
     

Added: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java (added)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java Fri Apr 24 11:49:38 2009
@@ -0,0 +1,69 @@
+/*
+ * 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.impl.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.jmsdefault.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;
+    }
+
+}

Propchange: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultProviderFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java (added)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java Fri Apr 24 11:49:38 2009
@@ -0,0 +1,176 @@
+/*
+ * 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.JMSException;
+import javax.jms.Session;
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+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.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.DefaultMessageProcessor;
+import org.apache.tuscany.sca.binding.jms.wireformat.jmsdefault.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;
+    }
+}

Propchange: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceInterceptor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java?rev=768263&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java (added)
+++ tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java Fri Apr 24 11:49:38 2009
@@ -0,0 +1,192 @@
+/*
+ * 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.impl.JMSBinding;
+import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
+import org.apache.tuscany.sca.binding.jms.wireformat.jmsdefault.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);
+        }
+
+        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.isInputWrapperStyle()) {
+                    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.isOutputWrapperStyle()) {
+                    // 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.getOutputWrapper().getWrapperElement();
+                    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.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;
+    }
+
+}

Propchange: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmsdefault/runtime/WireFormatJMSDefaultReferenceProvider.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date