Package edu.umd.cs.findbugs.ba
Class URLClassPath
- java.lang.Object
-
- edu.umd.cs.findbugs.ba.URLClassPath
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.AutoCloseable
public class URLClassPath extends java.lang.Object implements java.lang.AutoCloseable, java.io.Serializable
A work-alike class to use instead of BCEL's ClassPath class. The main difference is that URLClassPath can load classfiles from URLs.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static interface
URLClassPath.Entry
Interface describing a single classpath entry.private static class
URLClassPath.LocalArchiveEntry
Classpath entry class to load files from a zip/jar file in the local filesystem.private static class
URLClassPath.LocalDirectoryEntry
Classpath entry class to load files from a directory in the local filesystem.private static class
URLClassPath.RemoteArchiveEntry
Classpath entry class to load files from a remote archive URL.private static class
URLClassPath.RemoteDirectoryEntry
Classpath entry class to load files from a remote directory URL.
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<java.lang.String>
classesThatCantBeFound
private java.util.List<URLClassPath.Entry>
entryList
private static long
serialVersionUID
-
Constructor Summary
Constructors Constructor Description URLClassPath()
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addURL(java.lang.String fileName)
Add given filename/URL to the classpath.void
close()
Close all underlying resources.java.lang.String
getClassPath()
Return the classpath string.static java.lang.String
getFileExtension(java.lang.String fileName)
Get the file extension of given fileName.private java.io.InputStream
getInputStreamForResource(java.lang.String resourceName)
Open a stream to read given resource.static java.lang.String
getURLProtocol(java.lang.String urlString)
Get the URL protocol of given URL string.static boolean
isArchiveExtension(java.lang.String fileExtension)
Determine if given file extension indicates an archive file.org.apache.bcel.classfile.JavaClass
lookupClass(java.lang.String className)
Look up a class from the classpath.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
entryList
private final java.util.List<URLClassPath.Entry> entryList
-
classesThatCantBeFound
private final java.util.Set<java.lang.String> classesThatCantBeFound
-
-
Method Detail
-
addURL
public void addURL(java.lang.String fileName) throws java.io.IOException
Add given filename/URL to the classpath. If no URL protocol is given, the filename is assumed to be a local file or directory. Remote directories must be specified with a "/" character at the end of the URL.- Parameters:
fileName
- filename or URL of codebase (directory or archive file)- Throws:
java.io.IOException
- if entry is invalid or does not exist
-
getClassPath
public java.lang.String getClassPath()
Return the classpath string.- Returns:
- the classpath string
-
getInputStreamForResource
private java.io.InputStream getInputStreamForResource(java.lang.String resourceName)
Open a stream to read given resource.- Parameters:
resourceName
- name of resource to load, e.g. "java/lang/Object.class"- Returns:
- input stream to read resource, or null if resource could not be found
- Throws:
java.io.IOException
- if an IO error occurs trying to determine whether or not the resource exists
-
lookupClass
public org.apache.bcel.classfile.JavaClass lookupClass(java.lang.String className) throws java.lang.ClassNotFoundException
Look up a class from the classpath.- Parameters:
className
- name of class to look up- Returns:
- the JavaClass object for the class
- Throws:
java.lang.ClassNotFoundException
- if the class couldn't be found
-
close
public void close()
Close all underlying resources.- Specified by:
close
in interfacejava.lang.AutoCloseable
-
getURLProtocol
public static java.lang.String getURLProtocol(java.lang.String urlString)
Get the URL protocol of given URL string.- Parameters:
urlString
- the URL string- Returns:
- the protocol name ("http", "file", etc.), or null if there is no protocol
-
getFileExtension
public static java.lang.String getFileExtension(java.lang.String fileName)
Get the file extension of given fileName.- Returns:
- the file extension, or null if there is no file extension
-
isArchiveExtension
public static boolean isArchiveExtension(java.lang.String fileExtension)
Determine if given file extension indicates an archive file.- Parameters:
fileExtension
- the file extension (e.g., ".jar")- Returns:
- true if the file extension indicates an archive, false otherwise
-
-