axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Davanum Srinivas (JIRA)" <>
Subject [jira] Assigned: (AXIS-1609) No option available to map all MIME type to javax.activation.DataHandler as required by JAX-RPC 1.1 specification.
Date Wed, 04 May 2005 22:11:05 GMT
     [ ]

Davanum Srinivas reassigned AXIS-1609:

    Assign To: Davanum Srinivas

> No option available to map all MIME type to javax.activation.DataHandler as required
by JAX-RPC 1.1 specification.
> ------------------------------------------------------------------------------------------------------------------
>          Key: AXIS-1609
>          URL:
>      Project: 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:
> 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:
For more information on JIRA, see:

View raw message