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...@us.ibm.com on 2002/08/06 17:09:44 UTC

WSDL MIME is broken - need suggestions for arrays

Between WSDL 1.1 and JAX-RPC, for MIME we essentially ignore the type given
in the message part and determine the type via the binding.  For example:

<complexType name="ArrayOfBinary"> ... </complexType>

<message name="empty"/>
<message name="m1">
  <part name="body" type="tns:ArrayOfBinary"/>
</message>

<portType name="pt1">
  <operation name="setImage">
    <input message="m1"/>
    <output message="empty"/>
  </operation>
</portType>

<binding name="b1" type="tns:pt1">
  <operation name="setImage">
    <input>
      <mime:multipartRelated>
        <mime:part>
          <mime:content part="body" type="image/jpeg"/>
        </mime:part>
      </mime:multipartRelated>
    </input>
    <output/>
  </operation>
</binding>

The binding says "image/jpeg".  We know that means "java.awt.Image", so
message m1's type could have been anything at all since it's ignored:
"xsd:string", "xsd:anyURI".  While quite odd, this works just dandy.  We
end up with the Java signature:

public void setImage(java.awt.Image body);

Now, how do we map THIS signature to WSDL?

public void setImages(Image[] bodies);

mime:content cannot contain anything but part and type.  I've come up with
2 possible hacks, but they're both rather messy to deal with:
1.  append "[]" to the end of the type string for each dimension.
2.  add additional mime:content entries for each dimension:  "<mime:content
part="body" type="array"/>"

Another option:
3.  completely ignore WSDL 1.1 and come up with our own xml for MIME types.
This is completely non-interoperable, but WSDL MIME is so broken that I
don't know how much interoperability we'd have, anyway.

Any preferences?  Any other suggestions?

Russell Butek
butek@us.ibm.com