1 package com.atlassian.maven.plugins.amps.codegen.jira;
2
3
4 import java.io.File;
5 import java.net.URL;
6 import java.net.URLClassLoader;
7 import java.util.*;
8
9 import com.atlassian.maven.plugins.amps.codegen.annotations.asm.CustomFieldTypeLocator;
10
11
12
13
14 public class CustomFieldTypeFactory
15 {
16 protected static Map<String, String> fields = new TreeMap<String, String>();
17
18 public static void locateAvailableCustomFieldTypes(List<String> classpathElements) throws Exception
19 {
20 List<URL> fieldURLs = new ArrayList<URL>();
21 for (String path : classpathElements)
22 {
23 File aFile = new File(path);
24 fieldURLs.add(aFile.toURI()
25 .toURL());
26 }
27
28 URLClassLoader fieldLoader = URLClassLoader.newInstance(fieldURLs.toArray(new URL[]{}));
29 ClassLoader oldLoader = Thread.currentThread()
30 .getContextClassLoader();
31 Thread.currentThread()
32 .setContextClassLoader(fieldLoader);
33
34 CustomFieldTypeLocator locator = new CustomFieldTypeLocator(fields);
35 locator.parse();
36
37 Thread.currentThread()
38 .setContextClassLoader(oldLoader);
39 }
40
41 public static Map<String, String> getAvailableCustomFieldTypes()
42 {
43 return Collections.unmodifiableMap(fields);
44 }
45 }