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). <BR>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.<BR><B>Powered by Yahoo!'s stock Quotes service.Not for
- commerical use.</b>
- </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