Author: tli
Date: Thu Aug 31 21:54:02 2006
New Revision: 439178
URL: http://svn.apache.org/viewvc?rev=439178&view=rev
Log:
Add unit test for JAXBExtensionHelpter, fix a bug in JAXBExtensionHelper, Add
xml binding extension for wsdl4j
Added:
incubator/cxf/trunk/api/src/main/resources/schemas/wsdl/wsdl4jext.xsd
(with props)
incubator/cxf/trunk/api/src/test/java/org/apache/cxf/wsdl/
incubator/cxf/trunk/api/src/test/java/org/apache/cxf/wsdl/JAXBExtensionHelperTest.java
(with props)
incubator/cxf/trunk/api/src/test/resources/wsdl/
incubator/cxf/trunk/api/src/test/resources/wsdl/hello_world_xml_bare.wsdl
(with props)
Modified:
incubator/cxf/trunk/api/pom.xml
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java
Modified: incubator/cxf/trunk/api/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/pom.xml?rev=439178&r1=439177&r2=439178&view=diff
==============================================================================
--- incubator/cxf/trunk/api/pom.xml (original)
+++ incubator/cxf/trunk/api/pom.xml Thu Aug 31 21:54:02 2006
@@ -91,6 +91,10 @@
</dependencies>
</xsdOption>
<xsdOption>
+
<xsd>${basedir}/src/main/resources/schemas/wsdl/wsdl4jext.xsd</xsd>
+
<packagename>org.apache.cxf.bindings.xformat</packagename>
+ </xsdOption>
+ <xsdOption>
<xsd>${basedir}/src/main/resources/schemas/wsdl/ws-addr.xsd</xsd>
<packagename>org.apache.cxf.ws.addressing</packagename>
</xsdOption>
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java?rev=439178&r1=439177&r2=439178&view=diff
==============================================================================
---
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java
(original)
+++
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/JAXBExtensionHelper.java
Thu Aug 31 21:54:02 2006
@@ -86,9 +86,16 @@
QName elementType = new QName(elementDecl.namespace(),
elementDecl.name());
registry.registerDeserializer(parentType, elementType,
helper);
registry.registerSerializer(parentType, elementType,
helper);
+ registry.mapExtensionTypes(parentType, elementType,
cls);
+ registry.createExtension(parentType, elementType);
}
}
- }
+ }
+
+ } catch (WSDLException we) {
+ // TODO
+ we.printStackTrace();
+
} catch (ClassNotFoundException ex) {
// TODO
ex.printStackTrace();
Added: incubator/cxf/trunk/api/src/main/resources/schemas/wsdl/wsdl4jext.xsd
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/resources/schemas/wsdl/wsdl4jext.xsd?rev=439178&view=auto
==============================================================================
--- incubator/cxf/trunk/api/src/main/resources/schemas/wsdl/wsdl4jext.xsd
(added)
+++ incubator/cxf/trunk/api/src/main/resources/schemas/wsdl/wsdl4jext.xsd Thu
Aug 31 21:54:02 2006
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://cxf.apache.org/bindings/xformat"
+ targetNamespace="http://cxf.apache.org/bindings/xformat"
+ elementFormDefault="qualified"
+ xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0">
+
+ <xs:attribute name="required" type="xs:boolean" />
+
+ <xs:complexType name="tExtensibilityElement" abstract="true">
+ <xs:annotation>
+ <xs:appinfo>
+ <jaxb:class
+
implClass="org.apache.cxf.wsdl.TExtensibilityElementImpl" />
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:attribute ref="tns:required" use="optional" />
+ </xs:complexType>
+
+
+ <xs:complexType name="XMLBindingMessageFormat">
+ <xs:complexContent>
+ <xs:extension base="tns:tExtensibilityElement">
+ <xs:sequence />
+ <xs:attribute name="rootNode" type="xs:string"
+ use="required" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="body" type="tns:XMLBindingMessageFormat" />
+
+</xs:schema>
Propchange:
incubator/cxf/trunk/api/src/main/resources/schemas/wsdl/wsdl4jext.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added:
incubator/cxf/trunk/api/src/test/java/org/apache/cxf/wsdl/JAXBExtensionHelperTest.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/test/java/org/apache/cxf/wsdl/JAXBExtensionHelperTest.java?rev=439178&view=auto
==============================================================================
---
incubator/cxf/trunk/api/src/test/java/org/apache/cxf/wsdl/JAXBExtensionHelperTest.java
(added)
+++
incubator/cxf/trunk/api/src/test/java/org/apache/cxf/wsdl/JAXBExtensionHelperTest.java
Thu Aug 31 21:54:02 2006
@@ -0,0 +1,97 @@
+/**
+ * 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.cxf.wsdl;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import javax.wsdl.Binding;
+import javax.wsdl.BindingInput;
+import javax.wsdl.BindingOperation;
+import javax.wsdl.Definition;
+import javax.wsdl.extensions.ExtensionRegistry;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+public class JAXBExtensionHelperTest extends TestCase {
+
+ private WSDLFactory wsdlFactory;
+
+ private WSDLReader wsdlReader;
+
+ private Definition wsdlDefinition;
+
+ private ExtensionRegistry registry;
+
+ public void setUp() throws Exception {
+
+ wsdlFactory = WSDLFactory.newInstance();
+ wsdlReader = wsdlFactory.newWSDLReader();
+ wsdlReader.setFeature("javax.wsdl.verbose", false);
+ registry = wsdlReader.getExtensionRegistry();
+ if (registry == null) {
+ registry = wsdlFactory.newPopulatedExtensionRegistry();
+ }
+ JAXBExtensionHelper.addExtensions(registry, "javax.wsdl.BindingInput",
+
"org.apache.cxf.bindings.xformat.XMLBindingMessageFormat",
Thread.currentThread()
+ .getContextClassLoader());
+ }
+
+ public void tearDown() {
+
+ }
+
+ public void testAddExtension() throws Exception {
+
+ Class extClass =
Class.forName("org.apache.cxf.bindings.xformat.XMLBindingMessageFormat");
+
+ String file =
this.getClass().getResource("/wsdl/hello_world_xml_bare.wsdl").getFile();
+
+ wsdlReader.setExtensionRegistry(registry);
+
+ wsdlDefinition = wsdlReader.readWSDL(file);
+
+ Binding b = wsdlDefinition.getBinding(new
QName("http://objectweb.org/hello_world_xml_http/bare",
+ "Greeter_XMLBinding"));
+ BindingOperation bo = b.getBindingOperation("sayHi", null, null);
+ BindingInput bi = bo.getBindingInput();
+ List extList = bi.getExtensibilityElements();
+ Object extIns = null;
+ for (Object ext : extList) {
+ extIns = extClass.cast(ext);
+ }
+ assertEquals("can't found ext element XMLBindingMessageFormat", true,
extIns != null);
+ String rootNode = getRootNode(extIns);
+ assertEquals("get rootNode value back from extension element",
"sayHi", rootNode);
+ }
+
+ private String getRootNode(Object ext) throws Exception {
+ for (int i = 0; i < ext.getClass().getMethods().length; i++) {
+ Method method = ext.getClass().getMethods()[i];
+ if (method.getName().equals("getRootNode")) {
+ return (String) method.invoke(ext, new Object[] {});
+ }
+ }
+ return null;
+ }
+}
Propchange:
incubator/cxf/trunk/api/src/test/java/org/apache/cxf/wsdl/JAXBExtensionHelperTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/cxf/trunk/api/src/test/resources/wsdl/hello_world_xml_bare.wsdl
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/test/resources/wsdl/hello_world_xml_bare.wsdl?rev=439178&view=auto
==============================================================================
--- incubator/cxf/trunk/api/src/test/resources/wsdl/hello_world_xml_bare.wsdl
(added)
+++ incubator/cxf/trunk/api/src/test/resources/wsdl/hello_world_xml_bare.wsdl
Thu Aug 31 21:54:02 2006
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="HelloWorld"
targetNamespace="http://objectweb.org/hello_world_xml_http/bare"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+ xmlns:xformat="http://cxf.apache.org/bindings/xformat"
+ xmlns:tns="http://objectweb.org/hello_world_xml_http/bare"
+
xmlns:x1="http://objectweb.org/hello_world_xml_http/bare/types"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <wsdl:types>
+ <schema
targetNamespace="http://objectweb.org/hello_world_xml_http/bare/types"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified">
+
+ <element name="responseType" type="xsd:string"/>
+ <element name="requestType" type="xsd:string"/>
+
+ <complexType name="myComplexStruct">
+ <sequence>
+ <element name="elem1" type="xsd:string"/>
+ <element name="elem2" type="xsd:string"/>
+ <element name="elem3" type="xsd:int"/>
+ </sequence>
+ </complexType>
+ </schema>
+ </wsdl:types>
+
+ <wsdl:message name="sayHiRequest"/>
+
+ <wsdl:message name="sayHiResponse">
+ <wsdl:part type="xsd:string" name="out"/>
+ </wsdl:message>
+
+ <wsdl:message name="greetMeRequest">
+ <wsdl:part element="x1:requestType" name="me"/>
+ </wsdl:message>
+
+ <wsdl:message name="greetMeResponse">
+ <wsdl:part element="x1:responseType" name="theResponse"/>
+ </wsdl:message>
+
+ <wsdl:message name="sendReceiveDataRequest">
+ <wsdl:part type="x1:myComplexStruct" name="in"/>
+ </wsdl:message>
+
+ <wsdl:message name="sendReceiveDataResponse">
+ <wsdl:part type="x1:myComplexStruct" name="out"/>
+ </wsdl:message>
+
+ <wsdl:portType name="Greeter">
+ <wsdl:operation name="sayHi">
+ <wsdl:input message="tns:sayHiRequest" name="sayHiRequest"/>
+ <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="greetMe">
+ <wsdl:input message="tns:greetMeRequest" name="greetMeRequest"/>
+ <wsdl:output message="tns:greetMeResponse" name="greetMeResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="sendReceiveData">
+ <wsdl:input message="tns:sendReceiveDataRequest"
name="SendReceiveDataRequest"/>
+ <wsdl:output message="tns:sendReceiveDataResponse"
name="SendReceiveDataResponse"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="Greeter_XMLBinding" type="tns:Greeter">
+ <xformat:binding/>
+ <wsdl:operation name="sayHi">
+ <wsdl:input>
+ <xformat:body rootNode="sayHi"/>
+ </wsdl:input>
+ <wsdl:output/>
+ </wsdl:operation>
+
+ <wsdl:operation name="greetMe">
+ <wsdl:input/>
+ <wsdl:output/>
+ </wsdl:operation>
+
+ <wsdl:operation name="sendReceiveData">
+ <wsdl:input/>
+ <wsdl:output/>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="XMLService">
+ <wsdl:port binding="tns:Greeter_XMLBinding" name="XMLPort">
+ <http:address location="http://localhost:9000/XMLService/XMLPort"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
Propchange:
incubator/cxf/trunk/api/src/test/resources/wsdl/hello_world_xml_bare.wsdl
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/cxf/trunk/api/src/test/resources/wsdl/hello_world_xml_bare.wsdl
------------------------------------------------------------------------------
svn:mime-type = text/xml