[ http://issues.apache.org/jira/browse/AXIS-1609?page=comments#action_12315743 ]
sebastien tardif commented on AXIS-1609: ---------------------------------------- Dims, Please merge. I didn't touch the cvs code for a while so I'm not setup. > No option available to map all MIME type to javax.activation.DataHandler as > required by JAX-RPC 1.1 specification. > ------------------------------------------------------------------------------------------------------------------ > > Key: AXIS-1609 > URL: http://issues.apache.org/jira/browse/AXIS-1609 > Project: Apache Axis > Type: Bug > Components: WSDL processing > Versions: 1.2 Beta > Environment: Axis 09/23/2004 > Reporter: Sébastien Tardif > Assignee: Davanum Srinivas > Attachments: AXIS-1609-simpler-diff.txt, diff.txt, docHarbor.wsdl > > My use case is to use SwA and doing streaming from end to end. The type of > attachment is not known. So as suggested by many documents I use the mime > type: "application/octet-stream". Wsdl2Java utility use > org.apache.axis.attachments.OctetStream to represent the data. It's a class > specific to Axis which is one of my concern. > Take a look a the class: > public class OctetStream { > private byte[] bytes = null; > public OctetStream() { > } > public OctetStream(byte[] bytes) { > this.bytes = bytes; > } > public byte[] getBytes() { > return this.bytes; > } > public void setBytes(byte[] bytes) { > this.bytes = bytes; > } > } > It doesn't support streaming! It's probably the reason why people will use > attachment instead of the most compatible way: "xsd:base64Binary". > As a third issues: > The JAX-RPC 1.1 specification said: > 7.5 Mapping between MIME types and Java types > The following table specifies the standard Java mapping for a subset of the > MIME types. > The Java to WSDL/XML and WSDL/XML to Java mapping for the MIME types is > required to conform to the above mapping. This mapping is reflected in the > mapped Java > method signatures and WSDL description. A WSDL/XML to Java mapping tool is > required to provide an option to map the above set of MIME types to the > javax.activation.DataHandler class. The DataHandler class provides methods to > get access to the stream representation of the data for a MIME type. > A Java to WSDL mapping tool is required to provide a facility for specifying > metadata > related to the above mapping between Java and MIME types. This metadata > identifies > whether a Java type is mapped to a MIME type (using the WSDL MIME binding) or > is > mapped to an XML schema type (based on the section 4.2, "XML to Java Type > Mapping"). For example, a java.lang.String can be mapped to either an > xsd:string > or MIME type text/plain. The mapping metadata identifies a specific mapping. > If a MIME type is mapped to the javax.activation.DataHandler, the getContent > method of the DataHandler class must return instance of the corresponding > Java type > for a specific MIME content type. > A JAX-RPC implementation is required to support the above MIME types (as > specified > in the TABLE 7-1) and provide implementation of the required > javax.activation.DataContentHandler classes. > ... > A JAX-RPC implementation is not required to support MIME types beyond that > specified in the above table. These additional MIME types may be mapped and > supported using the javax.activation.DataHandler class and Java Activation > Framework. > TABLE 7-1 Mapping of MIME Types > MIME Type Java Type > image/gif java.awt.Image > image/jpeg java.awt.Image > text/plain java.lang.String > multipart/* javax.mail.internet.MimeMultipart > text/xml or application/xml javax.xml.transform.Source > Here the approch of another stack: > From: https://jax-rpc.dev.java.net/whitepaper/1.1.2/attachments-howto.html > JAXRPC specification uses the JavaBeans Activation Framework to support > various MIME content types. The DataHandler class provides a consistent > interface to the data represented in various MIME types. A DataHandler class > uses the DataContentHandler interface to convert between a stream and > specific Java object based on the MIME type. JAXRPC uses SAAJ, which provides > DataContentHandlers for the MIME types supported by JAXRPC. If the MIME type > is not one of the JAXRPC supported MIME types, then the user has to register > corresponding DataContentHandlers. Here "text/plain" and "text/xml" are both > JAXRPC supported MIME types and is taken care of automatically. A DataHandler > can be instantiated using the constructor DataHandler(Object obj, String > mime_type). The method DataHandler.getContentType returns the MIME type of > the encapsulatd data and DataHandler.getContent method retruns a Java object > based on the MIME type of the encapsulated data. If you do not want the MIME > types to map to coresponding Java types, you can use wscompile with > -datahandleronly option to map all MIME types to DataHandler. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
