1 package com.atlassian.plugins.codegen;
2
3 import java.util.Map;
4
5 import com.atlassian.plugins.codegen.annotations.asm.ModuleCreatorAnnotationParser;
6 import com.atlassian.plugins.codegen.modules.PluginModuleCreator;
7 import com.atlassian.plugins.codegen.modules.PluginModuleCreatorFactory;
8 import com.atlassian.plugins.codegen.modules.PluginModuleCreatorRegistry;
9
10 import org.apache.commons.lang.StringUtils;
11
12
13
14
15 public class PluginModuleCreatorFactoryImpl implements PluginModuleCreatorFactory
16 {
17
18 private final PluginModuleCreatorRegistry creatorRegistry;
19 private final ModuleCreatorAnnotationParser creatorAnnotationParser;
20
21 public PluginModuleCreatorFactoryImpl() throws Exception
22 {
23 this("");
24 }
25
26 public PluginModuleCreatorFactoryImpl(String modulePackage) throws Exception
27 {
28 this.creatorRegistry = new PluginModuleCreatorRegistryImpl();
29 this.creatorAnnotationParser = new ModuleCreatorAnnotationParser(creatorRegistry);
30 doParse(modulePackage);
31 }
32
33 @Override
34 public PluginModuleCreator getModuleCreator(String productId, Class creatorClass)
35 {
36 return creatorRegistry.getModuleCreator(productId, creatorClass);
37 }
38
39 @Override
40 public Map<Class, PluginModuleCreator> getModuleCreatorsForProduct(String productId)
41 {
42 return creatorRegistry.getModuleCreatorsForProduct(productId);
43 }
44
45 private void doParse(String packageName) throws Exception
46 {
47 if (StringUtils.isBlank(packageName))
48 {
49 creatorAnnotationParser.parse();
50 } else
51 {
52 creatorAnnotationParser.parse(packageName);
53 }
54 }
55
56 }