Search in sources :

Example 1 with MimeAttachmentSet

use of com.sun.xml.ws.message.MimeAttachmentSet in project metro-jax-ws by eclipse-ee4j.

the class SwACodec method decode.

@Override
protected void decode(MimeMultipartParser mpp, Packet packet) throws IOException {
    // TODO: handle attachments correctly
    Attachment root = mpp.getRootPart();
    Codec rootCodec = getMimeRootCodec(packet);
    if (rootCodec instanceof RootOnlyCodec) {
        ((RootOnlyCodec) rootCodec).decode(root.asInputStream(), root.getContentType(), packet, new MimeAttachmentSet(mpp));
    } else {
        rootCodec.decode(root.asInputStream(), root.getContentType(), packet);
        Map<String, Attachment> atts = mpp.getAttachmentParts();
        for (Map.Entry<String, Attachment> att : atts.entrySet()) {
            packet.getMessage().getAttachments().add(att.getValue());
        }
    }
}
Also used : Codec(com.sun.xml.ws.api.pipe.Codec) Attachment(com.sun.xml.ws.api.message.Attachment) MimeAttachmentSet(com.sun.xml.ws.message.MimeAttachmentSet) Map(java.util.Map)

Example 2 with MimeAttachmentSet

use of com.sun.xml.ws.message.MimeAttachmentSet in project metro-jax-ws by eclipse-ee4j.

the class MtomCodec method decode.

@Override
protected void decode(MimeMultipartParser mpp, Packet packet) throws IOException {
    // TODO shouldn't we check for SOAP1.1/SOAP1.2 and throw
    // TODO UnsupportedMediaException like StreamSOAPCodec
    String charset = null;
    String ct = mpp.getRootPart().getContentType();
    if (ct != null) {
        charset = new ContentTypeImpl(ct).getCharSet();
    }
    if (charset != null && !Charset.isSupported(charset)) {
        throw new UnsupportedMediaException(charset);
    }
    if (charset != null) {
        packet.invocationProperties.put(DECODED_MESSAGE_CHARSET, charset);
    } else {
        packet.invocationProperties.remove(DECODED_MESSAGE_CHARSET);
    }
    // we'd like to reuse those reader objects but unfortunately decoder may be reused
    // before the decoded message is completely used.
    XMLStreamReader mtomReader = new MtomXMLStreamReaderEx(mpp, XMLStreamReaderFactory.create(null, mpp.getRootPart().asInputStream(), charset, true));
    packet.setMessage(codec.decode(mtomReader, new MimeAttachmentSet(mpp)));
    packet.setMtomFeature(mtomFeature);
    packet.setContentType(mpp.getContentType());
}
Also used : XMLStreamReader(javax.xml.stream.XMLStreamReader) UnsupportedMediaException(com.sun.xml.ws.server.UnsupportedMediaException) MimeAttachmentSet(com.sun.xml.ws.message.MimeAttachmentSet)

Aggregations

MimeAttachmentSet (com.sun.xml.ws.message.MimeAttachmentSet)2 Attachment (com.sun.xml.ws.api.message.Attachment)1 Codec (com.sun.xml.ws.api.pipe.Codec)1 UnsupportedMediaException (com.sun.xml.ws.server.UnsupportedMediaException)1 Map (java.util.Map)1 XMLStreamReader (javax.xml.stream.XMLStreamReader)1