CompositeParser extends AbstractParser { public Map<MediaType, List<Parser>> findDuplicateParsers( ParseContext context) { Map<MediaType, Parser> types = new HashMap<MediaType, Parser>(); Map<MediaType, List<Parser>> duplicates = new HashMap<MediaType, List<Parser>>(); for (Parser parser : parsers) { for (MediaType type : parser.getSupportedTypes(context)) { MediaType canonicalType = registry.normalize(type); if (types.containsKey(canonicalType)) { List<Parser> list = duplicates.get(canonicalType); if (list == null) { list = new ArrayList<Parser>(); list.add(types.get(canonicalType)); duplicates.put(canonicalType, list); } list.add(parser); } else { types.put(canonicalType, parser); } } } return duplicates; } CompositeParser(MediaTypeRegistry registry, List<Parser> parsers,
                           Collection<Class<? extends Parser>> excludeParsers);  CompositeParser(MediaTypeRegistry registry, List<Parser> parsers);  CompositeParser(MediaTypeRegistry registry, Parser... parsers);  CompositeParser(); Map<MediaType, Parser> getParsers(ParseContext context); Map<MediaType, List<Parser>> findDuplicateParsers(
            ParseContext context); MediaTypeRegistry getMediaTypeRegistry(); void setMediaTypeRegistry(MediaTypeRegistry registry); List<Parser> getAllComponentParsers(); Map<MediaType, Parser> getParsers(); void setParsers(Map<MediaType, Parser> parsers); Parser getFallback(); void setFallback(Parser fallback); Set<MediaType> getSupportedTypes(ParseContext context); void parse(
            InputStream stream, ContentHandler handler,
            Metadata metadata, ParseContext context);  }
@Test @SuppressWarnings("serial") public void testFindDuplicateParsers() { Parser a = new EmptyParser() { public Set<MediaType> getSupportedTypes(ParseContext context) { return Collections.singleton(MediaType.TEXT_PLAIN); } }; Parser b = new EmptyParser() { public Set<MediaType> getSupportedTypes(ParseContext context) { return Collections.singleton(MediaType.TEXT_PLAIN); } }; Parser c = new EmptyParser() { public Set<MediaType> getSupportedTypes(ParseContext context) { return Collections.singleton(MediaType.OCTET_STREAM); } }; CompositeParser composite = new CompositeParser( MediaTypeRegistry.getDefaultRegistry(), a, b, c); Map<MediaType, List<Parser>> duplicates = composite.findDuplicateParsers(new ParseContext()); assertEquals(1, duplicates.size()); List<Parser> parsers = duplicates.get(MediaType.TEXT_PLAIN); assertNotNull(parsers); assertEquals(2, parsers.size()); assertEquals(a, parsers.get(0)); assertEquals(b, parsers.get(1)); }