new Object[] {type, genericType, anns, mediaType});
}
List<MediaTypeMap<MessageBodyWriter<?>>.OFHolder<MessageBodyWriter<?>>> writersFactories =
messageBodyWriters.getProvidersByMediaType(mediaType, type);
logger.trace("Found possible MessageBodyWriter ObjectFactories {}", writersFactories); //$NON-NLS-1$
Providers providersLogger = new Providers();
MessageBodyWriter<T> ret = null;
for (MediaTypeMap<MessageBodyWriter<?>>.OFHolder<MessageBodyWriter<?>> factory : writersFactories) {
MessageBodyWriter<?> writer = factory.getInstance(runtimeContext);
if (isWriteable(writer, type, genericType, annotations, mediaType, runtimeContext, factory.isSystemProvider)) {
if (logger.isTraceEnabled()) {
List<Annotation> anns =
(annotations == null) ? null : Arrays.asList(annotations);
logger.trace("{}.isWriteable( {}, {}, {}, {} ) returned true", new Object[] { //$NON-NLS-1$
writer, type, genericType, anns, mediaType});
}
ret = (MessageBodyWriter<T>)writer;
providersLogger.addMessageBodyWriter(writer, true);
break;
} else {
providersLogger.addMessageBodyWriter(writer, false);
}
}
if (ret == null && logger.isTraceEnabled()) {
List<Annotation> anns = (annotations == null) ? null : Arrays.asList(annotations);
logger
.trace("No MessageBodyWriter returned true for isWriteable( {}, {}, {}, {} )", new Object[] { //$NON-NLS-1$
type, genericType, anns, mediaType});
}
providersLogger.log();
return ret;
}