@Override @SuppressWarnings("unchecked") public <T> T get(final List<MediaType> types) { Supplier<Object> provider = MediaType .matcher(types) .first(ImmutableList.copyOf(data.keySet())) .map(it -> data.remove(it)) .orElseThrow( () -> new Err(Status.NOT_ACCEPTABLE, Joiner.on(", ").join(types))); return (T) provider.get(); }
/** * Given: * * <pre> * text/html, application/xhtml; {@literal *}/{@literal *} * </pre> * * <pre> * first(text/html) // returns text/html * first(application/json) // returns application/json * </pre> * * @param candidate A candidate media type. Required. * @return A first most relevant media type or an empty optional. */ public Optional<MediaType> first(final MediaType candidate) { return first(ImmutableList.of(candidate)); }
@Override public Optional<MediaType> accepts(final List<MediaType> types) { requireNonNull(types, "Media types are required."); return MediaType.matcher(accept()).first(types); }
/** * Given: * * <pre> * text/html, application/xhtml; {@literal *}/{@literal *} * </pre> * * <pre> * first(text/html) // returns text/html * first(application/json) // returns application/json * </pre> * * @param candidate A candidate media type. Required. * @return A first most relevant media type or an empty optional. */ public Optional<MediaType> first(final MediaType candidate) { return first(ImmutableList.of(candidate)); }
@Override @SuppressWarnings("unchecked") public <T> T get(final List<MediaType> types) { Supplier<Object> provider = MediaType .matcher(types) .first(ImmutableList.copyOf(data.keySet())) .map(it -> data.remove(it)) .orElseThrow( () -> new Err(Status.NOT_ACCEPTABLE, Joiner.on(", ").join(types))); return (T) provider.get(); }
@Override public Optional<MediaType> accepts(final List<MediaType> types) { requireNonNull(types, "Media types are required."); return MediaType.matcher(accept()).first(types); }