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