Class JRResourcesUtil


  • public final class JRResourcesUtil
    extends java.lang.Object
    Provides methods for resource resolution via class loaders or URL stream handlers.
    Author:
    Lucian Chirita (lucianc@users.sourceforge.net)
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static java.net.URL createURL​(java.lang.String spec, java.net.URLStreamHandlerFactory urlHandlerFactory)
      Tries to parse a String as an URL.
      protected static java.io.File defaultLocateFile​(java.lang.String location)  
      static java.net.URL findClassLoaderResource​(java.lang.String location, java.lang.ClassLoader clsLoader)
      Attempts to find a resource using a class loader.
      static java.net.URL findClassLoaderResource​(java.lang.String location, java.lang.ClassLoader clsLoader, java.lang.Class<?> clazz)
      static java.lang.ClassLoader getClassLoader​(java.lang.ClassLoader clsLoader)
      Returns a class loader.
      static java.lang.ClassLoader getGlobalClassLoader()
      Returns the global class loader.
      static java.lang.ClassLoader getThreadClassLoader()
      Returns the thread local class loader.
      static java.net.URLStreamHandler getURLHandler​(java.lang.String spec, java.net.URLStreamHandlerFactory urlHandlerFact)
      Returns an URL stream handler for an URL specified as a String.
      static java.util.ResourceBundle loadResourceBundle​(java.lang.String baseName, java.util.Locale locale)
      Loads a resource bundle for a given base name and locale.
      static java.util.ResourceBundle loadResourceBundle​(java.lang.String baseName, java.util.Locale locale, java.lang.ClassLoader clsLoader)
      Loads a resource bundle for a given base name and locale.
      static java.util.ResourceBundle loadResourceBundle​(JasperReportsContext jasperReportsContext, java.lang.String baseName, java.util.Locale locale)
      Loads a resource bundle for a given base name and locale.
      static java.util.ResourceBundle loadResourceBundle​(RepositoryContext repositoryContext, java.lang.String baseName, java.util.Locale locale)  
      protected static java.io.File locateContextDirectory​(RepositoryResourceContext resourceContext, java.util.function.Function<java.lang.String,​java.io.File> rootLocator)  
      protected static java.io.File locateFile​(RepositoryResourceContext resourceContext, java.lang.String location, java.util.function.Function<java.lang.String,​java.io.File> rootLocator)  
      static void resetClassLoader()
      Resets the the thread local class loader to its previous value.
      static java.io.File resolveFile​(java.lang.String location, FileResolver fileRes)
      Deprecated.
      To be removed.
      static java.io.File resolveFile​(RepositoryContext context, java.lang.String location)  
      static java.io.File resolveFile​(RepositoryContext context, java.lang.String location, java.util.function.Function<java.lang.String,​java.io.File> rootLocator)  
      static void setGlobalClassLoader​(java.lang.ClassLoader classLoader)
      Sets a global class loader to be used for resource resolution.
      static void setThreadClassLoader​(java.lang.ClassLoader classLoader)
      Sets the thread local class loader.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • createURL

        public static java.net.URL createURL​(java.lang.String spec,
                                             java.net.URLStreamHandlerFactory urlHandlerFactory)
        Tries to parse a String as an URL.
        Parameters:
        spec - the String to parse
        urlHandlerFactory - an URL stream handler factory to use
        Returns:
        an URL if the parsing is successful
        See Also:
        getURLHandler(String, URLStreamHandlerFactory)
      • getURLHandler

        public static java.net.URLStreamHandler getURLHandler​(java.lang.String spec,
                                                              java.net.URLStreamHandlerFactory urlHandlerFact)
        Returns an URL stream handler for an URL specified as a String.
        Parameters:
        spec - the String to parse as an URL
        urlHandlerFact - an URL stream handler factory
        Returns:
        an URL stream handler if one was found for the protocol of the URL
      • resolveFile

        public static java.io.File resolveFile​(java.lang.String location,
                                               FileResolver fileRes)
        Deprecated.
        To be removed.
        Attempts to find a file using a file resolver.
        Parameters:
        location - file name
        fileRes - a file resolver
        Returns:
        the file, if found
      • resolveFile

        public static java.io.File resolveFile​(RepositoryContext context,
                                               java.lang.String location)
      • resolveFile

        public static java.io.File resolveFile​(RepositoryContext context,
                                               java.lang.String location,
                                               java.util.function.Function<java.lang.String,​java.io.File> rootLocator)
      • defaultLocateFile

        protected static java.io.File defaultLocateFile​(java.lang.String location)
      • locateFile

        protected static java.io.File locateFile​(RepositoryResourceContext resourceContext,
                                                 java.lang.String location,
                                                 java.util.function.Function<java.lang.String,​java.io.File> rootLocator)
      • locateContextDirectory

        protected static java.io.File locateContextDirectory​(RepositoryResourceContext resourceContext,
                                                             java.util.function.Function<java.lang.String,​java.io.File> rootLocator)
      • getClassLoader

        public static java.lang.ClassLoader getClassLoader​(java.lang.ClassLoader clsLoader)
        Returns a class loader.

        The first not null value from the following is returned:

        • the value of the parameter
        • the thread local class loader
        • the global class loader
        Parameters:
        clsLoader - a class loader that will be returned if not null
        Returns:
        a class loader.
        See Also:
        setGlobalClassLoader(ClassLoader), setThreadClassLoader(ClassLoader)
      • getGlobalClassLoader

        public static java.lang.ClassLoader getGlobalClassLoader()
        Returns the global class loader.
        Returns:
        the global class loader.
        See Also:
        setGlobalClassLoader(ClassLoader)
      • getThreadClassLoader

        public static java.lang.ClassLoader getThreadClassLoader()
        Returns the thread local class loader.
        Returns:
        the thread local class loader.
        See Also:
        setThreadClassLoader(ClassLoader)
      • setThreadClassLoader

        public static void setThreadClassLoader​(java.lang.ClassLoader classLoader)
        Sets the thread local class loader.
        Parameters:
        classLoader - a class loader
        See Also:
        getClassLoader(ClassLoader)
      • resetClassLoader

        public static void resetClassLoader()
        Resets the the thread local class loader to its previous value.
      • setGlobalClassLoader

        public static void setGlobalClassLoader​(java.lang.ClassLoader classLoader)
        Sets a global class loader to be used for resource resolution.
        Parameters:
        classLoader - the class loader
        See Also:
        getClassLoader(ClassLoader)
      • findClassLoaderResource

        public static java.net.URL findClassLoaderResource​(java.lang.String location,
                                                           java.lang.ClassLoader clsLoader,
                                                           java.lang.Class<?> clazz)
        Attempts to find a resource using a class loader.

        The following sources are tried:

        Parameters:
        location - the resource name
        clsLoader - a class loader
        clazz - a class
        Returns:
        the resource URL if found
      • findClassLoaderResource

        public static java.net.URL findClassLoaderResource​(java.lang.String location,
                                                           java.lang.ClassLoader clsLoader)
        Attempts to find a resource using a class loader.

        The following sources are tried:

        • the class loader returned by getClassLoader(ClassLoader)
        • the context class loader
        • JRLoader.class.getClassLoader()
        • JRLoader.class.getResource()
        Parameters:
        location - the resource name
        clsLoader - a class loader
        Returns:
        the resource URL if found
      • loadResourceBundle

        public static java.util.ResourceBundle loadResourceBundle​(JasperReportsContext jasperReportsContext,
                                                                  java.lang.String baseName,
                                                                  java.util.Locale locale)
        Loads a resource bundle for a given base name and locale.

        This methods calls loadResourceBundle(String, Locale, ClassLoader) with a null classloader.

        Parameters:
        baseName - the base name
        locale - the locale
        Returns:
        the resource bundle for the given base name and locale
      • loadResourceBundle

        public static java.util.ResourceBundle loadResourceBundle​(RepositoryContext repositoryContext,
                                                                  java.lang.String baseName,
                                                                  java.util.Locale locale)
      • loadResourceBundle

        public static java.util.ResourceBundle loadResourceBundle​(java.lang.String baseName,
                                                                  java.util.Locale locale)
        Loads a resource bundle for a given base name and locale.

        This methods calls loadResourceBundle(String, Locale, ClassLoader) with a null classloader.

        Parameters:
        baseName - the base name
        locale - the locale
        Returns:
        the resource bundle for the given base name and locale
      • loadResourceBundle

        public static java.util.ResourceBundle loadResourceBundle​(java.lang.String baseName,
                                                                  java.util.Locale locale,
                                                                  java.lang.ClassLoader clsLoader)
        Loads a resource bundle for a given base name and locale.

        The method attempts to load the resource bundle using the following classloaders (and stops at the first successful attempt):

        Parameters:
        baseName - the base name
        locale - the locale
        clsLoader -
        Returns:
        the resource bundle for the given base name and locale
        See Also:
        ResourceBundle.getBundle(String, Locale, ClassLoader)