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/10/27 19:11:48 UTC
svn commit: r589154 [1/2] - in /incubator/tuscany/java/sca:
itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/
itest/osgi-implementation/src/test/java/supplychain/
itest/osgi-implementation/src/test/java/supplychain/factory/ itest/...
Author: rfeng
Date: Sat Oct 27 10:11:44 2007
New Revision: 589154
URL: http://svn.apache.org/viewvc?rev=589154&view=rev
Log:
Improvements in the databinding area:
* Support array types as the java arguments or return type
* Consider the introspected type for java2wsdl generation
* Have the databinding to honor default elements
Added:
incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Array2ArrayTransformer.java (with props)
Modified:
incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponent.java
incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponentImpl.java
incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/VersionedSupplyChainTestCase.java
incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/factory/FactoryTestCase.java
incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldImpl.java
incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldService.java
incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldServiceComponent.java
incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2aImpl.java
incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2bImpl.java
incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3aImpl.java
incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3bImpl.java
incubator/tuscany/java/sca/itest/wsdlless/src/main/resources/wsdl/helloworld.wsdl
incubator/tuscany/java/sca/itest/wsdlless/src/test/java/org/apache/tuscany/sca/itest/WSDLTestCase.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelperTestCase.java
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-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java
incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java
incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.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-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java
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-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/SaxonNodeDataBinding.java
incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SaxonValueDataBinding.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/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2Node.java
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2String.java
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2XMLStreamReader.java
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.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/impl/BaseDataBinding.java
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/GroupDataBinding.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/javabeans/JavaBeansDataBinding.java
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/SimpleJavaDataBinding.java
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/XML2JavaBeanTransformer.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/DOMDataBinding.java
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/XMLGroupDataBinding.java
incubator/tuscany/java/sca/modules/databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.DataBinding
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/impl/TransformerRegistryImplTestCase.java
incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderTestCase.java
incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java
incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/util/ElementInfo.java
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/util/WrapperInfo.java
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/util/XMLType.java
incubator/tuscany/java/sca/samples/quote-xquery/src/main/resources/META-INF/sca/quote_join.xq
Modified: incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponent.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponent.java (original)
+++ incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponent.java Sat Oct 27 10:11:44 2007
@@ -33,4 +33,6 @@
void modifyParameter();
ParameterObject getPO();
+
+ String[] bar(int[][] intArray);
}
Modified: incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponentImpl.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponentImpl.java (original)
+++ incubator/tuscany/java/sca/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponentImpl.java Sat Oct 27 10:11:44 2007
@@ -47,4 +47,8 @@
return po;
}
+ public String[] bar(int[][] intArray) {
+ return new String[] {"int"};
+ }
+
}
Modified: incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/VersionedSupplyChainTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/VersionedSupplyChainTestCase.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/VersionedSupplyChainTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/VersionedSupplyChainTestCase.java Sat Oct 27 10:11:44 2007
@@ -43,7 +43,7 @@
protected void tearDown() throws Exception {
super.tearDown();
- Thread.sleep(1000);
+ Thread.sleep(2000);
}
public void test() throws Exception {
Modified: incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/factory/FactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/factory/FactoryTestCase.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/factory/FactoryTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/supplychain/factory/FactoryTestCase.java Sat Oct 27 10:11:44 2007
@@ -44,7 +44,7 @@
customer.purchaseGames();
assertFalse(customer.hasOutstandingOrders());
- Thread.sleep(1000);
+ Thread.sleep(2000);
System.out.println("Test complete");
}
Modified: incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldImpl.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldImpl.java (original)
+++ incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldImpl.java Sat Oct 27 10:11:44 2007
@@ -30,4 +30,15 @@
return "Hi " + name;
}
+ public String[] getMultipleGreetings(String[] names) {
+ if(names==null) {
+ return null;
+ }
+ String[] greetings = new String[names.length];
+ for(int i=0; i<names.length;i++) {
+ greetings[i] = "Hi "+names[i];
+ }
+ return greetings;
+ }
+
}
Modified: incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldService.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldService.java (original)
+++ incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldService.java Sat Oct 27 10:11:44 2007
@@ -27,4 +27,5 @@
public interface HelloWorldService {
public String getGreetings(String name);
+ public String[] getMultipleGreetings(String[] names);
}
Modified: incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldServiceComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldServiceComponent.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldServiceComponent.java (original)
+++ incubator/tuscany/java/sca/itest/wsdlless/src/main/java/helloworld/HelloWorldServiceComponent.java Sat Oct 27 10:11:44 2007
@@ -40,4 +40,8 @@
public void setHelloWorldService(HelloWorldService helloWorldService) {
this.helloWorldService = helloWorldService;
}
+
+ public String[] getMultipleGreetings(String[] names) {
+ return helloWorldService.getMultipleGreetings(names);
+ }
}
Modified: incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2aImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2aImpl.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2aImpl.java (original)
+++ incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2aImpl.java Sat Oct 27 10:11:44 2007
@@ -34,5 +34,10 @@
public String getGreetings(String s) {
return comp.getGreetings(s);
}
+
+ public String[] getMultipleGreetings(String[] names) {
+ return comp.getMultipleGreetings(names);
+ }
+
}
Modified: incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2bImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2bImpl.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2bImpl.java (original)
+++ incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component2bImpl.java Sat Oct 27 10:11:44 2007
@@ -35,5 +35,8 @@
public String getGreetings(String s) {
return comp.getGreetings(s);
}
+ public String[] getMultipleGreetings(String[] names) {
+ return comp.getMultipleGreetings(names);
+ }
}
Modified: incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3aImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3aImpl.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3aImpl.java (original)
+++ incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3aImpl.java Sat Oct 27 10:11:44 2007
@@ -35,5 +35,8 @@
public String getGreetings(String s) {
return comp.getGreetings(s);
}
+ public String[] getMultipleGreetings(String[] names) {
+ return comp.getMultipleGreetings(names);
+ }
}
Modified: incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3bImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3bImpl.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3bImpl.java (original)
+++ incubator/tuscany/java/sca/itest/wsdlless/src/main/java/org/apache/tuscany/sca/itest/Component3bImpl.java Sat Oct 27 10:11:44 2007
@@ -36,4 +36,8 @@
return comp.getGreetings(s);
}
+ public String[] getMultipleGreetings(String[] names) {
+ return comp.getMultipleGreetings(names);
+ }
+
}
Modified: incubator/tuscany/java/sca/itest/wsdlless/src/main/resources/wsdl/helloworld.wsdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/wsdlless/src/main/resources/wsdl/helloworld.wsdl?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/wsdlless/src/main/resources/wsdl/helloworld.wsdl (original)
+++ incubator/tuscany/java/sca/itest/wsdlless/src/main/resources/wsdl/helloworld.wsdl Sat Oct 27 10:11:44 2007
@@ -1,80 +1,131 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
-->
-<wsdl:definitions targetNamespace="http://helloworld" xmlns:tns="http://helloworld" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- name="helloworld">
-
- <wsdl:types>
- <schema elementFormDefault="qualified" targetNamespace="http://helloworld" xmlns="http://www.w3.org/2001/XMLSchema">
-
- <element name="getGreetings">
- <complexType>
- <sequence>
- <element name="name" type="xsd:string"/>
- </sequence>
- </complexType>
- </element>
-
- <element name="getGreetingsResponse">
- <complexType>
- <sequence>
- <element name="getGreetingsReturn" type="xsd:string"/>
- </sequence>
- </complexType>
- </element>
-
- </schema>
- </wsdl:types>
-
- <wsdl:message name="getGreetingsRequest">
- <wsdl:part element="tns:getGreetings" name="parameters"/>
- </wsdl:message>
-
- <wsdl:message name="getGreetingsResponse">
- <wsdl:part element="tns:getGreetingsResponse" name="parameters"/>
- </wsdl:message>
-
- <wsdl:portType name="HelloWorld">
- <wsdl:operation name="getGreetings">
- <wsdl:input message="tns:getGreetingsRequest" name="getGreetingsRequest"/>
- <wsdl:output message="tns:getGreetingsResponse" name="getGreetingsResponse"/>
- </wsdl:operation>
- </wsdl:portType>
-
- <wsdl:binding name="HelloWorldSoapBinding" type="tns:HelloWorld">
- <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
- <wsdl:operation name="getGreetings">
- <wsdlsoap:operation soapAction=""/>
- <wsdl:input name="getGreetingsRequest">
- <wsdlsoap:body use="literal"/>
- </wsdl:input>
- <wsdl:output name="getGreetingsResponse">
- <wsdlsoap:body use="literal"/>
- </wsdl:output>
- </wsdl:operation>
-
- </wsdl:binding>
-
- <wsdl:service name="HelloWorldService">
- <wsdl:port binding="tns:HelloWorldSoapBinding" name="HelloWorldSoapPort">
- <wsdlsoap:address location=""/>
- </wsdl:port>
- </wsdl:service>
+<wsdl:definitions targetNamespace="http://helloworld"
+ xmlns:tns="http://helloworld"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="helloworld">
+
+ <wsdl:types>
+ <schema elementFormDefault="qualified"
+ targetNamespace="http://helloworld"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <element name="getGreetings">
+ <complexType>
+ <sequence>
+ <element name="name" type="xsd:string" />
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="getGreetingsResponse">
+ <complexType>
+ <sequence>
+ <element name="getGreetingsReturn"
+ type="xsd:string" />
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="getMultipleGreetings">
+ <complexType>
+ <sequence>
+ <element name="name" type="xsd:string"
+ maxOccurs="unbounded" />
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="getMultipleGreetingsResponse">
+ <complexType>
+ <sequence>
+ <element name="getGreetingsReturn"
+ type="xsd:string" maxOccurs="unbounded" />
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </wsdl:types>
+
+ <wsdl:message name="getGreetingsRequest">
+ <wsdl:part element="tns:getGreetings" name="parameters" />
+ </wsdl:message>
+
+ <wsdl:message name="getGreetingsResponse">
+ <wsdl:part element="tns:getGreetingsResponse" name="parameters" />
+ </wsdl:message>
+
+ <wsdl:message name="getMultipleGreetingsRequest">
+ <wsdl:part element="tns:getMultipleGreetings" name="parameters" />
+ </wsdl:message>
+
+ <wsdl:message name="getMultipleGreetingsResponse">
+ <wsdl:part element="tns:getMultipleGreetingsResponse"
+ name="parameters" />
+ </wsdl:message>
+
+ <wsdl:portType name="HelloWorld">
+ <wsdl:operation name="getGreetings">
+ <wsdl:input message="tns:getGreetingsRequest"
+ name="getGreetingsRequest" />
+ <wsdl:output message="tns:getGreetingsResponse"
+ name="getGreetingsResponse" />
+ </wsdl:operation>
+ <wsdl:operation name="getMultipleGreetings">
+ <wsdl:input message="tns:getMultipleGreetingsRequest"
+ name="getMultipleGreetingsRequest" />
+ <wsdl:output message="tns:getMultipleGreetingsResponse"
+ name="getMultipleGreetingsResponse" />
+ </wsdl:operation>
+
+ </wsdl:portType>
+
+ <wsdl:binding name="HelloWorldSoapBinding" type="tns:HelloWorld">
+ <wsdlsoap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="getGreetings">
+ <wsdlsoap:operation soapAction="" />
+ <wsdl:input name="getGreetingsRequest">
+ <wsdlsoap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="getGreetingsResponse">
+ <wsdlsoap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="getMultipleGreetings">
+ <wsdlsoap:operation soapAction="" />
+ <wsdl:input name="getMultipleGreetingsRequest">
+ <wsdlsoap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="getMultipleGreetingsResponse">
+ <wsdlsoap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="HelloWorldService">
+ <wsdl:port binding="tns:HelloWorldSoapBinding"
+ name="HelloWorldSoapPort">
+ <wsdlsoap:address location="" />
+ </wsdl:port>
+ </wsdl:service>
</wsdl:definitions>
Modified: incubator/tuscany/java/sca/itest/wsdlless/src/test/java/org/apache/tuscany/sca/itest/WSDLTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/wsdlless/src/test/java/org/apache/tuscany/sca/itest/WSDLTestCase.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/wsdlless/src/test/java/org/apache/tuscany/sca/itest/WSDLTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/wsdlless/src/test/java/org/apache/tuscany/sca/itest/WSDLTestCase.java Sat Oct 27 10:11:44 2007
@@ -42,6 +42,10 @@
public void testClient1a2a3a4a() {
HelloWorldService client = domain.getService(HelloWorldService.class, "Client1a2a3a4a");
assertEquals("Hi petra", client.getGreetings("petra"));
+ String[] greetings = client.getMultipleGreetings(new String[] {"John", "Smith"});
+ assertEquals(2, greetings.length);
+ assertEquals("Hi John", greetings[0]);
+ assertEquals("Hi Smith", greetings[1]);
}
@Test
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java Sat Oct 27 10:11:44 2007
@@ -25,6 +25,7 @@
import java.lang.reflect.Method;
import java.net.URI;
import java.net.URL;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -47,6 +48,7 @@
import javax.wsdl.extensions.schema.Schema;
import javax.wsdl.xml.WSDLLocator;
import javax.wsdl.xml.WSDLReader;
+import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
@@ -54,6 +56,7 @@
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
import org.apache.tuscany.sca.interfacedef.wsdl.DefaultWSDLFactory;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
@@ -82,13 +85,42 @@
*/
public class Java2WSDLHelper {
+ private static void register(Map<String, String> map, DataType type) {
+ if (type == null) {
+ return;
+ }
+ Package pkg = type.getPhysical().getPackage();
+ if (pkg != null) {
+ String pkgName = pkg.getName();
+ Object logical = type.getLogical();
+ if (logical instanceof XMLType) {
+ QName typeName = ((XMLType)logical).getTypeName();
+ if (typeName != null && !XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(typeName.getNamespaceURI())) {
+ map.put(pkgName, typeName.getNamespaceURI());
+ }
+ }
+ }
+ }
+
/**
* Create a WSDLInterfaceContract from a JavaInterfaceContract
*/
public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract,
WebServiceBinding wsBinding) {
JavaInterface iface = (JavaInterface)contract.getInterface();
- Definition def = Java2WSDLHelper.createDefinition(iface.getJavaClass(), wsBinding);
+
+ // Create a package2ns map
+ Map<String, String> pkg2nsMap = new HashMap<String, String>();
+ for (Operation op : iface.getOperations()) {
+ DataType<List<DataType>> inputType = op.getInputType();
+ for (DataType t : inputType.getLogical()) {
+ register(pkg2nsMap, t);
+ }
+ DataType outputType = op.getOutputType();
+ register(pkg2nsMap, outputType);
+ }
+
+ Definition def = createDefinition(pkg2nsMap, iface.getJavaClass(), wsBinding);
DefaultWSDLFactory wsdlFactory = new DefaultWSDLFactory();
@@ -113,7 +145,10 @@
javax.wsdl.Operation wsdlOp = portType.getOperation(op.getName(), null, null);
WSDLOperationIntrospectorImpl opx =
new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, wsdlDefinition, null, null);
+
+ wsdlInterface.getOperations().add(opx.getOperation());
+ /*
Operation clonedOp = (Operation)op.clone();
clonedOp.setDataBinding(null);
@@ -135,9 +170,8 @@
clonedOp.setWrapper(opx.getWrapper().getWrapperInfo());
wsdlInterface.getOperations().add(clonedOp);
+ */
}
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e);
} catch (InvalidWSDLException e) {
throw new RuntimeException(e);
}
@@ -234,12 +268,15 @@
/**
* Create a WSDL4J Definition object from a Java interface
*/
- protected static Definition createDefinition(Class<?> javaInterface, WebServiceBinding wsBinding) {
+ protected static Definition createDefinition(Map map, Class<?> javaInterface, WebServiceBinding wsBinding) {
String className = javaInterface.getName();
ClassLoader cl = javaInterface.getClassLoader();
ByteArrayOutputStream os = new ByteArrayOutputStream();
Java2WSDLBuilder builder = new Java2WSDLBuilder(os, className, cl);
+ if (map != null) {
+ builder.setPkg2nsMap(map);
+ }
try {
builder.generateWSDL();
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelperTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelperTestCase.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelperTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelperTestCase.java Sat Oct 27 10:11:44 2007
@@ -36,7 +36,7 @@
public class Java2WSDLHelperTestCase extends TestCase {
public void testCreateDefinition() {
- Definition definition = Java2WSDLHelper.createDefinition(HelloWorld.class, null);
+ Definition definition = Java2WSDLHelper.createDefinition(null, HelloWorld.class, null);
assertNotNull(definition);
Map portTypes = definition.getPortTypes();
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=589154&r1=589153&r2=589154&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 Sat Oct 27 10:11:44 2007
@@ -23,6 +23,7 @@
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.ModuleActivator;
import org.apache.tuscany.sca.core.databinding.processor.DataBindingJavaInterfaceProcessor;
+import org.apache.tuscany.sca.core.databinding.transformers.Array2ArrayTransformer;
import org.apache.tuscany.sca.core.databinding.transformers.Exception2ExceptionTransformer;
import org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer;
import org.apache.tuscany.sca.core.databinding.transformers.Output2OutputTransformer;
@@ -55,6 +56,10 @@
Exception2ExceptionTransformer exception2ExceptionTransformer = new Exception2ExceptionTransformer();
exception2ExceptionTransformer.setMediator(mediator);
transformers.addTransformer(exception2ExceptionTransformer);
+
+ Array2ArrayTransformer array2ArrayTransformer = new Array2ArrayTransformer();
+ array2ArrayTransformer.setMediator(mediator);
+ transformers.addTransformer(array2ArrayTransformer);
Group2GroupTransformer group2GroupTransformer = new Group2GroupTransformer();
group2GroupTransformer.setMediator(mediator);
Added: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Array2ArrayTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Array2ArrayTransformer.java?rev=589154&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Array2ArrayTransformer.java (added)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Array2ArrayTransformer.java Sat Oct 27 10:11:44 2007
@@ -0,0 +1,108 @@
+/*
+ * 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.core.databinding.transformers;
+
+import java.lang.reflect.Array;
+
+import org.apache.tuscany.sca.databinding.Mediator;
+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;
+import org.apache.tuscany.sca.interfacedef.DataType;
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * This is a special transformer to transform the output from one IDL to the
+ * other one
+ */
+public class Array2ArrayTransformer extends BaseTransformer<Object, Object> implements PullTransformer<Object, Object> {
+
+ protected Mediator mediator;
+
+ public Array2ArrayTransformer() {
+ super();
+ }
+
+ /**
+ * @param mediator the mediator to set
+ */
+ @Reference
+ public void setMediator(Mediator mediator) {
+ this.mediator = mediator;
+ }
+
+ @Override
+ public String getSourceDataBinding() {
+ return "java:array";
+ }
+
+ @Override
+ public String getTargetDataBinding() {
+ return "java:array";
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.databinding.impl.BaseTransformer#getSourceType()
+ */
+ @Override
+ protected Class getSourceType() {
+ return Object.class;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.databinding.impl.BaseTransformer#getTargetType()
+ */
+ @Override
+ protected Class getTargetType() {
+ return Object.class;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.databinding.Transformer#getWeight()
+ */
+ @Override
+ public int getWeight() {
+ return 10;
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object transform(Object array, TransformationContext context) {
+ try {
+ if (array == null) {
+ return null;
+ }
+ DataType<DataType> sourceType = context.getSourceDataType();
+ DataType<DataType> targetType = context.getTargetDataType();
+ int length = Array.getLength(array);
+ Object targetArray = Array.newInstance(targetType.getPhysical().getComponentType(), length);
+ for (int i = 0; i < length; i++) {
+ Object sourceItem = Array.get(array, i);
+ Object targetItem =
+ mediator.mediate(sourceItem, sourceType.getLogical(), targetType.getLogical(), context
+ .getMetadata());
+ Array.set(targetArray, i, targetItem);
+ }
+ return targetArray;
+ } catch (Exception e) {
+ throw new TransformationException(e);
+ }
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Array2ArrayTransformer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Array2ArrayTransformer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Exception2ExceptionTransformer.java Sat Oct 27 10:11:44 2007
@@ -24,17 +24,14 @@
import org.apache.tuscany.sca.databinding.Mediator;
import org.apache.tuscany.sca.databinding.PullTransformer;
import org.apache.tuscany.sca.databinding.TransformationContext;
-import org.apache.tuscany.sca.databinding.Transformer;
import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Service;
/**
* This is a special transformer to transform the exception from one IDL to the
* other one
*/
-@Service(Transformer.class)
public class Exception2ExceptionTransformer extends BaseTransformer<Object[], Object[]> implements
PullTransformer<Exception, Exception> {
Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java Sat Oct 27 10:11:44 2007
@@ -27,7 +27,6 @@
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.Transformer;
import org.apache.tuscany.sca.databinding.WrapperHandler;
import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
import org.apache.tuscany.sca.interfacedef.DataType;
@@ -36,13 +35,11 @@
import org.apache.tuscany.sca.interfacedef.util.WrapperInfo;
import org.apache.tuscany.sca.interfacedef.util.XMLType;
import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Service;
/**
* This is a special transformer to transform the input from one IDL to the
* other one
*/
-@Service(Transformer.class)
public class Input2InputTransformer extends BaseTransformer<Object[], Object[]> implements
PullTransformer<Object[], Object[]> {
private static final Logger logger = Logger.getLogger(Input2InputTransformer.class.getName());
Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java Sat Oct 27 10:11:44 2007
@@ -25,7 +25,6 @@
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.Transformer;
import org.apache.tuscany.sca.databinding.WrapperHandler;
import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
import org.apache.tuscany.sca.interfacedef.DataType;
@@ -34,13 +33,11 @@
import org.apache.tuscany.sca.interfacedef.util.WrapperInfo;
import org.apache.tuscany.sca.interfacedef.util.XMLType;
import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Service;
/**
* This is a special transformer to transform the output from one IDL to the
* other one
*/
-@Service(Transformer.class)
public class Output2OutputTransformer extends BaseTransformer<Object, Object> implements
PullTransformer<Object, Object> {
Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/wire/DataTransformationInterceptor.java Sat Oct 27 10:11:44 2007
@@ -50,7 +50,7 @@
private Operation sourceOperation;
private Operation targetOperation;
-
+ private RuntimeWire wire;
private Mediator mediator;
public DataTransformationInterceptor(RuntimeWire wire,
@@ -61,6 +61,7 @@
this.sourceOperation = sourceOperation;
this.targetOperation = targetOperation;
this.mediator = mediator;
+ this.wire = wire;
}
public Invoker getNext() {
@@ -170,6 +171,7 @@
Map<String, Object> metadata = new HashMap<String, Object>();
metadata.put("source.operation", isResponse ? targetOperation : sourceOperation);
metadata.put("target.operation", isResponse ? sourceOperation : targetOperation);
+ metadata.put("wire", wire);
return mediator.mediate(source, sourceType, targetType, metadata);
}
@@ -239,7 +241,7 @@
Map<String, Object> metadata = new HashMap<String, Object>();
metadata.put("source.operation", targetOperation);
metadata.put("target.operation", sourceOperation);
-
+ metadata.put("wire", wire);
DataType<DataType> eSourceDataType =
new DataTypeImpl<DataType>("idl:fault", sourceExType.getPhysical(), sourceType);
DataType<DataType> eTargetDataType =
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=589154&r1=589153&r2=589154&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 Sat Oct 27 10:11:44 2007
@@ -25,6 +25,7 @@
import java.util.List;
import java.util.Set;
+import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMAbstractFactory;
@@ -58,12 +59,28 @@
}
public void setChild(OMElement wrapper, int i, ElementInfo childElement, Object value) {
- OMElement element = (OMElement)value;
+ if (childElement.isMany()) {
+ Object[] elements = (Object[])value;
+ if (value != null) {
+ for (Object e : elements) {
+ addChild(wrapper, childElement, (OMElement)e);
+ }
+ }
+ } else {
+ OMElement element = (OMElement)value;
+ addChild(wrapper, childElement, element);
+ }
+ }
+
+ private void addChild(OMElement wrapper, ElementInfo childElement, OMElement element) {
QName elementName = childElement.getQName();
- OMNamespace namespace = factory.createOMNamespace(elementName.getNamespaceURI(), elementName.getPrefix());
- element.setNamespace(namespace);
- element.setLocalName(childElement.getQName().getLocalPart());
- wrapper.addChild((OMElement)value);
+ // Make it a bit tolerating of element QName
+ if (!elementName.equals(element.getQName())) {
+ OMNamespace namespace = factory.createOMNamespace(elementName.getNamespaceURI(), elementName.getPrefix());
+ element.setNamespace(namespace);
+ element.setLocalName(childElement.getQName().getLocalPart());
+ }
+ wrapper.addChild(element);
}
public List getChildren(OMElement wrapper, List<ElementInfo> childElements, TransformationContext context) {
@@ -108,39 +125,92 @@
private static final QName XSI_TYPE_QNAME = new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi");
- public Object getChild(OMElement wrapper, ElementInfo childElement, int index, TransformationContext context) {
- int pos = 0;
- String wrapperNS = wrapper.getQName().getNamespaceURI();
+ private List<List<OMElement>> getElements(OMElement wrapper) {
+ List<List<OMElement>> elements = new ArrayList<List<OMElement>>();
+ List<OMElement> current = new ArrayList<OMElement>();
+ elements.add(current);
+ boolean first = true;
+ QName last = null;
+
for (Iterator i = wrapper.getChildElements(); i.hasNext();) {
- OMElement e = (OMElement)i.next();
- if (pos == index) {
- TypeInfo type = childElement.getType();
- if (!childElement.getQName().equals(e.getQName()) && type != null) {
- OMAttribute attr = e.getAttribute(XSI_TYPE_QNAME);
- if (attr == null) {
- String typeNS = type.getQName().getNamespaceURI();
- if (wrapperNS != null) {
- // FIXME: [rfeng] Workaround for TUSCANY-1713, assuming the type
- // namespace is the same as the wrapper
- typeNS = wrapperNS;
- }
- OMNamespace ns = e.getOMFactory().createOMNamespace(typeNS, "_typens_");
- e.declareNamespace(ns);
- OMNamespace xsiNS =
- e.getOMFactory().createOMNamespace(XSI_TYPE_QNAME.getNamespaceURI(),
- XSI_TYPE_QNAME.getPrefix());
- e.declareNamespace(xsiNS);
- attr =
- e.getOMFactory().createOMAttribute("type",
- xsiNS,
- "_typens_:" + type.getQName().getLocalPart());
- e.addAttribute(attr);
- }
+ OMElement element = (OMElement)i.next();
+ if (first || element.getQName().equals(last)) {
+ current.add(element);
+ last = element.getQName();
+ } else {
+ current = new ArrayList<OMElement>();
+ elements.add(current);
+ current.add(element);
+ last = element.getQName();
+ }
+ first = false;
+ }
+ return elements;
+ }
+
+ public Object getChild(OMElement wrapper, ElementInfo childElement, int index, TransformationContext context) {
+ Iterator children = wrapper.getChildrenWithName(childElement.getQName());
+ if (!children.hasNext()) {
+ // No name match, try by index
+ List<List<OMElement>> list = getElements(wrapper);
+ List<OMElement> elements = list.get(index);
+ if (!childElement.isMany()) {
+ return elements.isEmpty() ? null : attachXSIType(childElement, elements.get(0));
+ } else {
+ Object[] array = elements.toArray();
+ for (Object item : array) {
+ attachXSIType(childElement, (OMElement)item);
+ }
+ return array;
+ }
+ }
+ if (!childElement.isMany()) {
+ if (children.hasNext()) {
+ OMElement child = (OMElement)children.next();
+ attachXSIType(childElement, child);
+ return child;
+ } else {
+ return null;
+ }
+ } else {
+ List<OMElement> elements = new ArrayList<OMElement>();
+ for (; children.hasNext();) {
+ OMElement child = (OMElement)children.next();
+ attachXSIType(childElement, child);
+ elements.add(child);
+ }
+ return elements.toArray();
+ }
+ }
+
+ /**
+ * Create xis:type if required
+ * @param childElement
+ * @param element
+ * @return
+ */
+ private OMElement attachXSIType(ElementInfo childElement, OMElement element) {
+ TypeInfo type = childElement.getType();
+ if (type != null) {
+ OMAttribute attr = element.getAttribute(XSI_TYPE_QNAME);
+ if (attr == null) {
+ String typeNS = type.getQName().getNamespaceURI();
+ if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(typeNS)) {
+ return element;
}
- return e;
+ OMNamespace ns = element.getOMFactory().createOMNamespace(typeNS, "_typens_");
+ element.declareNamespace(ns);
+ OMNamespace xsiNS =
+ element.getOMFactory().createOMNamespace(XSI_TYPE_QNAME.getNamespaceURI(),
+ XSI_TYPE_QNAME.getPrefix());
+ element.declareNamespace(xsiNS);
+ attr =
+ element.getOMFactory().createOMAttribute("type",
+ xsiNS,
+ "_typens_:" + type.getQName().getLocalPart());
+ element.addAttribute(attr);
}
- pos++;
}
- return null;
+ return element;
}
}
Modified: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java Sat Oct 27 10:11:44 2007
@@ -70,7 +70,9 @@
}
}
}
- dataType.setLogical(XMLType.UNKNOWN);
+ if (dataType.getLogical() == null) {
+ dataType.setLogical(XMLType.UNKNOWN);
+ }
dataType.setDataBinding(getName());
return true;
}
Modified: incubator/tuscany/java/sca/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer (original)
+++ incubator/tuscany/java/sca/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer Sat Oct 27 10:11:44 2007
@@ -18,6 +18,6 @@
# Implementation classes for the transformers
org.apache.tuscany.sca.databinding.json.JSON2XMLStreamReader;source=org.codehaus.jettison.json.JSONObject,target=javax.xml.stream.XMLStreamReader,weight=500
org.apache.tuscany.sca.databinding.json.XMLStreamReader2JSON;source=javax.xml.stream.XMLStreamReader,target=org.codehaus.jettison.json.JSONObject,weight=500
-org.apache.tuscany.sca.databinding.json.JavaBean2JSON;source=java.lang.Object,target=org.codehaus.jettison.json.JSONObject,weight=80000
+org.apache.tuscany.sca.databinding.json.JavaBean2JSON;source=java:complexType,target=org.codehaus.jettison.json.JSONObject,weight=80000
org.apache.tuscany.sca.databinding.json.JavaBean2JSON;source=java:simpleType,target=org.codehaus.jettison.json.JSONObject,weight=80000
org.apache.tuscany.sca.databinding.json.axiom.JSON2OMElement;source=org.codehaus.jettison.json.JSONObject,target=org.apache.axiom.om.OMElement,weight=500
Modified: incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Object2ValueTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Object2ValueTransformer.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Object2ValueTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Object2ValueTransformer.java Sat Oct 27 10:11:44 2007
@@ -24,6 +24,7 @@
import org.apache.tuscany.sca.databinding.PullTransformer;
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
+import org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding;
/**
* Transforms generic java objects to Value objects needed by Saxon parser
@@ -39,6 +40,11 @@
@Override
protected Class getTargetType() {
return Value.class;
+ }
+
+ @Override
+ public String getSourceDataBinding() {
+ return JavaBeansDataBinding.NAME;
}
@Override
Modified: incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SaxonNodeDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SaxonNodeDataBinding.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SaxonNodeDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SaxonNodeDataBinding.java Sat Oct 27 10:11:44 2007
@@ -24,7 +24,6 @@
import org.apache.tuscany.sca.databinding.impl.BaseDataBinding;
import org.apache.tuscany.sca.interfacedef.DataType;
-import org.apache.tuscany.sca.interfacedef.util.XMLType;
/**
* Represents data binding for parameters of type NodeInfo
@@ -44,7 +43,7 @@
@Override
public boolean introspect(DataType type, Annotation[] annotations) {
if (super.introspect(type, annotations)) {
- type.setLogical(XMLType.UNKNOWN);
+ // type.setLogical(XMLType.UNKNOWN);
return true;
} else {
return false;
Modified: incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SaxonValueDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SaxonValueDataBinding.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SaxonValueDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SaxonValueDataBinding.java Sat Oct 27 10:11:44 2007
@@ -24,7 +24,6 @@
import org.apache.tuscany.sca.databinding.impl.BaseDataBinding;
import org.apache.tuscany.sca.interfacedef.DataType;
-import org.apache.tuscany.sca.interfacedef.util.XMLType;
/**
* Represents data binding for parameters of type Value
@@ -43,7 +42,7 @@
@Override
public boolean introspect(DataType type, Annotation[] annotations) {
if (super.introspect(type, annotations)) {
- type.setLogical(XMLType.UNKNOWN);
+ // type.setLogical(XMLType.UNKNOWN);
return true;
} else {
return false;
Modified: incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java Sat Oct 27 10:11:44 2007
@@ -25,6 +25,7 @@
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.databinding.TransformationException;
import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
+import org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding;
/**
* Transforms Value objects to generic java objects
@@ -50,6 +51,11 @@
@Override
protected Class getTargetType() {
return Object.class;
+ }
+
+ @Override
+ public String getTargetDataBinding() {
+ return JavaBeansDataBinding.NAME;
}
@Override
Modified: incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer (original)
+++ incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer Sat Oct 27 10:11:44 2007
@@ -16,12 +16,11 @@
# under the License.
# Implementation classes for the transformers
-# Temporarily disable the NodeInfo <--> Node transformers
org.apache.tuscany.sca.databinding.saxon.Node2NodeInfoTransformer;source=org.w3c.dom.Node,target=net.sf.saxon.om.NodeInfo,weight=2000
org.apache.tuscany.sca.databinding.saxon.NodeInfo2NodeTransformer;source=net.sf.saxon.om.NodeInfo,target=org.w3c.dom.Node,weight=2000
-org.apache.tuscany.sca.databinding.saxon.Object2ValueTransformer;source=java.lang.Object,target=net.sf.saxon.value.Value,weight=10000
-org.apache.tuscany.sca.databinding.saxon.Value2ObjectTransformer;source=net.sf.saxon.value.Value,target=java.lang.Object,weight=10000
-org.apache.tuscany.sca.databinding.saxon.SimpleType2ValueTransformer;source=java:simpleType,target=net.sf.saxon.value.Value,weight=10000
-org.apache.tuscany.sca.databinding.saxon.Value2SimpleTypeTransformer;source=net.sf.saxon.value.Value,target=java:simpleType,weight=10000
-org.apache.tuscany.sca.databinding.saxon.NodeInfo2DataObjectTransformer;source=net.sf.saxon.om.NodeInfo,target=commonj.sdo.DataObject,weight=500
-org.apache.tuscany.sca.databinding.saxon.DataObject2NodeInfoTransformer;source=commonj.sdo.DataObject,target=net.sf.saxon.om.NodeInfo,weight=500
+org.apache.tuscany.sca.databinding.saxon.Object2ValueTransformer;source=java:complexType,target=net.sf.saxon.value.Value,weight=80000
+org.apache.tuscany.sca.databinding.saxon.Value2ObjectTransformer;source=net.sf.saxon.value.Value,target=java:complexType,weight=80000
+org.apache.tuscany.sca.databinding.saxon.SimpleType2ValueTransformer;source=java:simpleType,target=net.sf.saxon.value.Value,weight=80000
+org.apache.tuscany.sca.databinding.saxon.Value2SimpleTypeTransformer;source=net.sf.saxon.value.Value,target=java:simpleType,weight=80000
+org.apache.tuscany.sca.databinding.saxon.NodeInfo2DataObjectTransformer;source=net.sf.saxon.om.NodeInfo,target=commonj.sdo.DataObject,weight=1000
+org.apache.tuscany.sca.databinding.saxon.DataObject2NodeInfoTransformer;source=commonj.sdo.DataObject,target=net.sf.saxon.om.NodeInfo,weight=1000
Modified: incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2Node.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2Node.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2Node.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2Node.java Sat Oct 27 10:11:44 2007
@@ -41,7 +41,7 @@
try {
HelperContext helperContext = SDOContextHelper.getHelperContext(context);
XMLHelper xmlHelper = helperContext.getXMLHelper();
- QName elementName = SDOContextHelper.getElement(context.getSourceDataType());
+ QName elementName = SDOContextHelper.getElement(context);
Document doc = DOMHelper.newDocument();
DOMResult result = new DOMResult(doc);
XMLDocument xmlDoc = xmlHelper.createDocument(source, elementName.getNamespaceURI(), elementName.getLocalPart());
Modified: incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2String.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2String.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2String.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2String.java Sat Oct 27 10:11:44 2007
@@ -36,7 +36,7 @@
try {
HelperContext helperContext = SDOContextHelper.getHelperContext(context);
XMLHelper xmlHelper = helperContext.getXMLHelper();
- QName elementName = SDOContextHelper.getElement(context.getSourceDataType());
+ QName elementName = SDOContextHelper.getElement(context);
return xmlHelper.save(source, elementName.getNamespaceURI(), elementName.getLocalPart());
} catch (Exception e) {
throw new TransformationException(e);
Modified: incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2XMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2XMLStreamReader.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2XMLStreamReader.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2XMLStreamReader.java Sat Oct 27 10:11:44 2007
@@ -41,7 +41,7 @@
try {
HelperContext helperContext = SDOContextHelper.getHelperContext(context);
XMLStreamHelper streamHelper = SDOUtil.createXMLStreamHelper(helperContext);
- QName elementName = SDOContextHelper.getElement(context.getSourceDataType());
+ QName elementName = SDOContextHelper.getElement(context);
XMLHelper xmlHelper = helperContext.getXMLHelper();
XMLDocument document =
xmlHelper.createDocument(source, elementName.getNamespaceURI(), elementName.getLocalPart());
Modified: incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java Sat Oct 27 10:11:44 2007
@@ -139,9 +139,13 @@
return HelperProvider.getDefaultContext();
}
- public static QName getElement(DataType<?> dataType) {
+ public static QName getElement(TransformationContext context) {
+ if (context == null) {
+ return SDODataBinding.ROOT_ELEMENT;
+ }
+ DataType<?> dataType = context.getTargetDataType();
Object logical = dataType.getLogical();
- QName elementName = SDODataBinding.ROOT_ELEMENT;
+ QName elementName = null;
if (logical instanceof XMLType) {
XMLType xmlType = (XMLType)logical;
QName element = xmlType.getElementName();
@@ -149,6 +153,22 @@
elementName = element;
}
}
- return elementName;
+ if (elementName == null) {
+ // Try source type
+ dataType = context.getSourceDataType();
+ logical = dataType.getLogical();
+ if (logical instanceof XMLType) {
+ XMLType xmlType = (XMLType)logical;
+ QName element = xmlType.getElementName();
+ if (element != null) {
+ elementName = element;
+ }
+ }
+ }
+ if (elementName != null) {
+ return elementName;
+ } else {
+ return SDODataBinding.ROOT_ELEMENT;
+ }
}
}
Modified: incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java Sat Oct 27 10:11:44 2007
@@ -45,7 +45,7 @@
public class SDODataBinding extends BaseDataBinding {
public static final String NAME = DataObject.class.getName();
public static final String[] ALIASES = new String[] {"sdo"};
-
+
public static final String ROOT_NAMESPACE = "commonj.sdo";
public static final QName ROOT_ELEMENT = new QName(ROOT_NAMESPACE, "dataObject");
@@ -64,7 +64,9 @@
if (DataObject.class.isAssignableFrom(javaType)) {
// Dynamic SDO
dataType.setDataBinding(getName());
- dataType.setLogical(XMLType.UNKNOWN);
+ if (dataType.getLogical() == null) {
+ dataType.setLogical(XMLType.UNKNOWN);
+ }
return true;
}
// FIXME: We need to access HelperContext
@@ -80,7 +82,12 @@
String name = context.getXSDHelper().getLocalName(type);
QName xmlType = new QName(namespace, name);
dataType.setDataBinding(getName());
- dataType.setLogical(new XMLType(null, xmlType));
+ QName elementName = null;
+ Object logical = dataType.getLogical();
+ if (logical instanceof XMLType) {
+ elementName = ((XMLType)logical).getElementName();
+ }
+ dataType.setLogical(new XMLType(elementName, xmlType));
return true;
}
Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java Sat Oct 27 10:11:44 2007
@@ -22,6 +22,7 @@
import java.lang.annotation.Annotation;
import java.lang.ref.WeakReference;
import java.lang.reflect.Constructor;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -40,7 +41,8 @@
*/
public class DefaultDataBindingExtensionPoint implements DataBindingExtensionPoint {
private final Map<String, DataBinding> bindings = new HashMap<String, DataBinding>();
- private static final Logger logger = Logger.getLogger(DefaultTransformerExtensionPoint.class.getName());
+ private final List<DataBinding> databindings = new ArrayList<DataBinding>();
+ private static final Logger logger = Logger.getLogger(DefaultTransformerExtensionPoint.class.getName());
private boolean loadedDataBindings;
public DefaultDataBindingExtensionPoint() {
@@ -59,17 +61,17 @@
}
public void addDataBinding(DataBinding dataBinding) {
- if (logger.isLoggable(Level.FINE)) {
- String className = dataBinding.getClass().getName();
- boolean lazy = false;
- if (dataBinding instanceof LazyDataBinding) {
- className = ((LazyDataBinding) dataBinding).className;
- lazy = true;
- }
- logger.fine("Adding databinding: " + className + ";type="
- + dataBinding.getName() + ",lazy=" + lazy);
- }
- bindings.put(dataBinding.getName().toLowerCase(), dataBinding);
+ if (logger.isLoggable(Level.FINE)) {
+ String className = dataBinding.getClass().getName();
+ boolean lazy = false;
+ if (dataBinding instanceof LazyDataBinding) {
+ className = ((LazyDataBinding)dataBinding).className;
+ lazy = true;
+ }
+ logger.fine("Adding databinding: " + className + ";type=" + dataBinding.getName() + ",lazy=" + lazy);
+ }
+ databindings.add(dataBinding);
+ bindings.put(dataBinding.getName().toLowerCase(), dataBinding);
String[] aliases = dataBinding.getAliases();
if (aliases != null) {
for (String alias : aliases) {
@@ -84,6 +86,7 @@
}
DataBinding dataBinding = bindings.remove(id.toLowerCase());
if (dataBinding != null) {
+ databindings.remove(dataBinding);
String[] aliases = dataBinding.getAliases();
if (aliases != null) {
for (String alias : aliases) {
@@ -206,12 +209,25 @@
return introspectType(dataType, annotations, false);
}
+ private boolean introspectArray(DataType dataType, Annotation[] annotations) {
+ Class physical = dataType.getPhysical();
+ if (!physical.isArray()) {
+ return false;
+ }
+ Class componentType = physical.getComponentType();
+ DataType logical = new DataTypeImpl(componentType, dataType.getLogical());
+ introspectType(logical, annotations);
+ dataType.setDataBinding("java:array");
+ dataType.setLogical(logical);
+ return true;
+ }
+
//
// Leverage the DataBinding ExceptionHandler to calculate the DataType of an exception DataType
//
public boolean introspectType(DataType dataType, Annotation[] annotations, boolean isException) {
loadDataBindings();
- for (DataBinding binding : bindings.values()) {
+ for (DataBinding binding : databindings) {
// don't introspect for JavaBeansDatabinding as all javatypes will
// anyways match to its basetype
// which is java.lang.Object. Default to this only if no databinding
@@ -243,8 +259,13 @@
if (physical == Object.class) {
return false;
}
- dataType.setDataBinding(JavaBeansDataBinding.NAME);
- return false;
+ if (dataType.getPhysical().isArray()) {
+ introspectArray(dataType, annotations);
+ return true;
+ } else {
+ dataType.setDataBinding(JavaBeansDataBinding.NAME);
+ return false;
+ }
}
public DataType introspectType(Object value) {
Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java Sat Oct 27 10:11:44 2007
@@ -34,41 +34,48 @@
* @version $Rev$ $Date$
*/
public class DefaultTransformerExtensionPoint implements TransformerExtensionPoint {
- private static final Logger logger = Logger.getLogger(DefaultTransformerExtensionPoint.class.getName());
+ private static final Logger logger = Logger.getLogger(DefaultTransformerExtensionPoint.class.getName());
private boolean loadedTransformers;
-
+
private final DirectedGraph<Object, Transformer> graph = new DirectedGraph<Object, Transformer>();
-
+
public DefaultTransformerExtensionPoint() {
}
-
+
public void addTransformer(String sourceType, String resultType, int weight, Transformer transformer) {
- if (logger.isLoggable(Level.FINE)) {
- String className = transformer.getClass().getName();
- boolean lazy = false;
- boolean pull = (transformer instanceof PullTransformer);
- if (transformer instanceof LazyPullTransformer) {
- className = ((LazyPullTransformer) transformer).className;
- lazy = true;
- }
- if (transformer instanceof LazyPushTransformer) {
- className = ((LazyPushTransformer) transformer).className;
- lazy = true;
- }
-
- logger.fine("Adding transformer: " + className + ";source="
- + sourceType + ",target=" + resultType + ",weight="
- + weight + ",type=" + (pull ? "pull" : "push") + ",lazy="
- + lazy);
- }
+ if (logger.isLoggable(Level.FINE)) {
+ String className = transformer.getClass().getName();
+ boolean lazy = false;
+ boolean pull = (transformer instanceof PullTransformer);
+ if (transformer instanceof LazyPullTransformer) {
+ className = ((LazyPullTransformer)transformer).className;
+ lazy = true;
+ }
+ if (transformer instanceof LazyPushTransformer) {
+ className = ((LazyPushTransformer)transformer).className;
+ lazy = true;
+ }
+
+ logger.fine("Adding transformer: " + className
+ + ";source="
+ + sourceType
+ + ",target="
+ + resultType
+ + ",weight="
+ + weight
+ + ",type="
+ + (pull ? "pull" : "push")
+ + ",lazy="
+ + lazy);
+ }
graph.addEdge(sourceType, resultType, transformer, weight);
}
public void addTransformer(Transformer transformer) {
addTransformer(transformer.getSourceDataBinding(),
- transformer.getTargetDataBinding(),
- transformer.getWeight(),
- transformer);
+ transformer.getTargetDataBinding(),
+ transformer.getWeight(),
+ transformer);
}
public boolean removeTransformer(String sourceType, String resultType) {
@@ -77,7 +84,7 @@
public Transformer getTransformer(String sourceType, String resultType) {
loadTransformers();
-
+
DirectedGraph<Object, Transformer>.Edge edge = graph.getEdge(sourceType, resultType);
return (edge == null) ? null : edge.getValue();
}
@@ -104,21 +111,22 @@
// Get the transformer service declarations
ClassLoader classLoader = transformerClass.getClassLoader();
- List<String> transformerDeclarations;
+ List<String> transformerDeclarations;
try {
- transformerDeclarations = ServiceConfigurationUtil.getServiceClassNames(classLoader, transformerClass.getName());
+ transformerDeclarations =
+ ServiceConfigurationUtil.getServiceClassNames(classLoader, transformerClass.getName());
} catch (IOException e) {
throw new IllegalStateException(e);
}
-
+
// Load transformers
- for (String transformerDeclaration: transformerDeclarations) {
+ for (String transformerDeclaration : transformerDeclarations) {
Map<String, String> attributes = ServiceConfigurationUtil.parseServiceDeclaration(transformerDeclaration);
String className = attributes.get("class");
String source = attributes.get("source");
String target = attributes.get("target");
int weight = Integer.valueOf(attributes.get("weight"));
-
+
// Create a transformer wrapper and register it
Transformer transformer;
if (transformerClass == PullTransformer.class) {
@@ -129,7 +137,7 @@
addTransformer(transformer);
}
}
-
+
/**
* A transformer facade allowing transformers to be lazily loaded
* and initialized.
@@ -182,7 +190,7 @@
public int getWeight() {
return weight;
}
-
+
public Object transform(Object source, TransformationContext context) {
return getTransformer().transform(source, context);
}
@@ -258,22 +266,27 @@
}
}
-
//FIXME The following methods should be on a different class from
// extension point
-
+
public List<Transformer> getTransformerChain(String sourceType, String resultType) {
loadTransformers();
-
+
String source = sourceType;
String result = resultType;
List<Transformer> transformers = new ArrayList<Transformer>();
- DirectedGraph<Object, Transformer>.Path path = graph.getShortestPath(source, result);
- if (path == null) {
- return null;
- }
- for (DirectedGraph<Object, Transformer>.Edge edge : path.getEdges()) {
- transformers.add(edge.getValue());
+ // First check if there is a direct path, if yes, use it regardless of the weight
+ DirectedGraph<Object, Transformer>.Edge link = graph.getEdge(sourceType, resultType);
+ if (link != null) {
+ transformers.add(link.getValue());
+ } else {
+ DirectedGraph<Object, Transformer>.Path path = graph.getShortestPath(source, result);
+ if (path == null) {
+ return null;
+ }
+ for (DirectedGraph<Object, Transformer>.Edge edge : path.getEdges()) {
+ transformers.add(edge.getValue());
+ }
}
return transformers;
}
@@ -281,7 +294,7 @@
@Override
public String toString() {
loadTransformers();
-
+
return graph.toString();
}
Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java Sat Oct 27 10:11:44 2007
@@ -26,6 +26,7 @@
import org.apache.tuscany.sca.databinding.WrapperHandler;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
/**
* Base Implementation of DataBinding
@@ -81,7 +82,9 @@
Class cls = type.getPhysical();
if (baseType != null && baseType.isAssignableFrom(cls)) {
type.setDataBinding(getName());
- type.setLogical(baseType);
+ if (type.getLogical() == null) {
+ type.setLogical(XMLType.UNKNOWN);
+ }
return true;
}
return false;
Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/GroupDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/GroupDataBinding.java?rev=589154&r1=589153&r2=589154&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/GroupDataBinding.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/GroupDataBinding.java Sat Oct 27 10:11:44 2007
@@ -24,6 +24,7 @@
import java.lang.reflect.Type;
import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
/**
* The base class for a special databinding which represents a group of other databindings
@@ -60,13 +61,18 @@
for (Class<?> c : markerTypes) {
if (isTypeOf(c, cls)) {
type.setDataBinding(getDataBinding(c));
- type.setLogical(getLogical(cls, annotations));
+ Object logical = getLogical(cls, annotations);
+ if (logical != null) {
+ type.setLogical(getLogical(cls, annotations));
+ } else {
+ type.setLogical(XMLType.UNKNOWN);
+ }
return true;
}
}
return false;
}
-
+
/**
* Test if the given type is a subtype of the base type
* @param markerType
@@ -76,7 +82,7 @@
protected boolean isTypeOf(Class<?> markerType, Class<?> type) {
return markerType.isAssignableFrom(type);
}
-
+
/**
* Derive the databinding name from a base class
* @param baseType
@@ -85,7 +91,7 @@
protected String getDataBinding(Class<?> baseType) {
return baseType.getName();
}
-
+
/**
* Get the logical type
* @param type The java type
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org