contentType = MediaType.APPLICATION_OCTET_STREAM_TYPE;
getHttpHeaders().putSingle(HttpHeaders.CONTENT_TYPE, contentType);
}
final MessageBodyWriter p = getMessageBodyWorkers().getMessageBodyWriter(
entity.getClass(), entityType,
annotations, contentType);
if (p == null) {
String message = "A message body writer for Java class " + entity.getClass().getName() +
", and Java type " + entityType +
", and MIME media type " + contentType + " was not found";
LOGGER.severe(message);
Map<MediaType, List<MessageBodyWriter>> m = getMessageBodyWorkers().
getWriters(contentType);
LOGGER.severe("The registered message body writers compatible with the MIME media type are:\n" +
getMessageBodyWorkers().writersToString(m));
if (request.getMethod().equals("HEAD")) {
isCommitted = true;
responseWriter.writeStatusAndHeaders(-1, this);
responseWriter.finish();
return;
} else {
throw new WebApplicationException(new MessageException(message), 500);
}
}
final long size = p.getSize(entity, entity.getClass(), entityType,
annotations, contentType);
if (request.getMethod().equals("HEAD")) {
if (size != -1)
getHttpHeaders().putSingle(HttpHeaders.CONTENT_LENGTH, Long.toString(size));
isCommitted = true;
responseWriter.writeStatusAndHeaders(0, this);
} else {
if (request.isTracingEnabled()) {
request.trace(String.format("matched message body writer: %s, \"%s\" -> %s",
ReflectionHelper.objectToString(entity),
contentType,
ReflectionHelper.objectToString(p)));
}
if (out == null)
out = new CommittingOutputStream(size);
p.writeTo(entity, entity.getClass(), entityType,
annotations, contentType, getHttpHeaders(),
out);
if (!isCommitted) {
isCommitted = true;
responseWriter.writeStatusAndHeaders(-1, this);