Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 339359

Summary: DBWS should support doc/wrapped in addition to doc/literal
Product: z_Archived Reporter: Mike Norman <michael.norman>
Component: EclipselinkAssignee: Nobody - feel free to take it <nobody>
Status: CLOSED INVALID QA Contact:
Severity: normal    
Priority: P3 CC: david.mccann, eclipselink.dbws-inbox
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:

Description Mike Norman CLA 2011-03-09 09:33:11 EST
customer requirement
Comment 1 David McCann CLA 2011-05-17 17:05:21 EDT
Based on my initial investigation of "document/wrapped" I have determined that we currently do support the "Wrapped Document/Literal" pattern.  Note that there is no "Document/Literal" format/style, only RPC encoded/literal and Document encoded/literal. The wrapped pattern makes use of the positive aspects of both document/literal and rpc/literal.

The following points are considered required to satisfy the wrapped pattern:

1 - Only one Part Definition in the Input & Output Messages in WSDL
2 - "Part" Definitions are wrapper elements
3 - Child Elements of "Part" Element Type will be SEI Method parameter
4 - Input Wrapper Element name should match with Operation name 
5 - <Output Wrapper Element Name> = <Operation Name> + "Response" (not required)
6 - In the WSDL Binding section, soap:binding style = "document"
7 - soap:body definitions must specify use="literal" and nothing else
Comment 2 David McCann CLA 2011-05-17 17:07:57 EDT
Following is the WSDL that was generated from our P1testWebServiceSuite with comments indicating where each of the above-mentioned points are present in the document:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="p1TestService" 
                  targetNamespace="urn:p1TestService" 
		  xmlns:ns1="urn:p1Test" 
		  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
		  xmlns:tns="urn:p1TestService" 
		  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
		  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
  <wsdl:types>
    <xsd:schema xmlns:tns="urn:p1TestService" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
		targetNamespace="urn:p1TestService" 
		elementFormDefault="qualified">
      <xsd:import schemaLocation="eclipselink-dbws-schema.xsd" namespace="urn:p1Test"/>
      <xsd:complexType name="p1TestResponseType">
        <xsd:sequence>
	  <xsd:element name="result" type="xsd:int"/>
	</xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="p1TestRequestType">
        <xsd:sequence>
	  <!-- Child Elements of "Part" Element Type will be SEI Method parameter -->
	  <xsd:element name="SIMPLARRAY" type="ns1:SOMEPACKAGE_TBL1"/>
	  <xsd:element name="FOO" type="xsd:string"/>
	</xsd:sequence>
      </xsd:complexType>
      <!-- <Output Wrapper Element Name> = <Operation Name> + "Response"  -->
      <xsd:element name="p1TestResponse" type="tns:p1TestResponseType"/>
      <!-- Input Wrapper Element name should match with Operation name  -->
      <xsd:element name="p1Test" type="tns:p1TestRequestType"/>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="p1TestRequest">
    <!-- Only "One" Part Definition in the Input & Output Messages in WSDL -->
    <!-- "Part" Definitions are wrapper elements -->
    <wsdl:part name="p1TestRequest" element="tns:p1Test"></wsdl:part>
  </wsdl:message>
  <wsdl:message name="p1TestResponse">
    <!-- Only "One" Part Definition in the Input & Output Messages in WSDL -->
    <!-- "Part" Definitions are wrapper elements -->
    <wsdl:part name="p1TestResponse" element="tns:p1TestResponse"></wsdl:part>
  </wsdl:message>
  <wsdl:portType name="p1TestService_Interface">
    <wsdl:operation name="p1Test">
      <wsdl:input message="tns:p1TestRequest"></wsdl:input>
      <wsdl:output message="tns:p1TestResponse"></wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="p1TestService_SOAP_HTTP" type="tns:p1TestService_Interface">
    <!-- In the WSDL Binding section, soap:binding style = "document" -->
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="p1Test">
      <soap:operation soapAction="urn:p1TestService:p1Test"/>
      <wsdl:input>
        <!-- soap:body definitions must specify use="literal" and nothing else -->
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="p1TestService">
    <wsdl:port name="p1TestServicePort" binding="tns:p1TestService_SOAP_HTTP">
      <soap:address location="REPLACE_WITH_ENDPOINT_ADDRESS"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
Comment 3 David McCann CLA 2011-05-19 11:26:15 EDT
As far as I am concerned, at this point we implement the wrapped doc/literal pattern correctly, and this is not a bug.  Closing accordingly.
Comment 4 Eclipse Webmaster CLA 2022-06-09 10:27:32 EDT
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink