1 package com.atlassian.jira.plugin.issueoperation;
2
3 import java.util.List;
4 import java.util.Map;
5
6 import org.apache.log4j.Category;
7 import org.dom4j.Element;
8
9 import com.atlassian.jira.issue.link.IssueLinker;
10 import com.atlassian.jira.plugin.MakeConditionHelper;
11 import com.atlassian.jira.plugin.PluginParserAssertions;
12 import com.atlassian.jira.security.JiraAuthenticationContext;
13 import com.atlassian.jira.util.JiraUtils;
14 import com.atlassian.plugin.Plugin;
15 import com.atlassian.plugin.PluginParseException;
16
17
18
19
20
21
22
23 public class LinkerIssueOperationModuleDescriptor extends IssueOperationModuleDescriptor {
24
25 public static final String ISSUE_LINKER = "issue-linker";
26
27 protected static Category log = Category.getInstance(LinkerIssueOperationModuleDescriptor.class);
28
29 protected MakeConditionHelper makeConditionHelper;
30
31 protected IssueLinker issueLinker;
32
33 public LinkerIssueOperationModuleDescriptor(JiraAuthenticationContext _authenticationContext) {
34 super(_authenticationContext);
35 makeConditionHelper = MakeConditionHelper.getInstance();
36 }
37
38
39
40
41
42 public void init(Plugin plugin, Element element) throws PluginParseException {
43 super.init(plugin, element);
44 initLinker(plugin, element);
45 }
46
47 protected void initLinker(Plugin plugin, Element element) throws PluginParseException {
48 List issueLinkerElements = element.elements(ISSUE_LINKER);
49 PluginParserAssertions.assertElementOccursOnce(issueLinkerElements, ISSUE_LINKER);
50 issueLinker = makeIssueLinker((Element) issueLinkerElements.get(0));
51 }
52
53 protected IssueLinker makeIssueLinker(Element _element) throws PluginParseException {
54 IssueLinker issueLinker = loadIssueLinker(_element.attributeValue("class"));
55 return issueLinker;
56 }
57
58 public IssueLinker loadIssueLinker(String className) throws PluginParseException {
59 try {
60 return (IssueLinker) JiraUtils.loadComponent(className, this.getClass());
61 } catch (Exception e) {
62 throw new PluginParseException(e);
63 }
64 }
65
66
67
68
69 public IssueLinker getIssueLinker() {
70 return issueLinker;
71 }
72 }