1 package com.atlassian.plugin.descriptors;
2
3 import com.atlassian.plugin.ModuleDescriptorFactory;
4 import com.atlassian.plugin.ModuleDescriptor;
5 import com.atlassian.plugin.PluginParseException;
6
7
8
9
10
11 public class ChainModuleDescriptorFactory implements ModuleDescriptorFactory
12 {
13 private final ModuleDescriptorFactory[] factories;
14
15 public ChainModuleDescriptorFactory(ModuleDescriptorFactory... factories)
16 {
17 this.factories = factories;
18 }
19
20 public ModuleDescriptor getModuleDescriptor(String type) throws PluginParseException, IllegalAccessException, InstantiationException, ClassNotFoundException
21 {
22 ModuleDescriptor descriptor = null;
23 for (ModuleDescriptorFactory factory : factories)
24 {
25 if (factory.hasModuleDescriptor(type))
26 {
27 descriptor = factory.getModuleDescriptor(type);
28 break;
29 }
30 }
31 return descriptor;
32 }
33
34 public boolean hasModuleDescriptor(String type)
35 {
36 boolean found = false;
37 for (ModuleDescriptorFactory factory : factories)
38 {
39 if (factory.hasModuleDescriptor(type))
40 {
41 found = true;
42 break;
43 }
44 }
45 return found;
46 }
47
48 public Class<? extends ModuleDescriptor> getModuleDescriptorClass(String type)
49 {
50 Class<? extends ModuleDescriptor> descriptorClass = null;
51 for (ModuleDescriptorFactory factory : factories)
52 {
53 descriptorClass = factory.getModuleDescriptorClass(type);
54 if (descriptorClass != null)
55 break;
56 }
57 return descriptorClass;
58 }
59 }