1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codehaus.gmaven.plugin;
17
18 import java.io.File;
19 import java.net.MalformedURLException;
20 import java.net.URL;
21 import java.util.List;
22
23 import javax.annotation.Nullable;
24
25 import org.codehaus.gmaven.adapter.ClassSource;
26 import org.codehaus.gmaven.adapter.ResourceLoader;
27
28
29
30
31
32
33 public class MojoResourceLoader
34 extends BasicResourceLoader
35 {
36 private final ClassSource classSource;
37
38 private final List<File> scriptpath;
39
40 public MojoResourceLoader(final ClassLoader classLoader,
41 final @Nullable ClassSource classSource,
42 final @Nullable List<File> scriptpath)
43 {
44 super(classLoader);
45 this.classSource = classSource;
46 this.scriptpath = scriptpath;
47 }
48
49 public MojoResourceLoader(final ClassLoader classLoader,
50 final @Nullable List<File> scriptpath)
51 {
52 this(classLoader, null, scriptpath);
53 }
54
55 @Nullable
56 protected URL resolve(final String className, final ClassLoader classLoader) throws MalformedURLException {
57 String name = resourceName(className);
58
59
60 if (scriptpath != null) {
61 for (File path : scriptpath) {
62 File file = new File(path, name);
63 if (file.exists()) {
64 return file.toURI().toURL();
65 }
66 }
67 }
68
69
70 URL url = classLoader.getResource(name);
71
72
73
74 if (url == null) {
75 if (name.startsWith("/")) {
76 String tmp = name.substring(1, name.length());
77 url = classLoader.getResource(tmp);
78 }
79 }
80
81 if (url != null) {
82 return url;
83 }
84
85
86 if (classSource != null) {
87 File script = classSource.getFile();
88 if (script != null) {
89 File file = new File(script.getParentFile(), name);
90
91 if (file.exists()) {
92 return file.toURI().toURL();
93 }
94 }
95 }
96
97
98 return super.resolve(className, classLoader);
99 }
100 }