1 package org.apache.maven.doxia.module.site.manager;
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.apache.maven.doxia.module.site.SiteModule;
27 import org.codehaus.plexus.component.annotations.Component;
28 import org.codehaus.plexus.component.annotations.Requirement;
29
30
31
32
33
34
35
36
37 @Component( role = SiteModuleManager.class )
38 public class DefaultSiteModuleManager
39 implements SiteModuleManager
40 {
41 @Requirement( role = SiteModule.class )
42 private Map<String, SiteModule> siteModules;
43
44 private Collection<SiteModule> siteModulesValues;
45
46
47 public Collection<SiteModule> getSiteModules()
48 {
49 if ( siteModulesValues == null )
50 {
51 Map<Class<?>, SiteModule> siteModulesTmp = new LinkedHashMap<Class<?>, SiteModule>();
52 for ( SiteModule module : siteModules.values() )
53 {
54 siteModulesTmp.put( module.getClass(), module );
55 }
56 siteModulesValues = siteModulesTmp.values();
57 }
58
59 return siteModulesValues;
60 }
61
62
63 public SiteModule getSiteModule( String id )
64 throws SiteModuleNotFoundException
65 {
66 SiteModule siteModule = siteModules.get( id );
67
68 if ( siteModule == null )
69 {
70 throw new SiteModuleNotFoundException( "Cannot find site module id = " + id );
71 }
72
73 return siteModule;
74 }
75 }