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);
}
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);
}
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);
}
Aggregations