1 package com.github.searls.jasmine.mojo; 2 3 import org.apache.maven.plugin.MojoExecutionException; 4 import org.apache.maven.project.MavenProject; 5 import org.codehaus.plexus.resource.ResourceManager; 6 import org.codehaus.plexus.resource.loader.FileResourceLoader; 7 8 import java.io.File; 9 10 public class ResourceRetriever { 11 12 private final ResourceManager locator; 13 14 private static final String ERROR_FILE_DNE = "Invalid value for parameter '%s'. File does not exist: %s"; 15 16 public ResourceRetriever(final ResourceManager locator) { 17 this.locator = locator; 18 } 19 20 public File getResourceAsFile(final String parameter, final String resourceLocation, final MavenProject mavenProject) throws MojoExecutionException { 21 File file = null; 22 23 if (resourceLocation != null) { 24 locator.addSearchPath("url", ""); 25 locator.addSearchPath(FileResourceLoader.ID, mavenProject.getFile().getParentFile().getAbsolutePath()); 26 27 ClassLoader origLoader = Thread.currentThread().getContextClassLoader(); 28 try { 29 Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); 30 try { 31 file = locator.getResourceAsFile(resourceLocation); 32 } catch (Exception e) { 33 throw new MojoExecutionException(String.format(ERROR_FILE_DNE, parameter, resourceLocation)); 34 } 35 } finally { 36 Thread.currentThread().setContextClassLoader(origLoader); 37 } 38 } 39 return file; 40 } 41 }