1 package com.atlassian.plugin.descriptors;
2
3 import com.atlassian.plugin.ModuleDescriptor;
4 import com.atlassian.plugin.ModuleDescriptorFactory;
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(final ModuleDescriptorFactory... factories)
16 {
17 this.factories = factories;
18 }
19
20 public ModuleDescriptor<?> getModuleDescriptor(final String type) throws PluginParseException, IllegalAccessException, InstantiationException, ClassNotFoundException
21 {
22 for (final ModuleDescriptorFactory factory : factories)
23 {
24 if (factory.hasModuleDescriptor(type))
25 {
26 return factory.getModuleDescriptor(type);
27 }
28 }
29 return null;
30 }
31
32 public boolean hasModuleDescriptor(final String type)
33 {
34 for (final ModuleDescriptorFactory factory : factories)
35 {
36 if (factory.hasModuleDescriptor(type))
37 {
38 return true;
39 }
40 }
41 return false;
42 }
43
44 public Class<? extends ModuleDescriptor> getModuleDescriptorClass(final String type)
45 {
46 for (final ModuleDescriptorFactory factory : factories)
47 {
48 final Class<? extends ModuleDescriptor> descriptorClass = factory.getModuleDescriptorClass(type);
49 if (descriptorClass != null)
50 {
51 return descriptorClass;
52 }
53 }
54 return null;
55 }
56 }