Class ClassLoaders


  • public final class ClassLoaders
    extends Object
    Utility methods around the ClassLoader.
    • Method Detail

      • getSubresources

        public static Map<String,​URL> getSubresources​(@Nullable
                                                            ClassLoader classLoader,
                                                            String name,
                                                            boolean includeDirectories,
                                                            boolean recurse)
                                                     throws IOException
        Returns a name-to-URL mapping of all resources "under" a given directory name.

        Iff the name does not end with a slash, then calling this method is equivalent with calling ClassLoader.getResource(String).

        Otherwise, if the name does end with a slash, then this method returns a name-to-URL mapping of all content resources who's names begin with the given name. Iff recurse is false, then only immediate subresources are included. Iff includeDirectories is true, then also directory resources are included in the result set; their names all ending with a slash.

        If multiple resources have the name, then the resources are retrieved from the first occurrence.

        Parameters:
        classLoader - The class loader to use; null means use the system class loader
        name - No leading slash
        Returns:
        Keys ending with a slash map to "directory resources", the other keys map to "content resources"
        Throws:
        IOException
      • getSubresourcesOf

        public static Map<String,​URL> getSubresourcesOf​(URL root,
                                                              String rootName,
                                                              boolean includeDirectories,
                                                              boolean recurse)
                                                       throws IOException
        Returns a name-to-URL mapping of all resources "under" a given root resource.

        If the root designates a "content resource" (as opposed to a "directory resource"), then the method returns Collections.singletonMap(name, rootName).

        Otherwise, if the root designates a "directory resource", then this method returns a name-to-URL mapping of all content resources that are located "under" the root resource. Iff recurse is false, then only immediate subresources are included. Iff includeDirectories is true, then directory resources are also included in the result set; their names all ending with a slash.

        Returns:
        Keys ending with a slash map to "directory resources", the other keys map to "content resources"
        Throws:
        IOException