1 package org.apache.maven.doxia.parser.module;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Collection;
23 import java.util.LinkedHashMap;
24 import java.util.Map;
25
26 import org.codehaus.plexus.component.annotations.Component;
27 import org.codehaus.plexus.component.annotations.Requirement;
28
29
30
31
32
33
34 @Component( role = ParserModuleManager.class )
35 public class DefaultParserModuleManager
36 implements ParserModuleManager
37 {
38 @SuppressWarnings( "MismatchedQueryAndUpdateOfCollection" )
39 @Requirement( role = ParserModule.class )
40 private Map<String, ParserModule> parserModules;
41
42 private Collection<ParserModule> parserModulesValues;
43
44
45
46
47
48
49 public Collection<ParserModule> getParserModules()
50 {
51 if ( parserModulesValues == null )
52 {
53 Map<Class<?>, ParserModule> parserModulesTmp = new LinkedHashMap<>();
54 for ( ParserModule module : parserModules.values() )
55 {
56 parserModulesTmp.put( module.getClass(), module );
57 }
58 parserModulesValues = parserModulesTmp.values();
59 }
60
61 return parserModulesValues;
62 }
63
64
65 public ParserModule getParserModule( String id )
66 throws ParserModuleNotFoundException
67 {
68 ParserModule parserModule = parserModules.get( id );
69
70 if ( parserModule == null )
71 {
72 throw new ParserModuleNotFoundException( "Cannot find parser module id = " + id );
73 }
74
75 return parserModule;
76 }
77 }