1 package com.atlassian.maven.plugins.amps.codegen.jira;
2
3 import java.io.File;
4 import java.lang.reflect.Field;
5 import java.net.MalformedURLException;
6 import java.net.URL;
7 import java.net.URLClassLoader;
8 import java.util.ArrayList;
9 import java.util.Collection;
10 import java.util.Collections;
11 import java.util.List;
12
13
14
15
16 public class ActionTypeFactory
17 {
18 protected static List<String> availableActionTypes;
19
20 public static void locateAvailableActionTypes(List<String> classpathElements) throws MalformedURLException
21 {
22 List<URL> classpathURLs = new ArrayList<URL>();
23 for (String path : classpathElements)
24 {
25 File aFile = new File(path);
26 classpathURLs.add(aFile.toURI()
27 .toURL());
28 }
29
30 URLClassLoader productClassLoader = URLClassLoader.newInstance(classpathURLs.toArray(new URL[]{}));
31
32 try
33 {
34 Class workflowClass = productClassLoader.loadClass("com.atlassian.jira.workflow.JiraWorkflow");
35 Field allTypesField = workflowClass.getField("ACTION_TYPE_ALL");
36 Collection<String> allTypes = (Collection<String>) allTypesField.get(null);
37 availableActionTypes = new ArrayList<String>(allTypes);
38
39 } catch (Exception e)
40 {
41
42 }
43
44 }
45
46 public static List<String> getAvailableActionTypes()
47 {
48 if (null == availableActionTypes)
49 {
50 availableActionTypes = new ArrayList<String>();
51 }
52
53 Collections.sort(availableActionTypes);
54
55 return Collections.unmodifiableList(availableActionTypes);
56 }
57 }