/plugin-module-codegen-maven-client/src/main/java/com/atlassian/maven/plugins/amps/codegen/jira/CustomFieldSearcherFactory.java

https://bitbucket.org/mmeinhold/amps · Java · 44 lines · 33 code · 8 blank · 3 comment · 1 complexity · 763e42097f221eae2a7e4ddc308fefc6 MD5 · raw file

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