Copied: 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/java/services/SomeException.java
 (from r1200668, 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/java/org/apache/tuscany/sca/binding/http/SomeException.java)
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/java/services/SomeException.java?p2=tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/java/services/SomeException.java&p1=tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/java/org/apache/tuscany/sca/binding/http/SomeException.java&r1=1200668&r2=1200669&rev=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/java/org/apache/tuscany/sca/binding/http/SomeException.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/java/services/SomeException.java
 Fri Nov 11 00:53:16 2011
@@ -17,7 +17,7 @@
  * under the License.    
  */
 
-package org.apache.tuscany.sca.binding.http;
+package services;
 
 public class SomeException extends Exception {
     private static final long serialVersionUID = 1L;

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/java/services/SomeException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/java/services/SomeException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/complex.composite
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/complex.composite?rev=1200669&r1=1200668&r2=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/complex.composite
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/complex.composite
 Fri Nov 11 00:53:16 2011
@@ -23,17 +23,21 @@
        name="ComplexStuff">
 
     <component name="ComplexComponent">
-        <implementation.java 
class="org.apache.tuscany.sca.binding.http.ComplexStuffImpl"/>
+        <implementation.java class="services.ComplexStuffImpl"/>
         <service name="ComplexStuff">
-               <tuscany:binding.http />
+               <tuscany:binding.http>
+                       <tuscany:wireFormat.json />
+                       <tuscany:operationSelector.rpc />
+               </tuscany:binding.http>
        </service>
     </component>
 
     <component name="ComplexXmlComponent">
-        <implementation.java 
class="org.apache.tuscany.sca.binding.http.ComplexStuffImpl"/>
+        <implementation.java class="services.ComplexStuffImpl"/>
         <service name="ComplexStuff">
                <tuscany:binding.http>
-                       <tuscany:wireFormat.httpXml />
+                       <tuscany:wireFormat.xml />
+                   <tuscany:operationSelector.rpc />                   
                </tuscany:binding.http>
        </service>
     </component>

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/helloworld.composite
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/helloworld.composite?rev=1200669&r1=1200668&r2=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/helloworld.composite
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/helloworld.composite
 Fri Nov 11 00:53:16 2011
@@ -23,17 +23,21 @@
        name="helloworld">
 
     <component name="HelloworldComponent">
-        <implementation.java 
class="org.apache.tuscany.sca.binding.http.HelloworldImpl"/>
+        <implementation.java class="services.HelloworldImpl"/>
         <service name="Helloworld">
-               <tuscany:binding.http />
+               <tuscany:binding.http>
+                       <tuscany:wireFormat.json />             
+                       <tuscany:operationSelector.rpc />
+               </tuscany:binding.http>
        </service>
     </component>
 
     <component name="HelloworldXmlComponent">
-        <implementation.java 
class="org.apache.tuscany.sca.binding.http.HelloworldImpl"/>
+        <implementation.java class="services.HelloworldImpl"/>
         <service name="Helloworld">
                <tuscany:binding.http>
-                       <tuscany:wireFormat.httpXml />
+                       <tuscany:wireFormat.xml />
+                   <tuscany:operationSelector.rpc />                   
                </tuscany:binding.http>
        </service>
     </component>

Copied: 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/resource.composite
 (from r1200668, 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/helloworld.composite)
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/resource.composite?p2=tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/resource.composite&p1=tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/helloworld.composite&r1=1200668&r2=1200669&rev=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/helloworld.composite
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http-runtime/src/test/resources/resource.composite
 Fri Nov 11 00:53:16 2011
@@ -1,41 +1,33 @@
-<?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://docs.oasis-open.org/ns/opencsa/sca/200912";
-       targetNamespace="http://sample/test";
-       xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1";
-       name="helloworld">
-
-    <component name="HelloworldComponent">
-        <implementation.java 
class="org.apache.tuscany.sca.binding.http.HelloworldImpl"/>
-        <service name="Helloworld">
-               <tuscany:binding.http />
-       </service>
-    </component>
-
-    <component name="HelloworldXmlComponent">
-        <implementation.java 
class="org.apache.tuscany.sca.binding.http.HelloworldImpl"/>
-        <service name="Helloworld">
-               <tuscany:binding.http>
-                       <tuscany:wireFormat.httpXml />
-               </tuscany:binding.http>
-       </service>
-    </component>
-
-</composite>
+<?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://docs.oasis-open.org/ns/opencsa/sca/200912";
+       targetNamespace="http://sample/test";
+       xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1";
+       name="ResourceService">
+
+
+       <component name="ResourceComponent">
+               <implementation.java class="services.ResourceService" />
+               <service name="Servlet">
+                       <tuscany:binding.http uri="/resource" />
+               </service>
+       </component>
+
+</composite>
\ No newline at end of file

Modified: tuscany/sca-java-2.x/trunk/modules/binding-http/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http/META-INF/MANIFEST.MF?rev=1200669&r1=1200668&r2=1200669&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-http/META-INF/MANIFEST.MF 
(original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-http/META-INF/MANIFEST.MF Fri 
Nov 11 00:53:16 2011
@@ -1,6 +1,7 @@
 Manifest-Version: 1.0
 Export-Package: 
org.apache.tuscany.sca.binding.http;version="2.0.0";uses:="org.apache.tuscany.sca.assembly,javax.xml.namespace,javax.servlet.http",
- org.apache.tuscany.sca.binding.http.impl;version="2.0.0"
+ org.apache.tuscany.sca.binding.http.operationselector,
+ org.apache.tuscany.sca.binding.http.wireformat
 Bundle-Name: Apache Tuscany SCA HTTP Binding Model
 Bundle-Vendor: The Apache Software Foundation
 Bundle-Version: 2.0.0

Copied: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPDefaultOperationSelector.java
 (from r1200668, 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPDefaultOperationSelector.java)
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPDefaultOperationSelector.java?p2=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPDefaultOperationSelector.java&p1=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPDefaultOperationSelector.java&r1=1200668&r2=1200669&rev=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPDefaultOperationSelector.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPDefaultOperationSelector.java
 Fri Nov 11 00:53:16 2011
@@ -16,18 +16,24 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.sca.binding.http;
+package org.apache.tuscany.sca.binding.http.operationselector;
 
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.assembly.OperationSelector;
 import org.apache.tuscany.sca.assembly.xml.Constants;
 
+
+/**
+ * HTTP binding default operation selector.
+ * 
+ * @version $Rev$ $Date$
+*/
 public class HTTPDefaultOperationSelector implements OperationSelector {
-    public static final QName OPERATION_SELECTOR_HTTP_DEFAULT_QNAME = new 
QName(Constants.SCA11_NS, "operationSelector.httpDefault");
+    public static final QName HTTP_OPERATION_SELECTOR_DEFAULT_QNAME = new 
QName(Constants.SCA11_NS, "operationSelector.default");
     
     public QName getSchemaName() {
-        return OPERATION_SELECTOR_HTTP_DEFAULT_QNAME;
+        return HTTP_OPERATION_SELECTOR_DEFAULT_QNAME;
     }
 
     public boolean isUnresolved() {

Copied: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPRPCOperationSelector.java
 (from r1200668, 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPDefaultOperationSelector.java)
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPRPCOperationSelector.java?p2=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPRPCOperationSelector.java&p1=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPDefaultOperationSelector.java&r1=1200668&r2=1200669&rev=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPDefaultOperationSelector.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPRPCOperationSelector.java
 Fri Nov 11 00:53:16 2011
@@ -16,18 +16,23 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.sca.binding.http;
+package org.apache.tuscany.sca.binding.http.operationselector;
 
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.assembly.OperationSelector;
 import org.apache.tuscany.sca.assembly.xml.Constants;
 
-public class HTTPDefaultOperationSelector implements OperationSelector {
-    public static final QName OPERATION_SELECTOR_HTTP_DEFAULT_QNAME = new 
QName(Constants.SCA11_NS, "operationSelector.httpDefault");
+/**
+ * HTTP binding RPC style operation selector.
+ * 
+ * @version $Rev$ $Date$
+*/
+public class HTTPRPCOperationSelector implements OperationSelector {
+    public static final QName HTTP_OPERATION_SELECTOR_RPC_QNAME = new 
QName(Constants.SCA11_NS, "operationSelector.rpc");
     
     public QName getSchemaName() {
-        return OPERATION_SELECTOR_HTTP_DEFAULT_QNAME;
+        return HTTP_OPERATION_SELECTOR_RPC_QNAME;
     }
 
     public boolean isUnresolved() {

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPRPCOperationSelector.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/HTTPRPCOperationSelector.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPDefaultWireFormat.java
 (from r1200668, 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPDefaultWireFormat.java)
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPDefaultWireFormat.java?p2=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPDefaultWireFormat.java&p1=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPDefaultWireFormat.java&r1=1200668&r2=1200669&rev=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPDefaultWireFormat.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPDefaultWireFormat.java
 Fri Nov 11 00:53:16 2011
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.sca.binding.http;
+package org.apache.tuscany.sca.binding.http.wireformat;
 
 import javax.xml.namespace.QName;
 
@@ -24,16 +24,15 @@ import org.apache.tuscany.sca.assembly.W
 import org.apache.tuscany.sca.assembly.xml.Constants;
 
 /**
- * Implementation for policies that could be injected as parameter
- * into the axis2config.
+ * Default wire format for http binding
  *
- * @version $Rev: 813442 $ $Date: 2009-09-10 14:56:17 +0100 (Thu, 10 Sep 2009) 
$
+ * @version $Rev$ $Date$
  */
 public class HTTPDefaultWireFormat implements WireFormat {
-    public static final QName WIRE_FORMAT_HTTP_DEFAULT_QNAME = new 
QName(Constants.SCA11_TUSCANY_NS, "wireFormat.httpDefault");
+    public static final QName HTTP_WIRE_FORMAT_DEFAULT_QNAME = new 
QName(Constants.SCA11_TUSCANY_NS, "wireFormat.default");
     
     public QName getSchemaName() {
-        return WIRE_FORMAT_HTTP_DEFAULT_QNAME;
+        return HTTP_WIRE_FORMAT_DEFAULT_QNAME;
     }
 
     public boolean isUnresolved() {

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPDefaultWireFormat.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPDefaultWireFormat.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPJSONWireFormat.java
 (from r1200668, 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPXMLWireFormat.java)
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPJSONWireFormat.java?p2=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPJSONWireFormat.java&p1=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPXMLWireFormat.java&r1=1200668&r2=1200669&rev=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPXMLWireFormat.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPJSONWireFormat.java
 Fri Nov 11 00:53:16 2011
@@ -16,18 +16,23 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.sca.binding.http;
+package org.apache.tuscany.sca.binding.http.wireformat;
 
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.assembly.WireFormat;
 import org.apache.tuscany.sca.assembly.xml.Constants;
 
-public class HTTPXMLWireFormat implements WireFormat {
-    public static final QName WIRE_FORMAT_HTTP_XML_QNAME = new 
QName(Constants.SCA11_TUSCANY_NS, "wireFormat.httpXml");
+/**
+ * JSON wire format for http binding
+ *
+ * @version $Rev$ $Date$
+ */
+public class HTTPJSONWireFormat implements WireFormat {
+    public static final QName HTTP_WIRE_FORMAT_JSON_QNAME = new 
QName(Constants.SCA11_TUSCANY_NS, "wireFormat.json");
     
     public QName getSchemaName() {
-        return WIRE_FORMAT_HTTP_XML_QNAME;
+        return HTTP_WIRE_FORMAT_JSON_QNAME;
     }
 
     public boolean isUnresolved() {

Copied: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPXMLWireFormat.java
 (from r1200668, 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPXMLWireFormat.java)
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPXMLWireFormat.java?p2=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPXMLWireFormat.java&p1=tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPXMLWireFormat.java&r1=1200668&r2=1200669&rev=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/HTTPXMLWireFormat.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPXMLWireFormat.java
 Fri Nov 11 00:53:16 2011
@@ -16,13 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.sca.binding.http;
+package org.apache.tuscany.sca.binding.http.wireformat;
 
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.assembly.WireFormat;
 import org.apache.tuscany.sca.assembly.xml.Constants;
 
+
+/**
+ * XML Wire format for HTTP binding
+ * 
+ * @version $Rev$ $Date$
+*/
 public class HTTPXMLWireFormat implements WireFormat {
     public static final QName WIRE_FORMAT_HTTP_XML_QNAME = new 
QName(Constants.SCA11_TUSCANY_NS, "wireFormat.httpXml");
     

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPXMLWireFormat.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/HTTPXMLWireFormat.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java?rev=1200669&r1=1200668&r2=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java
 Fri Nov 11 00:53:16 2011
@@ -27,6 +27,7 @@ import javax.xml.stream.XMLStreamExcepti
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
+import org.apache.tuscany.sca.assembly.Base;
 import org.apache.tuscany.sca.assembly.OperationSelector;
 import org.apache.tuscany.sca.assembly.WireFormat;
 import org.apache.tuscany.sca.binding.http.HTTPBinding;
@@ -42,22 +43,27 @@ import org.apache.tuscany.sca.contributi
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 
+
+/**
+ * HTTP binding artifact processor that handles the read/write of HTTP 
specific XML elements.
+ * 
+ * @version $Rev$ $Date$
+*/
 public class HTTPBindingProcessor extends BaseStAXArtifactProcessor implements 
StAXArtifactProcessor<HTTPBinding> {
+    private static final QName RESPONSE_QNAME = new 
QName(Base.SCA11_TUSCANY_NS, "response");
+
     private static final String NAME = "name";
     private static final String URI = "uri";
 
     private HTTPBindingFactory httpBindingFactory;
     private StAXArtifactProcessor<Object> extensionProcessor;
-    private StAXAttributeProcessor<Object> extensionAttributeProcessor;
-    
 
-    public HTTPBindingProcessor(ExtensionPointRegistry extensionPoints, 
-                                StAXArtifactProcessor extensionProcessor,
-                                StAXAttributeProcessor 
extensionAttributeProcessor) {
+    public HTTPBindingProcessor(ExtensionPointRegistry extensionPoints,
+                                StAXArtifactProcessor<Object> 
extensionProcessor,
+                                StAXAttributeProcessor<Object> 
extensionAttributeProcessor) {
         FactoryExtensionPoint modelFactories = 
extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
         this.httpBindingFactory = 
modelFactories.getFactory(HTTPBindingFactory.class);
         this.extensionProcessor = 
(StAXArtifactProcessor<Object>)extensionProcessor;
-        this.extensionAttributeProcessor = extensionAttributeProcessor;
     }
 
     public QName getArtifactType() {
@@ -68,10 +74,21 @@ public class HTTPBindingProcessor extend
         return HTTPBinding.class;
     }
 
-    public HTTPBinding read(XMLStreamReader reader, ProcessorContext context) 
throws ContributionReadException, XMLStreamException {
+    public HTTPBinding read(XMLStreamReader reader, ProcessorContext context) 
throws ContributionReadException,XMLStreamException {
         HTTPBinding httpBinding = httpBindingFactory.createHTTPBinding();
 
-        while(reader.hasNext()) {
+        /**
+         *    <tuscany:binding.http uri="http://localhost:8085/Customer";>
+         *          <tuscany:wireFormat.json />
+         *          <tuscany:operationSelector.default />
+         *          <tuscany:response>
+         *             <tuscany:wireFormat.xml />
+         *          </tuscany:response>
+         *   </tuscany:binding.http>
+         *
+         */
+        
+        while (reader.hasNext()) {
             QName elementName = null;
             int event = reader.getEventType();
             switch (event) {
@@ -80,7 +97,7 @@ public class HTTPBindingProcessor extend
 
                     if (HTTPBinding.TYPE.equals(elementName)) {
                         String name = getString(reader, NAME);
-                        if(name != null) {
+                        if (name != null) {
                             httpBinding.setName(name);
                         }
 
@@ -88,13 +105,38 @@ public class HTTPBindingProcessor extend
                         if (uri != null) {
                             httpBinding.setURI(uri);
                         }
+                    } else if (RESPONSE_QNAME.equals(elementName)) {
+
+                        // skip response
+                        reader.next();
+                        // and position to the next start_element event
+                        while (reader.hasNext()) {
+                            int sub_event = reader.getEventType();
+                            switch (sub_event) {
+                                case START_ELEMENT:
+                                    elementName = reader.getName();
+                                    break;
+                                default:
+                                    reader.next();
+                            }
+                            break;
+                        }
+
+                        // dispatch to read wire format for the response
+                        Object extension = extensionProcessor.read(reader, 
context);
+                        if (extension != null) {
+                            if (extension instanceof WireFormat) {
+                                
httpBinding.setResponseWireFormat((WireFormat)extension);
+                            }
+                        }
+                        break;
                     } else {
                         // Read an extension element
                         Object extension = extensionProcessor.read(reader, 
context);
                         if (extension != null) {
                             if (extension instanceof WireFormat) {
                                 
httpBinding.setRequestWireFormat((WireFormat)extension);
-                            } else if(extension instanceof OperationSelector) {
+                            } else if (extension instanceof OperationSelector) 
{
                                 
httpBinding.setOperationSelector((OperationSelector)extension);
                             }
                         }
@@ -114,8 +156,9 @@ public class HTTPBindingProcessor extend
         return httpBinding;
     }
 
-    public void write(HTTPBinding httpBinding, XMLStreamWriter writer, 
ProcessorContext context) throws ContributionWriteException, XMLStreamException 
{
-        //writer.writeStartElement(Constants.SCA10_NS, BINDING_HTTP);
+    public void write(HTTPBinding httpBinding, XMLStreamWriter writer, 
ProcessorContext context)
+        throws ContributionWriteException, XMLStreamException {
+        // writer.writeStartElement(Constants.SCA10_NS, BINDING_HTTP);
 
         writeStart(writer, HTTPBinding.TYPE.getNamespaceURI(), 
HTTPBinding.TYPE.getLocalPart());
 
@@ -129,13 +172,29 @@ public class HTTPBindingProcessor extend
             writer.writeAttribute(URI, httpBinding.getURI());
         }
 
+        // Write operation selectors
+        if (httpBinding.getOperationSelector() != null) {
+            extensionProcessor.write(httpBinding.getOperationSelector(), 
writer, context);
+        }
+
+        // Write wire formats
+        if (httpBinding.getRequestWireFormat() != null) {
+            extensionProcessor.write(httpBinding.getRequestWireFormat(), 
writer, context);
+        }
+
+        if (httpBinding.getResponseWireFormat() != null && 
httpBinding.getRequestWireFormat() != httpBinding
+            .getResponseWireFormat()) {
+            writeStart(writer, RESPONSE_QNAME.getNamespaceURI(), 
RESPONSE_QNAME.getLocalPart());
+            extensionProcessor.write(httpBinding.getResponseWireFormat(), 
writer, context);
+            writeEnd(writer);
+        }
+
         writeEnd(writer);
-        //writer.writeEndElement();
+        // writer.writeEndElement();
     }
 
-
     public void resolve(HTTPBinding model, ModelResolver resolver, 
ProcessorContext context) throws ContributionResolveException {
-        // Should not need to do anything here for now... 
+        // Should not need to do anything here for now...
 
     }
 

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor?rev=1200669&r1=1200668&r2=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
 Fri Nov 11 00:53:16 2011
@@ -17,6 +17,10 @@
 
 # Implementation class for the artifact processor extension
 
org.apache.tuscany.sca.binding.http.xml.HTTPBindingProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#binding.http,model=org.apache.tuscany.sca.binding.http.HTTPBinding,factory=org.apache.tuscany.sca.binding.http.HTTPBindingFactory
-org.apache.tuscany.sca.binding.http.xml.HTTPDefaultWireFormatProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#wireFormat.httpDefault,model=org.apache.tuscany.sca.binding.http.HTTPDefaultWireFormat
-org.apache.tuscany.sca.binding.http.xml.HTTPXMLWireFormatProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#wireFormat.httpXml,model=org.apache.tuscany.sca.binding.http.HTTPXMLWireFormat
-org.apache.tuscany.sca.binding.http.xml.HTTPDefaultOperationSelectorProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#operationSelector.httpDefault,model=org.apache.tuscany.sca.binding.http.HTTPDefaultOperationSelector
+
+org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#wireFormat.default,model=org.apache.tuscany.sca.binding.http.wireformat.HTTPDefaultWireFormat
+org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#wireFormat.json,model=org.apache.tuscany.sca.binding.http.wireformat.HTTPJSONWireFormat
+org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#wireFormat.xml,model=org.apache.tuscany.sca.binding.http.wireformat.HTTPXMLWireFormat
+
+org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#operationSelector.default,model=org.apache.tuscany.sca.binding.http.operationselector.HTTPDefaultOperationSelector
+org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#operationSelector.rpc,model=org.apache.tuscany.sca.binding.http.operationselector.HTTPRPCOperationSelector

Added: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-http/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java?rev=1200669&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java
 Fri Nov 11 00:53:16 2011
@@ -0,0 +1,93 @@
+/*
+ * 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.http.xml;
+
+import java.io.StringReader;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.binding.http.HTTPBinding;
+import 
org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
+import 
org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import 
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class HTTPBindingProcessorTestCase {
+
+    private static final String COMPOSITE =
+        "<?xml version=\"1.0\" encoding=\"ASCII\"?>" 
+        + "<composite 
xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\"; 
xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.1\"; 
targetNamespace=\"http://binding-http\"; name=\"binding-http\">"
+            + " <component name=\"CustomerService\">"
+            + "   <implementation.java 
class=\"services.customer.CustomerServiceImpl\"/>"
+            + "      <service name=\"CustomerService\">"
+            + "         <tuscany:binding.http 
uri=\"http://localhost:8085/Customer\";>"
+            + "            <tuscany:wireFormat.json />"
+            + "            <tuscany:operationSelector.default />"
+            + "            <tuscany:response>"
+            + "                <tuscany:wireFormat.xml />"
+            + "            </tuscany:response>"            
+            + "            </tuscany:binding.http>"
+            + "      </service>"
+            + " </component>"
+            + "</composite>";
+
+    private static XMLInputFactory inputFactory;
+    private static StAXArtifactProcessor<Object> staxProcessor;
+    private static ProcessorContext context;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        DefaultExtensionPointRegistry extensionPoints = new 
DefaultExtensionPointRegistry();
+        context = new ProcessorContext(extensionPoints);
+        inputFactory = XMLInputFactory.newInstance();
+        
+        StAXArtifactProcessorExtensionPoint staxProcessors = new 
DefaultStAXArtifactProcessorExtensionPoint(extensionPoints);
+        staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, 
inputFactory, null);
+    }
+
+    /**
+     * Test parsing valid composite definition. Valid composite populated with 
correct values expected.
+     * @throws Exception
+     */
+    @Test
+    public void testLoadValidComposite() throws Exception {
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(new 
StringReader(COMPOSITE));
+        
+        Composite composite = (Composite)staxProcessor.read(reader, context);
+        HTTPBinding binding = (HTTPBinding)   
composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
+        
+        Assert.assertNotNull(binding);
+        Assert.assertNotNull(binding.getOperationSelector());
+        Assert.assertNotNull(binding.getRequestWireFormat());
+        Assert.assertNotNull(binding.getResponseWireFormat());
+
+    }
+}

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/sca-java-2.x/trunk/modules/binding-http/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonp/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonp/META-INF/MANIFEST.MF?rev=1200669&r1=1200668&r2=1200669&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonp/META-INF/MANIFEST.MF 
(original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jsonp/META-INF/MANIFEST.MF Fri 
Nov 11 00:53:16 2011
@@ -13,6 +13,8 @@ Import-Package: javax.xml.namespace,
  org.apache.tuscany.sca.assembly.xml;version="2.0.0",
  org.apache.tuscany.sca.binding.http;version="2.0.0",
  org.apache.tuscany.sca.binding.http.impl;version="2.0.0",
+ org.apache.tuscany.sca.binding.http.operationselector,
+ org.apache.tuscany.sca.binding.http.wireformat,
  org.apache.tuscany.sca.binding.jsonp;version="2.0.0"
 Bundle-SymbolicName: org.apache.tuscany.sca.binding.jsonp
 Bundle-DocURL: http://www.apache.org/

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-jsonp/src/main/java/org/apache/tuscany/sca/binding/jsonp/JSONPBinding.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonp/src/main/java/org/apache/tuscany/sca/binding/jsonp/JSONPBinding.java?rev=1200669&r1=1200668&r2=1200669&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-jsonp/src/main/java/org/apache/tuscany/sca/binding/jsonp/JSONPBinding.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-jsonp/src/main/java/org/apache/tuscany/sca/binding/jsonp/JSONPBinding.java
 Fri Nov 11 00:53:16 2011
@@ -21,9 +21,9 @@ package org.apache.tuscany.sca.binding.j
 
 import javax.xml.namespace.QName;
 
-import org.apache.tuscany.sca.binding.http.HTTPDefaultOperationSelector;
-import org.apache.tuscany.sca.binding.http.HTTPDefaultWireFormat;
 import org.apache.tuscany.sca.binding.http.impl.HTTPBindingImpl;
+import 
org.apache.tuscany.sca.binding.http.operationselector.HTTPRPCOperationSelector;
+import org.apache.tuscany.sca.binding.http.wireformat.HTTPJSONWireFormat;
 
 /**
  * JSONP Binding model
@@ -36,9 +36,9 @@ public class JSONPBinding extends HTTPBi
         super();
 
         // configure the HTTP binding for JSONP (which for the moment is the 
default wireFormat)
-        setOperationSelector(new HTTPDefaultOperationSelector());
-        setRequestWireFormat(new HTTPDefaultWireFormat());
-        setResponseWireFormat(new HTTPDefaultWireFormat());
+        setOperationSelector(new HTTPRPCOperationSelector());
+        setRequestWireFormat(new HTTPJSONWireFormat());
+        setResponseWireFormat(new HTTPJSONWireFormat());
     }
 
     @Override


Reply via email to