in velocity-tools-generic/src/main/java/org/apache/velocity/tools/ClassUtils.java [143:189]
public static List<URL> getResources(String name, Object caller)
{
Set<String> urls = new LinkedHashSet<String>();
// try to load all from the current thread context classloader
addResources(name, urls, getThreadContextLoader());
// try to load all from this class' classloader
if (!addResources(name, urls, getClassLoader()))
{
// ok, try to load one directly from this class
addResource(name, urls, ClassUtils.class);
}
// try to load all from the classloader of the calling class
if (!addResources(name, urls, getCallerLoader(caller)))
{
// try to load one directly from the calling class
addResource(name, urls, caller.getClass());
}
if (!urls.isEmpty())
{
List<URL> result = new ArrayList<URL>(urls.size());
try
{
for (String url : urls)
{
result.add(new URL(url));
}
}
catch (MalformedURLException mue)
{
throw new IllegalStateException("A URL could not be recreated from its own toString() form", mue);
}
return result;
}
else if (!name.startsWith("/"))
{
// try again with a / in front of the name
return getResources("/"+name, caller);
}
else
{
return Collections.emptyList();
}
}