@Override public void handle(Context context) throws Exception { boolean accepted = false; String requestType = context.getRequest().getContentType().getType(); if (requestType != null) { for (String contentType : contentTypes) { if (requestType.equals(contentType)) { accepted = true; break; } } } if (accepted) { context.next(); } else { context.clientError(HttpResponseStatus.UNSUPPORTED_MEDIA_TYPE.code()); } } }
@Override public <T, O> T parse(TypedData body, Parse<T, O> parse) throws Exception { Function<Parser<?>, T> parserPredicate; List<Parser<?>> parsers = Lists.newArrayList(); if (parse.getOpts().isPresent()) { parserPredicate = parser -> { if (parser.getOptsType().isInstance(parse.getOpts().get())) { parsers.add(parser); Parser<O> cast = Types.cast(parser); return cast.parse(DefaultContext.this, body, parse); } return null; }; } else { parserPredicate = parser -> { parsers.add(parser); Parser<O> cast = Types.cast(parser); return cast.parse(DefaultContext.this, body, parse); }; } return joinedRegistry .first(PARSER_TYPE_TOKEN, parserPredicate) .orElseThrow(() -> new NoSuchParserException(parse.getType(), parse.getOpts().orElse(null), body.getContentType().getType(), parsers)); }