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: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


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

Reply via email to