Interface ClassLoaderService

    • Method Detail

      • classForName

        <T> Class<T> classForName​(String className)
        Locate a class by name.
        Type Parameters:
        T - The returned class type.
        Parameters:
        className - The name of the class to locate
        Returns:
        The class reference
        Throws:
        ClassLoadingException - Indicates the class could not be found
      • locateResource

        URL locateResource​(String name)
        Locate a resource by name (classpath lookup).
        Parameters:
        name - The resource name.
        Returns:
        The located URL; may return null to indicate the resource was not found
      • locateResourceStream

        InputStream locateResourceStream​(String name)
        Locate a resource by name (classpath lookup) and gets its stream.
        Parameters:
        name - The resource name.
        Returns:
        The stream of the located resource; may return null to indicate the resource was not found
      • locateResources

        List<URL> locateResources​(String name)
        Locate a series of resource by name (classpath lookup).
        Parameters:
        name - The resource name.
        Returns:
        The list of URL matching; may return null to indicate the resource was not found
      • loadJavaServices

        <S> Collection<S> loadJavaServices​(Class<S> serviceContract)
        Discovers and instantiates implementations of the named service contract.

        NOTE : the terms service here is used differently than Service. Instead here we are talking about services as defined by ServiceLoader.

        Type Parameters:
        S - The type of the service contract
        Parameters:
        serviceContract - The java type defining the service contract
        Returns:
        The ordered set of discovered services.
      • packageForNameOrNull

        Package packageForNameOrNull​(String packageName)
        Loading a Package from the classloader. In case it's not found or an internal error (such as @see LinkageError occurs, we return null rather than throwing an exception. This is significantly different than loading a Class, as in all currently known usages, being unable to load the Package will only result in ignoring annotations on it - which is totally fine when the object doesn't exist. In case of other errors, implementations are expected to log a warning but it's still not treated as a fatal error.
        Parameters:
        packageName -
        Returns:
        the matching Package, or null.