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=17172>.
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=17172

WSDL2Java mistakenly produces javax.activation.holders.DataHandlerHolder

           Summary: WSDL2Java mistakenly produces
                    javax.activation.holders.DataHandlerHolder
           Product: Axis
           Version: 1.0-rc1
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: WSDL processing
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


WSDL2Java mistakenly produces javax.activation.holders.DataHandlerHolder

If a webservice has an IN/OUT referenced attachment parameter (DataHandler), 
WSDL2Java produces a reference to a non-existent class: 
javax.activation.holders.DataHandlerHolder

Sample WSDL that will reproduce this follows...


--------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:E3ReferencedAttachmentService" 
xmlns="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:apachesoap="http://xml.apache.org/xml-soap"; 
xmlns:impl="urn:E3ReferencedAttachmentService" 
xmlns:intf="urn:E3ReferencedAttachmentService" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";><wsdl:types><schema 
targetNamespace="urn:E3ReferencedAttachmentService" 
xmlns="http://www.w3.org/2001/XMLSchema";><import 
namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType 
name="NameValuePair"><sequence><element name="name" nillable="true" 
type="xsd:string"/><element name="value" nillable="true" 
type="xsd:string"/></sequence></complexType><complexType 
name="ArrayOfNameValuePair"><complexContent><restriction 
base="soapenc:Array"><attribute ref="soapenc:arrayType" 
wsdl:arrayType="impl:NameValuePair
[]"/></restriction></complexContent></complexType><element 
name="ArrayOfNameValuePair" nillable="true" 
type="impl:ArrayOfNameValuePair"/></schema><schema 
targetNamespace="http://xml.apache.org/xml-soap"; 
xmlns="http://www.w3.org/2001/XMLSchema";><import 
namespace="http://schemas.xmlsoap.org/soap/encoding/"/><element 
name="DataHandler" nillable="true" 
type="apachesoap:DataHandler"/></schema></wsdl:types>
  <wsdl:message name="callE3EncodedResponse">
    <wsdl:part name="headers" type="xsd:string"/>
    <wsdl:part name="body" type="apachesoap:DataHandler"/>
  </wsdl:message>
  <wsdl:message name="callE3EncodedRequest">
    <wsdl:part name="parameters" type="xsd:string"/>
    <wsdl:part name="headers" type="xsd:string"/>
    <wsdl:part name="body" type="apachesoap:DataHandler"/>
  </wsdl:message>
  <wsdl:message name="callE3Response">
    <wsdl:part name="headers" type="intf:ArrayOfNameValuePair"/>
    <wsdl:part name="body" type="apachesoap:DataHandler"/>
  </wsdl:message>
  <wsdl:message name="callE3Request">
    <wsdl:part name="parameters" type="intf:ArrayOfNameValuePair"/>
    <wsdl:part name="headers" type="intf:ArrayOfNameValuePair"/>
    <wsdl:part name="body" type="apachesoap:DataHandler"/>
  </wsdl:message>
  <wsdl:portType name="E3ReferencedAttachment">
    <wsdl:operation name="callE3" parameterOrder="parameters headers body">
      <wsdl:input message="intf:callE3Request" name="callE3Request"/>
      <wsdl:output message="intf:callE3Response" name="callE3Response"/>
    </wsdl:operation>
    <wsdl:operation name="callE3Encoded" parameterOrder="parameters headers 
body">
      <wsdl:input message="intf:callE3EncodedRequest" 
name="callE3EncodedRequest"/>
      <wsdl:output message="intf:callE3EncodedResponse" 
name="callE3EncodedResponse"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="E3ReferencedAttachmentSoapBinding" 
type="intf:E3ReferencedAttachment">
    <wsdlsoap:binding style="rpc" 
transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="callE3">
      <wsdlsoap:operation soapAction=""/>
      <wsdl:input name="callE3Request">
        <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
namespace="urn:E3ReferencedAttachmentService" use="encoded"/>
      </wsdl:input>
      <wsdl:output name="callE3Response">
        <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
namespace="urn:E3ReferencedAttachmentService" use="encoded"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="callE3Encoded">
      <wsdlsoap:operation soapAction=""/>
      <wsdl:input name="callE3EncodedRequest">
        <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
namespace="urn:E3ReferencedAttachmentService" use="encoded"/>
      </wsdl:input>
      <wsdl:output name="callE3EncodedResponse">
        <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
namespace="urn:E3ReferencedAttachmentService" use="encoded"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="E3ReferencedAttachmentService">
    <wsdl:port binding="intf:E3ReferencedAttachmentSoapBinding" 
name="E3ReferencedAttachment">
      <wsdlsoap:address 
location="http://sbrow1d/e3/services/E3ReferencedAttachment"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
--------------------------------------------------

Note the parameter named "body" is present in the request and response.

When fed to WSDL2Java, this WSDL file produces references to a non-existent 
class: javax.activation.holders.DataHandlerHolder.

This should, instead, probably produce the DataHandlerHolder source (though 
probably not in the javax.activation package) and reference the one it built.  
Alternatively, a "holder" class for DataHandler could be distributed with AXIS 
and then WSDL2Java could just reference that one.

Of course, the generated code *can* be made to work by writing a 
DataHandlerHolder class and changing the auto-generated code to reference it, 
but I feel the "holder" for the DataHandler should be automatically handled by 
WSDL2Java.

Thanks

-Sam

Reply via email to