Improved addClassPath and addJars behavior

+ Less code
+ Corrected javadoc
This commit is contained in:
Joakim Erdfelt 2022-10-17 15:19:32 -05:00
parent 3e8697f926
commit a454150e7f
No known key found for this signature in database
GPG Key ID: 2D0E1FB8FE4B68B4
1 changed files with 13 additions and 32 deletions

View File

@ -223,38 +223,20 @@ public class WebAppClassLoader extends URLClassLoader implements ClassVisibility
}
/**
* @param resource Comma or semicolon separated path of filenames or URLs
* pointing to directories or jar files. Directories should end
* with '/'.
* @param resources The resources to add to the classpath
* @throws IOException if unable to add classpath from resource
*/
public void addClassPath(Resource resource)
public void addClassPath(Resource resources)
throws IOException
{
if (resource instanceof ResourceCollection)
for (Resource resource: resources)
{
for (Resource r : ((ResourceCollection)resource).getResources())
{
addClassPath(r);
}
}
else
{
// Resolve file path if possible
Path path = resource.getPath();
if (path != null)
{
URL url = resource.getURI().toURL();
addURL(url);
}
else if (resource.isDirectory())
{
if (resource.exists())
addURL(resource.getURI().toURL());
}
else
{
if (LOG.isDebugEnabled())
LOG.debug("Check file exists and is not nested jar: {}", resource);
LOG.debug("Check resource exists and is not a nested jar: {}", resource);
throw new IllegalArgumentException("File not resolvable or incompatible with URLClassloader: " + resource);
}
}
@ -273,11 +255,7 @@ public class WebAppClassLoader extends URLClassLoader implements ClassVisibility
return;
List<URI> uris = URIUtil.split(classPath);
ResourceCollection rc = _resourceFactory.newResource(uris);
for (Resource resource : rc.getResources())
{
addClassPath(resource);
}
addClassPath(_resourceFactory.newResource(uris));
}
/**
@ -298,13 +276,16 @@ public class WebAppClassLoader extends URLClassLoader implements ClassVisibility
* Add elements to the class path for the context from the jar and zip files found
* in the specified resource.
*
* @param lib the resource that contains the jar and/or zip files.
* @param libs the resource that contains the jar and/or zip files.
*/
public void addJars(Resource lib)
public void addJars(Resource libs)
{
if (lib.exists() && lib.isDirectory())
if (libs == null || !libs.exists() || !libs.isDirectory())
return;
for (Resource libDir: libs)
{
Path dir = lib.getPath();
Path dir = libDir.getPath();
try (Stream<Path> streamEntries = Files.list(dir))
{