You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Tejash Shah (JIRA)" <ji...@apache.org> on 2010/04/22 10:00:53 UTC

[jira] Created: (CXF-2776) Support for Flatten or In-lined serving WSDL

Support for Flatten or In-lined serving WSDL
--------------------------------------------

                 Key: CXF-2776
                 URL: https://issues.apache.org/jira/browse/CXF-2776
             Project: CXF
          Issue Type: New Feature
    Affects Versions: 2.2.7, 2.3, 2.2.8
         Environment: Any
            Reporter: Tejash Shah
             Fix For: 2.3, 2.2.8


We are looking for option using which serving WSDL can shown as in-lined or flatten. e.g

I have schema as follows:

customer.xsd
------------------
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/customer"
	xmlns:tns="http://www.example.org/customer" elementFormDefault="qualified">

    <complexType name="customer">
    	<sequence>
    		<element name="name" type="string"></element>
    		<element name="id" type="string"></element>
    		<element name="contact" type="string"></element>
    	</sequence>
    </complexType>
</schema>
-------------------
And the WSDL content is as follows:
-------------------
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:tns="urn:CustomerService/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CustomerService"
	targetNamespace="urn:CustomerService/">
	<wsdl:types>
		<xsd:schema targetNamespace="urn:CustomerService/"
			xmlns:pref="http://www.example.org/customer">
			<xsd:import schemaLocation="customer.xsd"
				namespace="http://www.example.org/customer"></xsd:import>

			<xsd:element name="addCustomerReqEl" type="pref:customer"></xsd:element>

			<xsd:element name="addCustomerRespEl" type="tns:CustomerRespType">
			</xsd:element>

			<xsd:complexType name="CustomerRespType">
				<xsd:sequence>
					<xsd:element name="customer" type="pref:customer"></xsd:element>
					<xsd:element name="status" type="xsd:string"></xsd:element>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="addCustomerRequest">
		<wsdl:part element="tns:addCustomerReqEl" name="parameters" />
	</wsdl:message>
	<wsdl:message name="addCustomerResponse">
		<wsdl:part element="tns:addCustomerRespEl" name="parameters" />
	</wsdl:message>
	<wsdl:portType name="CustomerService">
		<wsdl:operation name="addCustomer">
			<wsdl:input message="tns:addCustomerRequest" />
			<wsdl:output message="tns:addCustomerResponse" />
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="CustomerServiceSOAP" type="tns:CustomerService">
		<soap:binding style="document"
			transport="http://schemas.xmlsoap.org/soap/http" />
		<wsdl:operation name="addCustomer">
			<soap:operation soapAction="urn:CustomerService/addCustomer" />
			<wsdl:input>
				<soap:body use="literal" />
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal" />
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="CustomerService">
		<wsdl:port binding="tns:CustomerServiceSOAP" name="CustomerServiceSOAP">
			<soap:address location="http://localhost:8080/CustomerService" />
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>
---------------------------------

When I deploy this WSDL using spring, camel and CXF as web-service, the serving WSDL (http://localhost:8080/CustomerService?WSDL) content shows schema location as http location (http://localhost:8080/CustomerService?xsd=customer.xsd)

--------------------------------

My Requirement:
- I want the imported schema content to be in-lined / flatten inside WSDL.
- If imported schema internally imports/ includes another schema that also need to be in-lined 
- Also in-lined WSDL will show all included schema as merged in to single schema section to avoid conflicts.


For the above WSDL when it gets served we may have parameter to the URL e.g. http://localhost:8080/CustomerService?WSDL&flat=1 and it should give me flat WSDL as follows:
-------------------

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:tns="urn:CustomerService/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CustomerService"
	targetNamespace="urn:CustomerService/">
	<wsdl:types>
		<xsd:schema targetNamespace="urn:CustomerService/"
			xmlns:pref="http://www.example.org/customer">
			<xsd:import namespace="http://www.example.org/customer"></xsd:import>

			<xsd:element name="addCustomerReqEl" type="pref:customer"></xsd:element>

			<xsd:element name="addCustomerRespEl" type="tns:CustomerRespType">
			</xsd:element>

			<xsd:complexType name="CustomerRespType">
				<xsd:sequence>
					<xsd:element name="customer" type="pref:customer"></xsd:element>
					<xsd:element name="status" type="xsd:string"></xsd:element>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:schema>
		<!-- Here the content of Customer.xsd is in-lined / flatten -->
		<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
			targetNamespace="http://www.example.org/customer" xmlns:tns="http://www.example.org/customer"
			elementFormDefault="qualified">

			<complexType name="customer">
				<sequence>
					<element name="name" type="string"></element>
					<element name="id" type="string"></element>
					<element name="contact" type="string"></element>
				</sequence>
			</complexType>
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="addCustomerRequest">
		<wsdl:part element="tns:addCustomerReqEl" name="parameters" />
	</wsdl:message>
	<wsdl:message name="addCustomerResponse">
		<wsdl:part element="tns:addCustomerRespEl" name="parameters" />
	</wsdl:message>
	<wsdl:portType name="CustomerService">
		<wsdl:operation name="addCustomer">
			<wsdl:input message="tns:addCustomerRequest" />
			<wsdl:output message="tns:addCustomerResponse" />
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="CustomerServiceSOAP" type="tns:CustomerService">
		<soap:binding style="document"
			transport="http://schemas.xmlsoap.org/soap/http" />
		<wsdl:operation name="addCustomer">
			<soap:operation soapAction="urn:CustomerService/addCustomer" />
			<wsdl:input>
				<soap:body use="literal" />
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal" />
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="CustomerService">
		<wsdl:port binding="tns:CustomerServiceSOAP" name="CustomerServiceSOAP">
			<soap:address location="http://www.example.org/" />
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>






-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.