Search in sources :

Example 1 with ExceptionHasMessage

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

the class SOAPBindingCodec method decode.

@Override
public void decode(InputStream in, String contentType, Packet packet) throws IOException {
    if (contentType == null) {
        contentType = xmlMimeType;
    }
    packet.setContentType(new ContentTypeImpl(contentType));
    preDecode(packet);
    try {
        if (isMultipartRelated(contentType))
            // parse the multipart portion and then decide whether it's MTOM or SwA
            super.decode(in, contentType, packet);
        else if (isFastInfoset(contentType)) {
            if (!ignoreContentNegotiationProperty && packet.contentNegotiation == ContentNegotiation.none)
                throw noFastInfosetForDecoding();
            useFastInfosetForEncoding = true;
            fiSoapCodec.decode(in, contentType, packet);
        } else
            xmlSoapCodec.decode(in, contentType, packet);
    } catch (RuntimeException we) {
        if (we instanceof ExceptionHasMessage || we instanceof UnsupportedMediaException) {
            throw we;
        } else {
            throw new MessageCreationException(version, we);
        }
    }
    postDecode(packet);
}
Also used : MessageCreationException(com.sun.xml.ws.protocol.soap.MessageCreationException) UnsupportedMediaException(com.sun.xml.ws.server.UnsupportedMediaException) ExceptionHasMessage(com.sun.xml.ws.api.message.ExceptionHasMessage)

Example 2 with ExceptionHasMessage

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

the class HttpAdapter method invokeAsync.

public void invokeAsync(final WSHTTPConnection con, final CompletionCallback callback) throws IOException {
    if (handleGet(con)) {
        callback.onCompletion();
        return;
    }
    final Pool<HttpToolkit> currentPool = getPool();
    final HttpToolkit tk = currentPool.take();
    final Packet request;
    try {
        request = decodePacket(con, tk.codec);
    } catch (ExceptionHasMessage e) {
        LOGGER.log(Level.SEVERE, e.getMessage(), e);
        Packet response = new Packet();
        response.setMessage(e.getFaultMessage());
        encodePacket(response, con, tk.codec);
        currentPool.recycle(tk);
        con.close();
        callback.onCompletion();
        return;
    } catch (UnsupportedMediaException e) {
        LOGGER.log(Level.SEVERE, e.getMessage(), e);
        Packet response = new Packet();
        con.setStatus(WSHTTPConnection.UNSUPPORTED_MEDIA);
        encodePacket(response, con, tk.codec);
        currentPool.recycle(tk);
        con.close();
        callback.onCompletion();
        return;
    }
    endpoint.process(request, new WSEndpoint.CompletionCallback() {

        @Override
        public void onCompletion(@NotNull Packet response) {
            try {
                try {
                    encodePacket(response, con, tk.codec);
                } catch (IOException ioe) {
                    LOGGER.log(Level.SEVERE, ioe.getMessage(), ioe);
                }
                currentPool.recycle(tk);
            } finally {
                con.close();
                callback.onCompletion();
            }
        }
    }, null);
}
Also used : Packet(com.sun.xml.ws.api.message.Packet) UnsupportedMediaException(com.sun.xml.ws.server.UnsupportedMediaException) WSEndpoint(com.sun.xml.ws.api.server.WSEndpoint) IOException(java.io.IOException) ExceptionHasMessage(com.sun.xml.ws.api.message.ExceptionHasMessage)

Example 3 with ExceptionHasMessage

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

the class SOAPBindingCodec method decode.

@Override
public void decode(ReadableByteChannel in, String contentType, Packet packet) {
    if (contentType == null) {
        throw new UnsupportedMediaException();
    }
    preDecode(packet);
    try {
        if (isMultipartRelated(contentType))
            super.decode(in, contentType, packet);
        else if (isFastInfoset(contentType)) {
            if (packet.contentNegotiation == ContentNegotiation.none)
                throw noFastInfosetForDecoding();
            useFastInfosetForEncoding = true;
            fiSoapCodec.decode(in, contentType, packet);
        } else
            xmlSoapCodec.decode(in, contentType, packet);
    } catch (RuntimeException we) {
        if (we instanceof ExceptionHasMessage || we instanceof UnsupportedMediaException) {
            throw we;
        } else {
            throw new MessageCreationException(version, we);
        }
    }
    postDecode(packet);
}
Also used : MessageCreationException(com.sun.xml.ws.protocol.soap.MessageCreationException) UnsupportedMediaException(com.sun.xml.ws.server.UnsupportedMediaException) ExceptionHasMessage(com.sun.xml.ws.api.message.ExceptionHasMessage)

Aggregations

ExceptionHasMessage (com.sun.xml.ws.api.message.ExceptionHasMessage)3 UnsupportedMediaException (com.sun.xml.ws.server.UnsupportedMediaException)3 MessageCreationException (com.sun.xml.ws.protocol.soap.MessageCreationException)2 Packet (com.sun.xml.ws.api.message.Packet)1 WSEndpoint (com.sun.xml.ws.api.server.WSEndpoint)1 IOException (java.io.IOException)1