private void initWriters(Map<MediaType, List<MessageBodyWriter>> providersMap, List<MessageBodyWriterPair> listProviders, Set<MessageBodyWriter> providersSet) { for (MessageBodyWriter provider : providersSet) { List<MediaType> values = MediaTypes.createMediaTypes( provider.getClass().getAnnotation(Produces.class)); for (MediaType type : values) getClassCapability(providersMap, provider, type); listProviders.add(new MessageBodyWriterPair(provider, values)); } final DistanceComparator<MessageBodyWriter> dc = new DistanceComparator<MessageBodyWriter>(MessageBodyWriter.class); for (Map.Entry<MediaType, List<MessageBodyWriter>> e : providersMap.entrySet()) { Collections.sort(e.getValue(), dc); } Collections.sort(listProviders, new Comparator<MessageBodyWriterPair>() { public int compare(MessageBodyWriterPair p1, MessageBodyWriterPair p2) { return dc.compare(p1.mbw, p2.mbw); } }); }
private void initWriters(Map<MediaType, List<MessageBodyWriter>> providersMap, List<MessageBodyWriterPair> listProviders, Set<MessageBodyWriter> providersSet) { for (MessageBodyWriter provider : providersSet) { List<MediaType> values = MediaTypes.createMediaTypes( provider.getClass().getAnnotation(Produces.class)); for (MediaType type : values) getClassCapability(providersMap, provider, type); listProviders.add(new MessageBodyWriterPair(provider, values)); } final DistanceComparator<MessageBodyWriter> dc = new DistanceComparator<MessageBodyWriter>(MessageBodyWriter.class); for (Map.Entry<MediaType, List<MessageBodyWriter>> e : providersMap.entrySet()) { Collections.sort(e.getValue(), dc); } Collections.sort(listProviders, new Comparator<MessageBodyWriterPair>() { public int compare(MessageBodyWriterPair p1, MessageBodyWriterPair p2) { return dc.compare(p1.mbw, p2.mbw); } }); }