View Javadoc

1   package com.atlassian.jira.plugin;
2   
3   import com.atlassian.jira.ComponentManager;
4   import com.atlassian.jira.plugin.issueoperation.ExtendedIssueOperationModuleDescriptor;
5   import com.atlassian.jira.plugin.issueoperation.LinkerIssueOperationModuleDescriptor;
6   import com.atlassian.plugin.DefaultModuleDescriptorFactory;
7   import com.atlassian.plugin.ModuleDescriptorFactory;
8   
9   /**
10   * FQCN : com.atlassian.jira.plugin.KaamelotModuleDescriptorFactoryExtender
11   * @author Kaamelot
12   * @since 3.10.1.30 
13   * Description : KaamelotModuleDescriptorFactoryExtender allows to append new ModuleDescriptor in the current ModuleDescriptorFactory  
14   */
15  public class KaamelotModuleDescriptorFactoryExtender {
16  
17  	/** Extension done in a static Block
18  	 * See http://developer.atlassian.com/jira/browse/KAAM-196
19  	 */
20  	static {
21  		extendModuleDescriptorFactory((ModuleDescriptorFactory)(ComponentManager.getComponentInstanceOfType(ModuleDescriptorFactory.class)));
22  	}
23  
24  	/** Constructor 
25  	 */
26  	public KaamelotModuleDescriptorFactoryExtender() {
27  	}
28  	
29  	/** Extends ModuleDescriptor list if ModuleDescriptorFactory is an DefaultModuleDescriptorFactory 
30  	 * @param moduleDescriptorFactory
31  	 */
32  	protected static void extendModuleDescriptorFactory(ModuleDescriptorFactory moduleDescriptorFactory) {
33  		if (moduleDescriptorFactory instanceof DefaultModuleDescriptorFactory) {
34  			extendModuleDescriptorFactory((DefaultModuleDescriptorFactory)moduleDescriptorFactory);
35  		}
36  	}
37  
38  	/** Extends ModuleDescriptor list managed by the current DefaultModuleDescriptorFactory 
39  	 * @param moduleDescriptorFactory
40  	 */
41  	protected static void extendModuleDescriptorFactory(DefaultModuleDescriptorFactory moduleDescriptorFactory) {
42  		moduleDescriptorFactory.addModuleDescriptor("issue-operation-extended", ExtendedIssueOperationModuleDescriptor.class);
43  		moduleDescriptorFactory.addModuleDescriptor("issue-operation-linker", LinkerIssueOperationModuleDescriptor.class);
44  	}
45  }