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 @Requirement( role = ParserModule.class )
39 private Map<String, ParserModule> parserModules;
40
41 private Collection<ParserModule> parserModulesValues;
42
43
44 public Collection<ParserModule> getParserModules()
45 {
46 if ( parserModulesValues == null )
47 {
48 Map<Class<?>, ParserModule> parserModulesTmp = new LinkedHashMap<Class<?>, ParserModule>();
49 for ( ParserModule module : parserModules.values() )
50 {
51 parserModulesTmp.put( module.getClass(), module );
52 }
53 parserModulesValues = parserModulesTmp.values();
54 }
55
56 return parserModulesValues;
57 }
58
59
60 public ParserModule getParserModule( String id )
61 throws ParserModuleNotFoundException
62 {
63 ParserModule parserModule = parserModules.get( id );
64
65 if ( parserModule == null )
66 {
67 throw new ParserModuleNotFoundException( "Cannot find parser module id = " + id );
68 }
69
70 return parserModule;
71 }
72 }