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