You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2002/11/18 16:36:18 UTC

DO NOT REPLY [Bug 14638] New: - Axis unwraps document/literal request elements as server method arguments.

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14638>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14638

Axis unwraps document/literal request elements as server method arguments.

           Summary: Axis unwraps document/literal request elements as server
                    method arguments.
           Product: Axis
           Version: 1.0
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Basic Architecture
        AssignedTo: axis-dev@xml.apache.org
        ReportedBy: Andre.Kramer@computer.org


For a wsdl in document/literal style Axis generates Server implementation 
classes that take the request element's sub elements as arguments. This is ok 
for rpc style but causes mulitple problems when the request element is a 
complex XML element.
1) Axis sends elements with xsi:isnil="true" even if req element is optional 
because of use of <choice/>
2) Axis expects others to send empty isnil="true" elements whereas .NET just 
drops sub-elements when not present in the request doc (e.g. if minOccurs="0").
3) Axis does not like attributes on the request element.

Unwrapping and isnil seem rpc type of things to be doing and Axis should 
accept as broad a set of values for the input request document as possible for 
document/literal style.

Example:
<element name="getServiceDescription">
        <complexType>
          <sequence>
            <element name="registrationContext" 
type="types:RegistrationContext" minOccurs="0"/>
            <element name="userContext" type="types:UserContext"/>
          </sequence>
        </complexType>
      </element>
      <element name="getServiceDescriptionResponse" 
type="types:ServiceDescription"/>
<wsdl:message name="getServiceDescription">
    <wsdl:part  name="getServiceDescription" 
element="types:getServiceDescription"/>
  </wsdl:message>
  <wsdl:message name="getServiceDescriptionResponse">
    <wsdl:part  name="getServiceDescriptionResponse" 
element="types:getServiceDescriptionResponse"/>
  </wsdl:message>

generates:
 public void getServiceDescription(org.oasis_open.www.RegistrationContext 
registrationContext, org.oasis_open.www.UserContext userContext,  
org.oasis_open.www.holders.ExtensionArrayHolder extension) throws 
java.rmi.RemoteException {
     ...
    }

It would be much better to produce:
public void getServiceDescription(GetServiceDescription request)
as well as a new GetServiceDescription serialization class that can
deal with missing fields, attributes, choices etc which the current
method argument logic seems to have (mulitple) problems with.

Cheers,
Andre