You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/12/05 21:23:26 UTC

svn commit: r601501 [1/3] - in /incubator/tuscany/java/sca: demos/xml-bigbank/src/main/resources/wsdl/ itest/properties/src/main/java/org/apache/tuscany/sca/itest/ itest/properties/src/main/resources/ itest/ws-void-args-return/src/main/java/voidtest/ m...

Author: rfeng
Date: Wed Dec  5 12:23:21 2007
New Revision: 601501

URL: http://svn.apache.org/viewvc?rev=601501&view=rev
Log:
Use the JAXB databinding to deal with POJOs

Added:
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/BeanXMLStreamReaderImpl.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2XMLStreamReader.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2JavaBean.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSONHelper.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JavaBean2JSONObject.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-saxon/build-saxon.xml   (with props)
    incubator/tuscany/java/sca/modules/implementation-xquery/build-saxon.xml   (with props)
    incubator/tuscany/java/sca/samples/quote-xquery/build-saxon.xml   (with props)
Modified:
    incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/wsdl/StockQuotes.wsdl
    incubator/tuscany/java/sca/itest/properties/src/main/java/org/apache/tuscany/sca/itest/ComplexPropertyBean.java
    incubator/tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite
    incubator/tuscany/java/sca/itest/ws-void-args-return/src/main/java/voidtest/TestClientImpl.java
    incubator/tuscany/java/sca/modules/binding-jsonrpc/pom.xml
    incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCServiceServlet.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
    incubator/tuscany/java/sca/modules/core-databinding/pom.xml
    incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/InvocationChainImpl.java
    incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java
    incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
    incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Reader2JAXB.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLStreamReader2JAXB.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBTestCase.java
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/POJOTestCase.java
    incubator/tuscany/java/sca/modules/databinding-json/pom.xml
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSONDataBinding.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JavaBean2JSON.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSON2OMElement.java
    incubator/tuscany/java/sca/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.DataBinding
    incubator/tuscany/java/sca/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
    incubator/tuscany/java/sca/modules/databinding-json/src/test/java/org/apache/tuscany/sca/databinding/json/JSONTransformerTestCase.java
    incubator/tuscany/java/sca/modules/databinding-json/src/test/java/org/apache/tuscany/sca/databinding/json/JavaBean2JSONTestCase.java
    incubator/tuscany/java/sca/modules/databinding-saxon/pom.xml
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2NodeTransformer.java
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Object2ValueTransformer.java
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SimpleType2ValueTransformer.java
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2SimpleTypeTransformer.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/TransformerExtensionPoint.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DirectedGraph.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBean2XMLTransformer.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2XMLStreamReader.java
    incubator/tuscany/java/sca/modules/databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
    incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/extension/TransformerExtensionTestCase.java
    incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DirectedGraphTestCase.java
    incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/MediatorImplTestCase.java
    incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/TransformerRegistryImplTestCase.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/PolicyHandlingInterceptor.java
    incubator/tuscany/java/sca/modules/implementation-xquery/pom.xml
    incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryIntrospector.java
    incubator/tuscany/java/sca/samples/quote-xquery/pom.xml
    incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/java/simplecallback/MyClientImpl.java
    incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/java/simplecallback/MyServiceImpl.java

Modified: incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/wsdl/StockQuotes.wsdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/wsdl/StockQuotes.wsdl?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/wsdl/StockQuotes.wsdl (original)
+++ incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/wsdl/StockQuotes.wsdl Wed Dec  5 12:23:21 2007
@@ -1,105 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
-    xmlns:tns="http://swanandmokashi.com" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
-    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://swanandmokashi.com"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
-    <wsdl:types>
-        <s:schema elementFormDefault="qualified" targetNamespace="http://swanandmokashi.com">
-            <s:element name="GetQuotes">
-                <s:complexType>
-                    <s:sequence>
-                        <s:element minOccurs="0" maxOccurs="1" name="QuoteTicker" type="s:string" />
-                    </s:sequence>
-                </s:complexType>
-            </s:element>
-            <s:element name="GetQuotesResponse">
-                <s:complexType>
-                    <s:sequence>
-                        <s:element minOccurs="0" maxOccurs="1" name="GetQuotesResult" type="tns:ArrayOfQuote" />
-                    </s:sequence>
-                </s:complexType>
-            </s:element>
-            <s:complexType name="ArrayOfQuote">
-                <s:sequence>
-                    <s:element minOccurs="0" maxOccurs="unbounded" name="Quote" type="tns:Quote" />
-                </s:sequence>
-            </s:complexType>
-            <s:complexType name="Quote">
-                <s:sequence>
-                    <s:element minOccurs="0" maxOccurs="1" name="CompanyName" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="StockTicker" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="StockQuote" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="LastUpdated" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="Change" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="OpenPrice" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="DayHighPrice" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="DayLowPrice" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="Volume" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="MarketCap" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="YearRange" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="ExDividendDate" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="DividendYield" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="DividendPerShare" type="s:string" />
-                    <s:element minOccurs="0" maxOccurs="1" name="PercentChange" type="s:string" />
-                </s:sequence>
-            </s:complexType>
-            <s:element name="ArrayOfQuote" nillable="true" type="tns:ArrayOfQuote" />
-        </s:schema>
-    </wsdl:types>
-    <wsdl:message name="GetQuotesSoapIn">
-        <wsdl:part name="parameters" element="tns:GetQuotes" />
-    </wsdl:message>
-    <wsdl:message name="GetQuotesSoapOut">
-        <wsdl:part name="parameters" element="tns:GetQuotesResponse" />
-    </wsdl:message>
-    <wsdl:message name="GetQuotesHttpGetIn">
-        <wsdl:part name="QuoteTicker" type="s:string" />
-    </wsdl:message>
-    <wsdl:message name="GetQuotesHttpGetOut">
-        <wsdl:part name="Body" element="tns:ArrayOfQuote" />
-    </wsdl:message>
-    <wsdl:message name="GetQuotesHttpPostIn">
-        <wsdl:part name="QuoteTicker" type="s:string" />
-    </wsdl:message>
-    <wsdl:message name="GetQuotesHttpPostOut">
-        <wsdl:part name="Body" element="tns:ArrayOfQuote" />
-    </wsdl:message>
-    <wsdl:portType name="StockQuotesSoap">
-        <wsdl:operation name="GetStockQuotes">
-            <documentation xmlns="http://schemas.xmlsoap.org/wsdl/">
-                Retrieves the latest(20 minutes delay) stock quote of a stock ticker. To get multiple quotes enter
-                Ticker symbols seperated by ,(eg. MSFT,YHOO,GE) or space (eg. MSFT YHOO GE). &lt;BR&gt;Gives the company
-                name ,ticker,Stock Quote, Change,Open price ,Day's range(high and low),Volume, the Market Cap and the
-                Year range of the stock price.&lt;BR&gt;&lt;B&gt;Powered by Yahoo!'s stock Quotes service.Not for
-                commerical use.&lt;/b&gt;
-            </documentation>
-            <wsdl:input name="GetQuotes" message="tns:GetQuotesSoapIn" />
-            <wsdl:output name="GetQuotes" message="tns:GetQuotesSoapOut" />
-        </wsdl:operation>
-    </wsdl:portType>
-
-
-    <wsdl:binding name="StockQuotesSoap" type="tns:StockQuotesSoap">
-        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
-        <wsdl:operation name="GetStockQuotes">
-            <soap:operation soapAction="http://swanandmokashi.com/GetQuotes" style="document" />
-            <wsdl:input name="GetQuotes">
-                <soap:body use="literal" />
-            </wsdl:input>
-            <wsdl:output name="GetQuotes">
-                <soap:body use="literal" />
-            </wsdl:output>
-        </wsdl:operation>
-    </wsdl:binding>
-
-
-    <wsdl:service name="StockQuotes">
-        <documentation xmlns="http://schemas.xmlsoap.org/wsdl/" />
-        <wsdl:port name="StockQuotesSoap" binding="tns:StockQuotesSoap">
-            <soap:address location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" />
-        </wsdl:port>
-
-
-    </wsdl:service>
+<wsdl:definitions targetNamespace="http://swanandmokashi.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+    <wsdl:import namespace="http://swanandmokashi.com"
+        location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx?WSDL" />
 </wsdl:definitions>

Modified: incubator/tuscany/java/sca/itest/properties/src/main/java/org/apache/tuscany/sca/itest/ComplexPropertyBean.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/properties/src/main/java/org/apache/tuscany/sca/itest/ComplexPropertyBean.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/properties/src/main/java/org/apache/tuscany/sca/itest/ComplexPropertyBean.java (original)
+++ incubator/tuscany/java/sca/itest/properties/src/main/java/org/apache/tuscany/sca/itest/ComplexPropertyBean.java Wed Dec  5 12:23:21 2007
@@ -22,14 +22,14 @@
 public class ComplexPropertyBean {
 
     protected int integerNumber = 25;
-    public float floatNumber = 50;
-    public double doubleNumber = 75;
-    public int[] intArray = null;
-    public double[] doubleArray = null;
+    protected float floatNumber = 50;
+    protected double doubleNumber = 75;
+    protected int[] intArray = null;
+    protected double[] doubleArray = null;
     protected String[] stringArray = null;
     
     ComplexPropertyBean numberSet;
-    public ComplexPropertyBean[] numberSetArray = null;
+    protected ComplexPropertyBean[] numberSetArray = null;
     
     public ComplexPropertyBean() {
         
@@ -85,5 +85,29 @@
 
     public void setStringArray(String[] stringArray) {
         this.stringArray = stringArray;
+    }
+
+    public int[] getIntArray() {
+        return intArray;
+    }
+
+    public void setIntArray(int[] intArray) {
+        this.intArray = intArray;
+    }
+
+    public double[] getDoubleArray() {
+        return doubleArray;
+    }
+
+    public void setDoubleArray(double[] doubleArray) {
+        this.doubleArray = doubleArray;
+    }
+
+    public ComplexPropertyBean[] getNumberSetArray() {
+        return numberSetArray;
+    }
+
+    public void setNumberSetArray(ComplexPropertyBean[] numberSetArray) {
+        this.numberSetArray = numberSetArray;
     }
 }

Modified: incubator/tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite (original)
+++ incubator/tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite Wed Dec  5 12:23:21 2007
@@ -47,32 +47,32 @@
     </property>
 
     <property name="moreComplex" type="foo:MyMoreComplexType">
-        <foo:MyMoreComplexValue xsi:type="foo:MyMoreComplexType">
-            <foo:numberSetArray>
-                <foo:integerNumber>1</foo:integerNumber>
-                <foo:floatNumber>11</foo:floatNumber>
-                <foo:doubleNumber>111</foo:doubleNumber>
-            </foo:numberSetArray>
-            <foo:numberSetArray>
-                <foo:integerNumber>2</foo:integerNumber>
-                <foo:floatNumber>22</foo:floatNumber>
-                <foo:doubleNumber>222</foo:doubleNumber>
-            </foo:numberSetArray>
-            <foo:stringArray>TestString_1</foo:stringArray>
-            <foo:intArray>10</foo:intArray>
-            <foo:stringArray>TestString_2</foo:stringArray>
-            <foo:intArray>20</foo:intArray>
-            <foo:integerNumber>27</foo:integerNumber>
-            <foo:floatNumber>79.34</foo:floatNumber>
-            <foo:doubleNumber>184.52</foo:doubleNumber>
-            <foo:doubleArray>50.05</foo:doubleArray>
-            <foo:doubleArray>25.52</foo:doubleArray>
-            <foo:numberSet>
-                <foo:integerNumber>54</foo:integerNumber>
-                <foo:floatNumber>158.68</foo:floatNumber>
-                <foo:doubleNumber>369.04</foo:doubleNumber>
-            </foo:numberSet>
-        </foo:MyMoreComplexValue>
+        <MyMoreComplexValue xmlns="">
+            <numberSetArray>
+                <integerNumber>1</integerNumber>
+                <floatNumber>11</floatNumber>
+                <doubleNumber>111</doubleNumber>
+            </numberSetArray>
+            <numberSetArray>
+                <integerNumber>2</integerNumber>
+                <floatNumber>22</floatNumber>
+                <doubleNumber>222</doubleNumber>
+            </numberSetArray>
+            <stringArray>TestString_1</stringArray>
+            <stringArray>TestString_2</stringArray>
+            <intArray>10</intArray>
+            <intArray>20</intArray>
+            <integerNumber>27</integerNumber>
+            <floatNumber>79.34</floatNumber>
+            <doubleNumber>184.52</doubleNumber>
+            <doubleArray>50.05</doubleArray>
+            <doubleArray>25.52</doubleArray>
+            <numberSet>
+                <integerNumber>54</integerNumber>
+                <floatNumber>158.68</floatNumber>
+                <doubleNumber>369.04</doubleNumber>
+            </numberSet>
+        </MyMoreComplexValue>
     </property>
 
     <component name="ABCDComponent">
@@ -108,92 +108,92 @@
         <implementation.java class="org.apache.tuscany.sca.itest.PropertyComponentImpl"/>
         <property name="complexPropertyOne" source="$moreComplex"></property>
         <property name="complexPropertyTwo">
-            <foo:MyAnotherComplexValue>
-                <foo:stringArray>TestString_1</foo:stringArray>
-                <foo:stringArray>TestString_2</foo:stringArray>
-                <foo:intArray>10</foo:intArray>
-                <foo:integerNumber>27</foo:integerNumber>
-                <foo:floatNumber>79.34</foo:floatNumber>
-                <foo:doubleArray>25.52</foo:doubleArray>
-                <foo:doubleNumber>184.52</foo:doubleNumber>
-                <foo:doubleArray>50.05</foo:doubleArray>
-                <foo:intArray>20</foo:intArray>
-                <foo:numberSetArray>
-                    <foo:integerNumber>1</foo:integerNumber>
-                    <foo:floatNumber>11</foo:floatNumber>
-                    <foo:doubleNumber>111</foo:doubleNumber>
-                </foo:numberSetArray>
-                <foo:numberSetArray>
-                    <foo:integerNumber>2</foo:integerNumber>
-                    <foo:floatNumber>22</foo:floatNumber>
-                    <foo:doubleNumber>222</foo:doubleNumber>
-                </foo:numberSetArray>
-                <foo:numberSet>
-                    <foo:integerNumber>54</foo:integerNumber>
-                    <foo:floatNumber>158.68</foo:floatNumber>
-                    <foo:doubleNumber>369.04</foo:doubleNumber>
-                </foo:numberSet>
-            </foo:MyAnotherComplexValue>
+            <MyAnotherComplexValue xmlns="">
+                <stringArray>TestString_1</stringArray>
+                <stringArray>TestString_2</stringArray>
+                <intArray>10</intArray>
+                <integerNumber>27</integerNumber>
+                <floatNumber>79.34</floatNumber>
+                <doubleArray>25.52</doubleArray>
+                <doubleNumber>184.52</doubleNumber>
+                <doubleArray>50.05</doubleArray>
+                <intArray>20</intArray>
+                <numberSetArray>
+                    <integerNumber>1</integerNumber>
+                    <floatNumber>11</floatNumber>
+                    <doubleNumber>111</doubleNumber>
+                </numberSetArray>
+                <numberSetArray>
+                    <integerNumber>2</integerNumber>
+                    <floatNumber>22</floatNumber>
+                    <doubleNumber>222</doubleNumber>
+                </numberSetArray>
+                <numberSet>
+                    <integerNumber>54</integerNumber>
+                    <floatNumber>158.68</floatNumber>
+                    <doubleNumber>369.04</doubleNumber>
+                </numberSet>
+            </MyAnotherComplexValue>
         </property>
         <property name="complexPropertyThree" element="foo:PropertyThreeElement">
-            <foo:PropertyThreeElement>
-                <foo:stringArray>TestElementString_1</foo:stringArray>
-                <foo:stringArray>TestElementString_2</foo:stringArray>
-                <foo:intArray>10</foo:intArray>
-                <foo:integerNumber>27</foo:integerNumber>
-                <foo:floatNumber>79.34</foo:floatNumber>
-                <foo:doubleArray>25.52</foo:doubleArray>
-                <foo:doubleNumber>184.52</foo:doubleNumber>
-                <foo:doubleArray>50.05</foo:doubleArray>
-                <foo:intArray>20</foo:intArray>
-                <foo:numberSetArray>
-                    <foo:integerNumber>1</foo:integerNumber>
-                    <foo:floatNumber>11</foo:floatNumber>
-                    <foo:doubleNumber>111</foo:doubleNumber>
-                </foo:numberSetArray>
-                <foo:numberSetArray>
-                    <foo:integerNumber>2</foo:integerNumber>
-                    <foo:floatNumber>22</foo:floatNumber>
-                    <foo:doubleNumber>222</foo:doubleNumber>
-                </foo:numberSetArray>
-                <foo:numberSet>
-                    <foo:integerNumber>54</foo:integerNumber>
-                    <foo:floatNumber>158.68</foo:floatNumber>
-                    <foo:doubleNumber>369.04</foo:doubleNumber>
-                </foo:numberSet>
-            </foo:PropertyThreeElement>
+            <PropertyThreeElement xmlns="">
+                <stringArray>TestElementString_1</stringArray>
+                <stringArray>TestElementString_2</stringArray>
+                <intArray>10</intArray>
+                <integerNumber>27</integerNumber>
+                <floatNumber>79.34</floatNumber>
+                <doubleArray>25.52</doubleArray>
+                <doubleNumber>184.52</doubleNumber>
+                <doubleArray>50.05</doubleArray>
+                <intArray>20</intArray>
+                <numberSetArray>
+                    <integerNumber>1</integerNumber>
+                    <floatNumber>11</floatNumber>
+                    <doubleNumber>111</doubleNumber>
+                </numberSetArray>
+                <numberSetArray>
+                    <integerNumber>2</integerNumber>
+                    <floatNumber>22</floatNumber>
+                    <doubleNumber>222</doubleNumber>
+                </numberSetArray>
+                <numberSet>
+                    <integerNumber>54</integerNumber>
+                    <floatNumber>158.68</floatNumber>
+                    <doubleNumber>369.04</doubleNumber>
+                </numberSet>
+            </PropertyThreeElement>
         </property>
         <property name="complexPropertyFour" element="foo:PropertyFourElement" many="true">
-            <foo:PropertyFourElement>
-                <foo:integerNumber>1</foo:integerNumber>
-                <foo:floatNumber>11.11</foo:floatNumber>
-                <foo:doubleNumber>111.111</foo:doubleNumber>
-                <foo:numberSet>
-                    <foo:integerNumber>11</foo:integerNumber>
-                    <foo:floatNumber>1111.1111</foo:floatNumber>
-                    <foo:doubleNumber>11111.11111</foo:doubleNumber>
-                </foo:numberSet>
-            </foo:PropertyFourElement>
-            <foo:PropertyFourElement>
-                <foo:integerNumber>2</foo:integerNumber>
-                <foo:floatNumber>22.22</foo:floatNumber>
-                <foo:doubleNumber>222.222</foo:doubleNumber>
-                <foo:numberSet>
-                    <foo:integerNumber>22</foo:integerNumber>
-                    <foo:floatNumber>2222.2222</foo:floatNumber>
-                    <foo:doubleNumber>22222.22222</foo:doubleNumber>
-                </foo:numberSet>
-            </foo:PropertyFourElement>
-            <foo:PropertyFourElement>
-                <foo:integerNumber>3</foo:integerNumber>
-                <foo:floatNumber>33.33</foo:floatNumber>
-                <foo:doubleNumber>333.333</foo:doubleNumber>
-                <foo:numberSet>
-                    <foo:integerNumber>33</foo:integerNumber>
-                    <foo:floatNumber>3333.3333</foo:floatNumber>
-                    <foo:doubleNumber>33333.33333</foo:doubleNumber>
-                </foo:numberSet>
-            </foo:PropertyFourElement>
+            <PropertyFourElement xmlns="">
+                <integerNumber>1</integerNumber>
+                <floatNumber>11.11</floatNumber>
+                <doubleNumber>111.111</doubleNumber>
+                <numberSet>
+                    <integerNumber>11</integerNumber>
+                    <floatNumber>1111.1111</floatNumber>
+                    <doubleNumber>11111.11111</doubleNumber>
+                </numberSet>
+            </PropertyFourElement>
+            <PropertyFourElement xmlns="">
+                <integerNumber>2</integerNumber>
+                <floatNumber>22.22</floatNumber>
+                <doubleNumber>222.222</doubleNumber>
+                <numberSet>
+                    <integerNumber>22</integerNumber>
+                    <floatNumber>2222.2222</floatNumber>
+                    <doubleNumber>22222.22222</doubleNumber>
+                </numberSet>
+            </PropertyFourElement>
+            <PropertyFourElement xmlns="">
+                <integerNumber>3</integerNumber>
+                <floatNumber>33.33</floatNumber>
+                <doubleNumber>333.333</doubleNumber>
+                <numberSet>
+                    <integerNumber>33</integerNumber>
+                    <floatNumber>3333.3333</floatNumber>
+                    <doubleNumber>33333.33333</doubleNumber>
+                </numberSet>
+            </PropertyFourElement>
         </property>
         <property name="sdoProperty" type="cust:Customer">	
         	<cust:customer>

Modified: incubator/tuscany/java/sca/itest/ws-void-args-return/src/main/java/voidtest/TestClientImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/ws-void-args-return/src/main/java/voidtest/TestClientImpl.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/ws-void-args-return/src/main/java/voidtest/TestClientImpl.java (original)
+++ incubator/tuscany/java/sca/itest/ws-void-args-return/src/main/java/voidtest/TestClientImpl.java Wed Dec  5 12:23:21 2007
@@ -36,7 +36,7 @@
     }
 
     public void runTest() {
-        assertEquals("Hello Smith", helloService.getGreetings(" Smith"));
+        assertEquals("Hello  Smith", helloService.getGreetings(" Smith"));
         helloService.giveGreetings("Jones");
         helloService.giveGreetingsOneWay("Brown");
         assertEquals("Hello Stranger", helloService.takeGreetings());

Modified: incubator/tuscany/java/sca/modules/binding-jsonrpc/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jsonrpc/pom.xml?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jsonrpc/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/binding-jsonrpc/pom.xml Wed Dec  5 12:23:21 2007
@@ -38,13 +38,6 @@
         </dependency>
         
         <dependency>
-	        <groupId>net.sf.json-lib</groupId>
-	        <artifactId>json-lib</artifactId>
-	        <version>0.8</version>
-	        <scope>test</scope>
-        </dependency>
-
-        <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-assembly</artifactId>
             <version>1.1-incubating-SNAPSHOT</version>

Modified: incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCServiceServlet.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCServiceServlet.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCServiceServlet.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCServiceServlet.java Wed Dec  5 12:23:21 2007
@@ -37,8 +37,8 @@
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
 import org.apache.tuscany.sca.runtime.RuntimeWire;
-import org.codehaus.jettison.json.JSONArray;
-import org.codehaus.jettison.json.JSONException;
+import org.json.JSONArray;
+import org.json.JSONObject;
 import org.osoa.sca.ServiceRuntimeException;
 
 import com.metaparadigm.jsonrpc.JSONRPCBridge;
@@ -125,12 +125,12 @@
             data.write(buf, 0, ret);
         }
 
-        org.codehaus.jettison.json.JSONObject jsonReq = null;
+        JSONObject jsonReq = null;
         String method = null;
         try {
-            jsonReq = new org.codehaus.jettison.json.JSONObject(data.toString());
+            jsonReq = new JSONObject(data.toString());
             method = jsonReq.getString("method");
-        } catch (JSONException e) {
+        } catch (Exception e) {
             throw new RuntimeException("Unable to parse request", e);
         }
 
@@ -198,7 +198,7 @@
         return jsonResp.toString().getBytes("UTF-8");
     }
     
-    protected byte[] handleJSONRPCMethodInvocation(HttpServletRequest request, HttpServletResponse response, org.codehaus.jettison.json.JSONObject jsonReq) throws IOException,
+    protected byte[] handleJSONRPCMethodInvocation(HttpServletRequest request, HttpServletResponse response, JSONObject jsonReq) throws IOException,
     UnsupportedEncodingException {
 
         String method = null;
@@ -219,7 +219,7 @@
             }
             id = jsonReq.get("id");
 
-        } catch (JSONException e) {
+        } catch (Exception e) {
             throw new RuntimeException("Unable to find json method name", e);
         }
 
@@ -227,20 +227,20 @@
         RuntimeWire wire = componentService.getRuntimeWire(binding, serviceContract);
         Operation jsonOperation = findOperation(method);
         Object result = null;
-        org.codehaus.jettison.json.JSONObject jsonResponse = new org.codehaus.jettison.json.JSONObject();
+        JSONObject jsonResponse = new JSONObject();
         try {
             result = wire.invoke(jsonOperation, args);
             try {
                 jsonResponse.put("result", result);
                 jsonResponse.putOpt("id", id);
-            } catch (JSONException e) {
+            } catch (Exception e) {
                 throw new ServiceRuntimeException(e);
             }
         } catch (InvocationTargetException e) {
             try {
                 jsonResponse.put("error", e.getCause());
                 jsonResponse.putOpt("id", id);
-            } catch (JSONException e1) {
+            } catch (Exception e1) {
                 throw new ServiceRuntimeException(e);
             }
         } catch(RuntimeException e) {

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java Wed Dec  5 12:23:21 2007
@@ -43,9 +43,8 @@
  * 
  * @version $Rev$ $Date$
  */
-public class DefaultStAXArtifactProcessorExtensionPoint
-    extends DefaultArtifactProcessorExtensionPoint<StAXArtifactProcessor>
-    implements StAXArtifactProcessorExtensionPoint {
+public class DefaultStAXArtifactProcessorExtensionPoint extends
+    DefaultArtifactProcessorExtensionPoint<StAXArtifactProcessor> implements StAXArtifactProcessorExtensionPoint {
 
     private ModelFactoryExtensionPoint modelFactories;
     private boolean loaded;
@@ -61,60 +60,76 @@
         processorsByArtifactType.put((Object)artifactProcessor.getArtifactType(), artifactProcessor);
         processorsByModelType.put(artifactProcessor.getModelType(), artifactProcessor);
     }
-    
+
     public void removeArtifactProcessor(StAXArtifactProcessor artifactProcessor) {
         processorsByArtifactType.remove((Object)artifactProcessor.getArtifactType());
-        processorsByModelType.remove(artifactProcessor.getModelType());        
+        processorsByModelType.remove(artifactProcessor.getModelType());
     }
-    
+
     @Override
     public StAXArtifactProcessor getProcessor(Class<?> modelType) {
         loadArtifactProcessors();
         return super.getProcessor(modelType);
     }
-    
+
     @Override
     public StAXArtifactProcessor getProcessor(Object artifactType) {
         loadArtifactProcessors();
         return super.getProcessor(artifactType);
     }
 
+    private static QName getQName(String qname) {
+        if (qname == null) {
+            return null;
+        }
+        qname = qname.trim();
+        if (qname.startsWith("{")) {
+            int h = qname.indexOf('}');
+            if (h != -1) {
+                return new QName(qname.substring(1, h), qname.substring(h + 1));
+            }
+        } else {
+            int h = qname.indexOf('#');
+            if (h != -1) {
+                return new QName(qname.substring(0, h), qname.substring(h + 1));
+            }
+        }
+        throw new IllegalArgumentException("Invalid qname: "+qname);
+    }
+
     private void loadArtifactProcessors() {
         if (loaded)
             return;
 
         // Get the processor service declarations
-        Set<ServiceDeclaration> processorDeclarations; 
+        Set<ServiceDeclaration> processorDeclarations;
         try {
             processorDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(StAXArtifactProcessor.class);
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
-        
-        for (ServiceDeclaration processorDeclaration: processorDeclarations) {
+
+        for (ServiceDeclaration processorDeclaration : processorDeclarations) {
             Map<String, String> attributes = processorDeclaration.getAttributes();
-            
+
             // Load a StAX artifact processor
-            
+
             // Get the model qname
-            QName artifactType = null;
-            String qname = attributes.get("qname");
-            if (qname != null) {
-                int h = qname.indexOf('#');
-                artifactType = new QName(qname.substring(0, h), qname.substring(h+1));
-            }
-            
+            QName artifactType = getQName(attributes.get("qname"));
+
             // Get the model class name
             String modelTypeName = attributes.get("model");
-            
+
             // Get the model factory class name 
             String factoryName = attributes.get("factory");
-            
+
             // Create a processor wrapper and register it
-            StAXArtifactProcessor processor = new LazyStAXArtifactProcessor(modelFactories, artifactType, modelTypeName, factoryName, processorDeclaration);
+            StAXArtifactProcessor processor =
+                new LazyStAXArtifactProcessor(modelFactories, artifactType, modelTypeName, factoryName,
+                                              processorDeclaration);
             addArtifactProcessor(processor);
         }
-        
+
         loaded = true;
     }
 
@@ -131,13 +146,13 @@
         private ServiceDeclaration processorDeclaration;
         private StAXArtifactProcessor processor;
         private Class modelType;
-        
-        LazyStAXArtifactProcessor(ModelFactoryExtensionPoint modelFactories, 
-        		QName artifactType, 
-        		String modelTypeName, 
-        		String factoryName, 
-        		ServiceDeclaration processorDeclaration) {
-        	
+
+        LazyStAXArtifactProcessor(ModelFactoryExtensionPoint modelFactories,
+                                  QName artifactType,
+                                  String modelTypeName,
+                                  String factoryName,
+                                  ServiceDeclaration processorDeclaration) {
+
             this.modelFactories = modelFactories;
             this.artifactType = artifactType;
             this.modelTypeName = modelTypeName;
@@ -148,18 +163,20 @@
         public QName getArtifactType() {
             return artifactType;
         }
-        
+
         @SuppressWarnings("unchecked")
         private StAXArtifactProcessor getProcessor() {
             if (processor == null) {
 
-                if (processorDeclaration.getClassName().equals("org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor")) {
-                    
+                if (processorDeclaration.getClassName()
+                    .equals("org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor")) {
+
                     // Specific initialization for the DefaultBeanModelProcessor
                     AssemblyFactory assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
                     PolicyFactory policyFactory = modelFactories.getFactory(PolicyFactory.class);
                     try {
-                        Class<StAXArtifactProcessor> processorClass = (Class<StAXArtifactProcessor>)processorDeclaration.loadClass();
+                        Class<StAXArtifactProcessor> processorClass =
+                            (Class<StAXArtifactProcessor>)processorDeclaration.loadClass();
                         Object modelFactory;
                         if (factoryName != null) {
                             Class<?> factoryClass = (Class<?>)processorDeclaration.loadClass(factoryName);
@@ -167,17 +184,29 @@
                         } else {
                             modelFactory = null;
                         }
-                        Constructor<StAXArtifactProcessor> constructor = processorClass.getConstructor(AssemblyFactory.class, PolicyFactory.class, QName.class, Class.class, Object.class);
-                        processor = constructor.newInstance(assemblyFactory, policyFactory, artifactType, getModelType(), modelFactory);
+                        Constructor<StAXArtifactProcessor> constructor =
+                            processorClass.getConstructor(AssemblyFactory.class,
+                                                          PolicyFactory.class,
+                                                          QName.class,
+                                                          Class.class,
+                                                          Object.class);
+                        processor =
+                            constructor.newInstance(assemblyFactory,
+                                                    policyFactory,
+                                                    artifactType,
+                                                    getModelType(),
+                                                    modelFactory);
                     } catch (Exception e) {
                         throw new IllegalStateException(e);
                     }
                 } else {
-                    
+
                     // Load and instanciate the processor class
                     try {
-                        Class<StAXArtifactProcessor> processorClass = (Class<StAXArtifactProcessor>)processorDeclaration.loadClass();
-                        Constructor<StAXArtifactProcessor> constructor = processorClass.getConstructor(ModelFactoryExtensionPoint.class);
+                        Class<StAXArtifactProcessor> processorClass =
+                            (Class<StAXArtifactProcessor>)processorDeclaration.loadClass();
+                        Constructor<StAXArtifactProcessor> constructor =
+                            processorClass.getConstructor(ModelFactoryExtensionPoint.class);
                         processor = constructor.newInstance(modelFactories);
                     } catch (Exception e) {
                         throw new IllegalStateException(e);
@@ -192,7 +221,8 @@
         }
 
         @SuppressWarnings("unchecked")
-        public void write(Object model, XMLStreamWriter outputSource) throws ContributionWriteException, XMLStreamException {
+        public void write(Object model, XMLStreamWriter outputSource) throws ContributionWriteException,
+            XMLStreamException {
             getProcessor().write(model, outputSource);
         }
 

Modified: incubator/tuscany/java/sca/modules/core-databinding/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/pom.xml?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/pom.xml Wed Dec  5 12:23:21 2007
@@ -40,6 +40,13 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-databinding-jaxb</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-core-spi</artifactId>
             <version>${project.version}</version>
             <scope>compile</scope>

Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java Wed Dec  5 12:23:21 2007
@@ -47,23 +47,23 @@
         MediatorImpl mediator = new MediatorImpl(dataBindings, transformers);
         Input2InputTransformer input2InputTransformer = new Input2InputTransformer();
         input2InputTransformer.setMediator(mediator);
-        transformers.addTransformer(input2InputTransformer);
+        transformers.addTransformer(input2InputTransformer, true);
 
         Output2OutputTransformer output2OutputTransformer = new Output2OutputTransformer();
         output2OutputTransformer.setMediator(mediator);
-        transformers.addTransformer(output2OutputTransformer);
+        transformers.addTransformer(output2OutputTransformer, true);
 
         Exception2ExceptionTransformer exception2ExceptionTransformer = new Exception2ExceptionTransformer();
         exception2ExceptionTransformer.setMediator(mediator);
-        transformers.addTransformer(exception2ExceptionTransformer);
+        transformers.addTransformer(exception2ExceptionTransformer, true);
         
         Array2ArrayTransformer array2ArrayTransformer = new Array2ArrayTransformer();
         array2ArrayTransformer.setMediator(mediator);
-        transformers.addTransformer(array2ArrayTransformer);
+        transformers.addTransformer(array2ArrayTransformer, true);
 
         Group2GroupTransformer group2GroupTransformer = new Group2GroupTransformer();
         group2GroupTransformer.setMediator(mediator);
-        transformers.addTransformer(group2GroupTransformer);
+        transformers.addTransformer(group2GroupTransformer, true);
 
         ModelFactoryExtensionPoint modelFactories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
         JavaInterfaceFactory javaFactory = modelFactories.getFactory(JavaInterfaceFactory.class);

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/InvocationChainImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/InvocationChainImpl.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/InvocationChainImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/InvocationChainImpl.java Wed Dec  5 12:23:21 2007
@@ -18,6 +18,9 @@
  */
 package org.apache.tuscany.sca.core.invocation;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Interceptor;
 import org.apache.tuscany.sca.invocation.InvocationChain;
@@ -31,8 +34,7 @@
 public class InvocationChainImpl implements InvocationChain {
     private Operation sourceOperation;
     private Operation targetOperation;
-    private Invoker invokerChainHead;
-    private Invoker invokerChainTail;
+    private List<Invoker> invokers = new ArrayList<Invoker>();
 
     public InvocationChainImpl(Operation operation) {
         assert operation != null;
@@ -56,35 +58,35 @@
     }
 
     public void addInterceptor(Interceptor interceptor) {
-        if (invokerChainHead == null) {
-            invokerChainHead = interceptor;
-        } else {
-            if (invokerChainHead instanceof Interceptor) {
-                ((Interceptor)invokerChainTail).setNext(interceptor);
+        invokers.add(interceptor);
+        int index = invokers.size() - 1;
+        if (index - 1 >= 0) {
+            Invoker before = invokers.get(index - 1);
+            if (before instanceof Interceptor) {
+                ((Interceptor)before).setNext(interceptor);
             }
         }
-        invokerChainTail = interceptor;
     }
 
     public void addInvoker(Invoker invoker) {
-        if (invokerChainHead == null) {
-            invokerChainHead = invoker;
-        } else {
-            if (invokerChainTail instanceof Interceptor) {
-                ((Interceptor)invokerChainTail).setNext(invoker);
+        invokers.add(invoker);
+        int index = invokers.size() - 1;
+        if (index - 1 >= 0) {
+            Invoker before = invokers.get(index - 1);
+            if (before instanceof Interceptor) {
+                ((Interceptor)before).setNext(invoker);
             }
         }
-        invokerChainTail = invoker;
     }
 
     public Invoker getHeadInvoker() {
-        return invokerChainHead;
+        return invokers.isEmpty() ? null : invokers.get(0);
     }
 
     public Invoker getTailInvoker() {
-        return invokerChainTail;
+        return invokers.isEmpty() ? null : invokers.get(invokers.size() - 1);
     }
-    
+
     /**
      * @return the sourceOperation
      */
@@ -100,30 +102,16 @@
     }
 
     public void addInterceptor(int index, Interceptor interceptor) {
-        int i = 0;
-        Invoker next = invokerChainHead;
-        Invoker prev = null;
-        while (next != null && i < index) {
-            prev = next;
-            if (next instanceof Interceptor) {
-                next = ((Interceptor)next).getNext();
-                i++;
-            } else {
-                throw new ArrayIndexOutOfBoundsException(index);
+        invokers.add(index, interceptor);
+        if (index - 1 >= 0) {
+            Invoker before = invokers.get(index - 1);
+            if (before instanceof Interceptor) {
+                ((Interceptor)before).setNext(interceptor);
             }
         }
-        if (i == index) {
-            if (prev != null) {
-                ((Interceptor)prev).setNext(interceptor);
-            } else {
-                invokerChainHead = interceptor;
-            }
-            interceptor.setNext(next);
-            if (next == null) {
-                invokerChainTail = interceptor;
-            }
-        } else {
-            throw new ArrayIndexOutOfBoundsException(index);
+        if (index + 1 < invokers.size()) {
+            Invoker after = invokers.get(index + 1);
+            interceptor.setNext(after);
         }
     }
 

Modified: incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java Wed Dec  5 12:23:21 2007
@@ -73,6 +73,11 @@
     }
 
     private void addChild(OMElement wrapper, ElementInfo childElement, OMElement element) {
+        if (element == null) {
+            OMElement e = wrapper.getOMFactory().createOMElement(childElement.getQName(), wrapper);
+            attachXSINil(e);
+            return;
+        }
         QName elementName = childElement.getQName();
         // Make it a bit tolerating of element QName 
         if (!elementName.equals(element.getQName())) {
@@ -212,5 +217,13 @@
             }
         }
         return element;
+    }
+
+    private void attachXSINil(OMElement element) {
+        OMNamespace xsiNS =
+            element.getOMFactory().createOMNamespace(XSI_TYPE_QNAME.getNamespaceURI(), XSI_TYPE_QNAME.getPrefix());
+        element.declareNamespace(xsiNS);
+        OMAttribute attr = element.getOMFactory().createOMAttribute("nil", xsiNS, "true");
+        element.addAttribute(attr);
     }
 }

Modified: incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer (original)
+++ incubator/tuscany/java/sca/modules/databinding-axiom/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer Wed Dec  5 12:23:21 2007
@@ -20,8 +20,8 @@
 org.apache.tuscany.sca.databinding.axiom.OMElement2Externalizable;source=org.apache.axiom.om.OMElement,target=org.osoa.sca.CallableReference,weight=10
 org.apache.tuscany.sca.databinding.axiom.Externalizable2OMElement;source=java.io.Externalizable,target=org.apache.axiom.om.OMElement,weight=10
 org.apache.tuscany.sca.databinding.axiom.OMElement2Externalizable;source=org.apache.axiom.om.OMElement,target=java.io.Externalizable,weight=10
-org.apache.tuscany.sca.databinding.axiom.Object2OMElement;source=java:simpleType,target=org.apache.axiom.om.OMElement,weight=80000
-org.apache.tuscany.sca.databinding.axiom.OMElement2Object;source=org.apache.axiom.om.OMElement,target=java:simpleType,weight=80000
+# org.apache.tuscany.sca.databinding.axiom.Object2OMElement;source=java:simpleType,target=org.apache.axiom.om.OMElement,weight=80000
+# org.apache.tuscany.sca.databinding.axiom.OMElement2Object;source=org.apache.axiom.om.OMElement,target=java:simpleType,weight=80000
 org.apache.tuscany.sca.databinding.axiom.OMElement2String;source=org.apache.axiom.om.OMElement,target=java.lang.String,weight=80
 org.apache.tuscany.sca.databinding.axiom.OMElement2XMLStreamReader;source=org.apache.axiom.om.OMElement,target=javax.xml.stream.XMLStreamReader,weight=60
 org.apache.tuscany.sca.databinding.axiom.String2OMElement;source=java.lang.String,target=org.apache.axiom.om.OMElement,weight=80

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/pom.xml Wed Dec  5 12:23:21 2007
@@ -60,24 +60,22 @@
         <dependency>
             <groupId>com.sun.xml.bind</groupId>
             <artifactId>jaxb-impl</artifactId>
-            <version>2.1.4</version>
-            <scope>runtime</scope>
-            <!-- Replacing stax 1.0 with stax 1.0.1 -->
+            <version>2.1.5</version>
+            <scope>compile</scope>
             <exclusions>
                 <exclusion>
-                    <groupId>javax.xml.bind</groupId>
-                    <artifactId>jsr173_api</artifactId>
+                    <groupId>javax.xml.stream</groupId>
+                    <artifactId>stax-api</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
-        <!-- 
-            <dependency>
+
+        <dependency>
             <groupId>org.jvnet.jaxb.reflection</groupId>
             <artifactId>jaxb2-reflection</artifactId>
             <version>2.1.4</version>
             <scope>compile</scope>
-            </dependency>
-        -->
+        </dependency>
     </dependencies>
 
     <repositories>
@@ -111,30 +109,30 @@
                 <artifactId>maven-dependency-plugin</artifactId>
                 <executions>
                     <execution>
-                      <id>copy</id>
-                      <phase>generate-sources</phase>
-                      <goals>
-                          <goal>copy</goal>
-                      </goals>
-                      <configuration>
-                         <artifactItems>
-                             <artifactItem>
-                                 <groupId>javax.xml.ws</groupId>
-                                 <artifactId>jaxws-api</artifactId>
-                                 <version>2.1</version>
-                                 <type>jar</type>
-                             </artifactItem>
-                             <artifactItem>
-                                 <groupId>javax.xml.bind</groupId>
-                                 <artifactId>jaxb-api</artifactId>
-                                 <version>2.1</version>
-                                 <type>jar</type>
-                             </artifactItem>
-                         </artifactItems>
-                         <outputDirectory>${project.build.directory}/endorsed</outputDirectory>
-                         <overWriteReleases>false</overWriteReleases>
-                         <overWriteSnapshots>true</overWriteSnapshots>
-                      </configuration>
+                        <id>copy</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>javax.xml.ws</groupId>
+                                    <artifactId>jaxws-api</artifactId>
+                                    <version>2.1</version>
+                                    <type>jar</type>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>javax.xml.bind</groupId>
+                                    <artifactId>jaxb-api</artifactId>
+                                    <version>2.1</version>
+                                    <type>jar</type>
+                                </artifactItem>
+                            </artifactItems>
+                            <outputDirectory>${project.build.directory}/endorsed</outputDirectory>
+                            <overWriteReleases>false</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                        </configuration>
                     </execution>
                 </executions>
             </plugin>

Added: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/BeanXMLStreamReaderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/BeanXMLStreamReaderImpl.java?rev=601501&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/BeanXMLStreamReaderImpl.java (added)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/BeanXMLStreamReaderImpl.java Wed Dec  5 12:23:21 2007
@@ -0,0 +1,312 @@
+/*
+ * 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.databinding.jaxb;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl;
+import org.apache.tuscany.sca.databinding.xml.SimpleXmlNodeImpl;
+import org.apache.tuscany.sca.databinding.xml.XmlNode;
+import org.apache.tuscany.sca.databinding.xml.XmlTreeStreamReaderImpl;
+import org.apache.tuscany.sca.interfacedef.util.TypeInfo;
+
+import com.sun.xml.bind.v2.model.annotation.RuntimeInlineAnnotationReader;
+import com.sun.xml.bind.v2.model.core.Ref;
+import com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder;
+import com.sun.xml.bind.v2.model.runtime.RuntimeClassInfo;
+import com.sun.xml.bind.v2.model.runtime.RuntimePropertyInfo;
+import com.sun.xml.bind.v2.model.runtime.RuntimeTypeInfoSet;
+import com.sun.xml.bind.v2.runtime.IllegalAnnotationsException;
+import com.sun.xml.bind.v2.runtime.JAXBContextImpl;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class BeanXMLStreamReaderImpl extends XmlTreeStreamReaderImpl {
+    private final static Comparator<Accessor> COMPARATOR = new Comparator<Accessor>() {
+        public int compare(Accessor o1, Accessor o2) {
+            return o1.getName().compareTo(o2.getName());
+        }
+    };
+
+    private final static String XSI_PREFIX = "xsi";
+    private final static String XSI_NS = "http://www.w3.org/2001/XMLSchema-instance";
+
+    private final static XmlNode getXSIType(QName realType) {
+        QName xsiType = new QName(XSI_NS, "type", XSI_PREFIX);
+        String prefix = realType.getPrefix();
+        String typeName = realType.getLocalPart();
+        if (prefix != null && !prefix.equals("")) {
+            typeName = prefix + ":" + realType.getLocalPart();
+        }
+        return new SimpleXmlNodeImpl(xsiType, XmlNode.Type.ATTRIBUTE);
+    }
+
+    /**
+     * Represent a Map.Entry XML node
+     * @version $Rev$ $Date$
+     */
+    public static class MapEntryXmlNodeImpl extends SimpleXmlNodeImpl implements XmlNode {
+        private Map.Entry entry;
+
+        public MapEntryXmlNodeImpl(Entry entry) {
+            super(new QName("", "entry"), entry);
+            this.entry = entry;
+        }
+
+        public Iterator<XmlNode> children() {
+            List<XmlNode> nodes = new ArrayList<XmlNode>();
+            XmlNode key = new BeanXmlNodeImpl(new QName("", "key"), entry.getKey());
+            XmlNode value = new BeanXmlNodeImpl(new QName("", "value"), entry.getValue());
+            nodes.add(key);
+            nodes.add(value);
+            return nodes.iterator();
+        }
+    }
+
+    public static class BeanXmlNodeImpl extends SimpleXmlNodeImpl implements XmlNode {
+        private static final Object[] NULL = null;
+        private static final SimpleTypeMapperImpl MAPPER = new SimpleTypeMapperImpl();
+
+        public BeanXmlNodeImpl(Object bean) {
+            super(getName(bean == null ? null : bean.getClass()), bean);
+        }
+
+        public BeanXmlNodeImpl(QName name, Object bean) {
+            super(name, bean);
+        }
+
+        private static boolean isSimpleType(Class<?> javaType) {
+            return SimpleTypeMapperImpl.getXMLType(javaType) != null;
+        }
+
+        private static String getStringValue(Object o) {
+            if (o == null) {
+                return null;
+            }
+            TypeInfo info = SimpleTypeMapperImpl.getXMLType(o.getClass());
+            if (info != null) {
+                return MAPPER.toXMLLiteral(info.getQName(), o, null);
+            } else {
+                return String.valueOf(o);
+            }
+        }
+
+        public Iterator<XmlNode> children() {
+            if (name == null) {
+                return null;
+            }
+            if (value == null) {
+                return super.children();
+            }
+            if (isSimpleType(value.getClass())) {
+                XmlNode textNode = new BeanXmlNodeImpl(null, value);
+                return Arrays.asList(textNode).iterator();
+            }
+            if (Map.class.isAssignableFrom(value.getClass())) {
+                List<XmlNode> entries = new ArrayList<XmlNode>();
+                Map map = (Map)value;
+                if (map != null) {
+                    for (Object e : map.entrySet()) {
+                        Map.Entry entry = (Map.Entry)e;
+                        entries.add(new MapEntryXmlNodeImpl(entry));
+                    }
+                }
+                return entries.iterator();
+            }
+            try {
+                Map<String, Accessor> accessorMap = getAccessors(value);
+                List<Accessor> accessorList = new ArrayList<Accessor>(accessorMap.values());
+                Collections.sort(accessorList, COMPARATOR);
+
+                List<XmlNode> props = new ArrayList<XmlNode>();
+                for (Accessor accessor : accessorList) {
+                    Class<?> pType = accessor.getType();
+
+                    QName pName = new QName(name.getNamespaceURI(), accessor.getName());
+                    Object pValue = accessor.getValue();
+                    if (pType.isArray()) {
+                        if (pValue != null) {
+                            int i1 = Array.getLength(pValue);
+                            for (int j = 0; j < i1; j++) {
+                                Object o = Array.get(pValue, j);
+                                props.add(new BeanXmlNodeImpl(pName, o));
+                            }
+                        } else {
+                            // TODO: How to handle null?
+                        }
+                    } else if (Collection.class.isAssignableFrom(pType)) {
+                        Collection objList = (Collection)pValue;
+                        if (objList != null && objList.size() > 0) {
+                            for (Iterator j = objList.iterator(); j.hasNext();) {
+                                Object o = j.next();
+                                props.add(new BeanXmlNodeImpl(pName, o));
+                            }
+
+                        } else {
+                            // How to handle null
+                        }
+                    } else {
+                        props.add(new BeanXmlNodeImpl(pName, pValue));
+                    }
+                }
+                return props.iterator();
+            } catch (Exception e) {
+                throw new IllegalArgumentException(e);
+            }
+        }
+
+        public QName getName() {
+            return name;
+        }
+
+        public String getValue() {
+            return getStringValue(value);
+        }
+
+        public static QName getName(Class<?> cls) {
+            if (cls == null) {
+                return null;
+            }
+            Package pkg = cls.getPackage();
+            if (pkg == null) {
+                return new QName("", cls.getSimpleName());
+            }
+            StringBuffer ns = new StringBuffer("http://");
+            String[] names = pkg.getName().split("\\.");
+            for (int i = names.length - 1; i >= 0; i--) {
+                ns.append(names[i]);
+                if (i != 0) {
+                    ns.append('.');
+                }
+            }
+            ns.append('/');
+            return new QName(ns.toString(), cls.getSimpleName());
+        }
+
+    }
+
+    public BeanXMLStreamReaderImpl(QName name, Object bean) {
+        super(getXmlNode(name, bean));
+    }
+
+    private static BeanXmlNodeImpl getXmlNode(QName name, Object bean) {
+        BeanXmlNodeImpl root = null;
+        if (name != null) {
+            root = new BeanXmlNodeImpl(name, bean);
+        } else {
+            root = new BeanXmlNodeImpl(bean);
+        }
+        return root;
+    }
+
+    public static interface Accessor {
+        String getName();
+
+        Class<?> getType();
+
+        Object getValue() throws Exception;
+
+        void setValue(Object value) throws Exception;
+    }
+
+    private static RuntimeTypeInfoSet create(Class... classes) throws Exception {
+        IllegalAnnotationsException.Builder errorListener = new IllegalAnnotationsException.Builder();
+        RuntimeInlineAnnotationReader reader = new RuntimeInlineAnnotationReader();
+        JAXBContextImpl context =
+            new JAXBContextImpl(classes, null, Collections.<Class, Class> emptyMap(), null, false, reader, false, false);
+        RuntimeModelBuilder builder =
+            new RuntimeModelBuilder(context, reader, Collections.<Class, Class> emptyMap(), null);
+        builder.setErrorHandler(errorListener);
+        for (Class c : classes)
+            builder.getTypeInfo(new Ref<Type, Class>(c));
+
+        RuntimeTypeInfoSet r = builder.link();
+        errorListener.check();
+        return r;
+    }
+
+    private static class JAXBAccessor implements Accessor {
+        private Object target;
+        private RuntimePropertyInfo prop;
+
+        public JAXBAccessor(Object target, RuntimePropertyInfo field) {
+            super();
+            this.target = target;
+            this.prop = field;
+        }
+
+        public String getName() {
+            return prop.getName();
+        }
+
+        public Object getValue() throws Exception {
+            return prop.getAccessor().get(target);
+        }
+
+        public void setValue(Object value) throws Exception {
+            prop.getAccessor().set(target, value);
+        }
+
+        public Class<?> getType() {
+            Type type = prop.getRawType();
+            if (type instanceof Class) {
+                return (Class<?>)type;
+            } else if (type instanceof ParameterizedType) {
+                ParameterizedType pType = (ParameterizedType)type;
+                type = pType.getRawType();
+                if (type instanceof Class) {
+                    return (Class<?>)type;
+                }
+            }
+            return Object.class;
+        }
+
+    }
+
+    private static Map<String, Accessor> getAccessors(Object target) throws Exception {
+        if (target == null) {
+            return Collections.emptyMap();
+        }
+        Map<String, Accessor> map = new HashMap<String, Accessor>();
+        Class<?> type = target.getClass();
+        RuntimeTypeInfoSet set = create(type);
+        RuntimeClassInfo clsInfo = (RuntimeClassInfo)set.getTypeInfo(type);
+        for (RuntimePropertyInfo f : clsInfo.getProperties()) {
+            map.put(f.getName(), new JAXBAccessor(target, f));
+        }
+        return map;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/BeanXMLStreamReaderImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/BeanXMLStreamReaderImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java Wed Dec  5 12:23:21 2007
@@ -33,9 +33,9 @@
 public class JAXB2Node extends BaseTransformer<Object, Node> implements PullTransformer<Object, Node> {
 
     public Node transform(Object source, TransformationContext tContext) {
-        if (source == null) {
-            return null;
-        }
+//        if (source == null) {
+//            return null;
+//        }
         try {
             JAXBContext context = JAXBContextHelper.createJAXBContext(tContext, true);
             Marshaller marshaller = context.createMarshaller();
@@ -44,7 +44,7 @@
             Document document = DOMHelper.newDocument();
             JAXBElement<?> jaxbElement = JAXBContextHelper.createJAXBElement(tContext.getSourceDataType(), source);
             marshaller.marshal(jaxbElement, document);
-            return document;
+            return DOMHelper.adjustElementName(tContext, document.getDocumentElement());
         } catch (Exception e) {
             throw new TransformationException(e);
         }

Added: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2XMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2XMLStreamReader.java?rev=601501&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2XMLStreamReader.java (added)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2XMLStreamReader.java Wed Dec  5 12:23:21 2007
@@ -0,0 +1,73 @@
+/*
+ * 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.databinding.jaxb;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.sca.databinding.PullTransformer;
+import org.apache.tuscany.sca.databinding.TransformationContext;
+import org.apache.tuscany.sca.databinding.TransformationException;
+import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
+
+public class JAXB2XMLStreamReader extends BaseTransformer<Object, XMLStreamReader> implements
+    PullTransformer<Object, XMLStreamReader> {
+
+    public JAXB2XMLStreamReader() {
+        super();
+    }
+
+    public XMLStreamReader transform(Object source, TransformationContext context) {
+        if (source == null) {
+            return null;
+        }
+        try {
+            QName name = null;
+            Object bean = source;
+            JAXBElement<?> element = JAXBContextHelper.createJAXBElement(context.getSourceDataType(), source);
+            name = element.getName();
+            bean = element.getValue();
+            BeanXMLStreamReaderImpl reader = new BeanXMLStreamReaderImpl(name, bean);
+            return reader;
+        } catch (Exception e) {
+            throw new TransformationException(e);
+        }
+    }
+
+    @Override
+    public Class getSourceType() {
+        return Object.class;
+    }
+
+    @Override
+    public Class getTargetType() {
+        return XMLStreamReader.class;
+    }
+
+    @Override
+    public int getWeight() {
+        return 10;
+    }
+
+    @Override
+    public String getTargetDataBinding() {
+        return JAXBDataBinding.NAME;
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2XMLStreamReader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2XMLStreamReader.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java Wed Dec  5 12:23:21 2007
@@ -19,8 +19,6 @@
 package org.apache.tuscany.sca.databinding.jaxb;
 
 import java.beans.Introspector;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
@@ -33,6 +31,7 @@
 
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.TransformationException;
+import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.util.XMLType;
 
@@ -49,17 +48,16 @@
         if (tContext == null)
             throw new TransformationException("JAXB context is not set for the transformation.");
 
-        DataType<?> bindingContext = source ? tContext.getSourceDataType() : tContext.getTargetDataType();
+        DataType<?> dataType = source ? tContext.getSourceDataType() : tContext.getTargetDataType();
         // FIXME: We should check the context path or classes
         // FIXME: What should we do if JAXB is an intermediate node?
 
-        String contextPath = null;
+        // String contextPath = null;
         JAXBContext context = null;
-        Class cls = bindingContext.getPhysical();
-        if (cls.getPackage() != null) {
-            contextPath = cls.getPackage().getName();
-            context = JAXBContext.newInstance(contextPath);
-        }
+        Class<?> cls = getJavaType(dataType);
+
+        context = JAXBContext.newInstance(cls);
+
         if (context == null) {
             throw new TransformationException("JAXB context is not set for the transformation.");
         }
@@ -111,19 +109,18 @@
         if (dataType == null) {
             return null;
         }
-        Type type = dataType.getPhysical();
-        if (type instanceof Class) {
-            Class cls = (Class)type;
-            if (JAXBElement.class.isAssignableFrom(cls)) {
-                return null;
-            } else {
-                return cls;
+        Class type = dataType.getPhysical();
+        if (JAXBElement.class.isAssignableFrom(type)) {
+            type = Object.class;
+        } 
+        if (type == Object.class && dataType.getLogical() instanceof XMLType) {
+            XMLType xType = (XMLType)dataType.getLogical();
+            Class javaType = SimpleTypeMapperImpl.getJavaType(xType.getTypeName());
+            if (javaType != null) {
+                type = javaType;
             }
-        } else if (type instanceof ParameterizedType) {
-            ParameterizedType pType = (ParameterizedType)type;
-            return (Class)pType.getRawType();
         }
-        return null;
+        return type;
     }
 
     public static XMLType getXmlTypeName(Class<?> javaType) {

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Node2JAXB.java Wed Dec  5 12:23:21 2007
@@ -39,7 +39,7 @@
         try {
             JAXBContext jaxbContext = JAXBContextHelper.createJAXBContext(context, false);
             Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-            Object result = unmarshaller.unmarshal(source);
+            Object result = unmarshaller.unmarshal(source, JAXBContextHelper.getJavaType(context.getTargetDataType()));
             return JAXBContextHelper.createReturnValue(context.getTargetDataType(), result);
         } catch (Exception e) {
             throw new TransformationException(e);

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Reader2JAXB.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Reader2JAXB.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Reader2JAXB.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/Reader2JAXB.java Wed Dec  5 12:23:21 2007
@@ -40,7 +40,7 @@
             JAXBContext jaxbContext = JAXBContextHelper.createJAXBContext(context, false);
             Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
             StreamSource streamSource = new StreamSource(source);
-            Object result = unmarshaller.unmarshal(streamSource);
+            Object result = unmarshaller.unmarshal(streamSource, JAXBContextHelper.getJavaType(context.getTargetDataType()));
             return JAXBContextHelper.createReturnValue(context.getTargetDataType(), result);
         } catch (Exception e) {
             throw new TransformationException(e);

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLStreamReader2JAXB.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLStreamReader2JAXB.java?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLStreamReader2JAXB.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLStreamReader2JAXB.java Wed Dec  5 12:23:21 2007
@@ -41,7 +41,9 @@
         try {
             JAXBContext jaxbContext = JAXBContextHelper.createJAXBContext(context, false);
             Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-            Object result = unmarshaller.unmarshal(source);
+            // FIXME: [rfeng] If the java type is Object.class, the unmarshalled result will be
+            // a DOM Node
+            Object result = unmarshaller.unmarshal(source, JAXBContextHelper.getJavaType(context.getTargetDataType()));
             source.close();
             return JAXBContextHelper.createReturnValue(context.getTargetDataType(), result);
         } catch (Exception e) {

Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer?rev=601501&r1=601500&r2=601501&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer Wed Dec  5 12:23:21 2007
@@ -19,4 +19,14 @@
 org.apache.tuscany.sca.databinding.jaxb.JAXB2Node;source=javax.xml.bind.JAXBElement,target=org.w3c.dom.Node,weight=500
 org.apache.tuscany.sca.databinding.jaxb.Node2JAXB;source=org.w3c.dom.Node,target=javax.xml.bind.JAXBElement,weight=500
 org.apache.tuscany.sca.databinding.jaxb.Reader2JAXB;source=java.io.Reader,target=javax.xml.bind.JAXBElement,weight=510
-org.apache.tuscany.sca.databinding.jaxb.XMLStreamReader2JAXB;source=javax.xml.stream.XMLStreamReader,target=javax.xml.bind.JAXBElement,weight=490
\ No newline at end of file
+org.apache.tuscany.sca.databinding.jaxb.XMLStreamReader2JAXB;source=javax.xml.stream.XMLStreamReader,target=javax.xml.bind.JAXBElement,weight=490
+
+org.apache.tuscany.sca.databinding.jaxb.JAXB2Node;source=java:complexType,target=org.w3c.dom.Node,weight=90000
+org.apache.tuscany.sca.databinding.jaxb.Node2JAXB;source=org.w3c.dom.Node,target=java:complexType,weight=90000
+
+org.apache.tuscany.sca.databinding.jaxb.Node2JAXB;source=org.w3c.dom.Node,target=java:simpleType,weight=90000
+org.apache.tuscany.sca.databinding.jaxb.JAXB2Node;source=java:simpleType,target=org.w3c.dom.Node,weight=90000
+
+org.apache.tuscany.sca.databinding.jaxb.XMLStreamReader2JAXB;source=javax.xml.stream.XMLStreamReader,target=java:complexType,weight=90000
+org.apache.tuscany.sca.databinding.jaxb.XMLStreamReader2JAXB;source=javax.xml.stream.XMLStreamReader,target=java:simpleType,weight=90000
+



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org