Class JRLoader


  • public final class JRLoader
    extends java.lang.Object
    Utility class that helps load serialized objects found in various locations such as files, URLs, and input streams.

    Many JasperReports processes, like report compilation, report filling and exporting, often work with serialized objects. Sometimes it is useful to manually load those serialized objects before submitting them to the desired JasperReport process.

    The most interesting method exposed by this class is getLocationInputStream(String location). When calling this method to load an InputStream object from the supplied location, the program first tries to interpret the location as a valid resource name. If this fails, then the program assumes that the supplied location is the name of a file on disk and tries to read from it. If no file is found at that location, it will assume that the location represents a valid URL. Only after this third try fails an exception is thrown.

    Author:
    Teodor Danciu (teodord@users.sourceforge.net)
    • Field Detail

      • EXCEPTION_MESSAGE_KEY_BYTE_DATA_FROM_INPUT_STREAM_ERROR

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_BYTE_DATA_FROM_INPUT_STREAM_ERROR
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_BYTE_DATA_LOADING_ERROR

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_BYTE_DATA_LOADING_ERROR
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_CLASS_NOT_FOUND_FROM_FILE

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_CLASS_NOT_FOUND_FROM_FILE
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_CLASS_NOT_FOUND_FROM_INPUT_STREAM

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_CLASS_NOT_FOUND_FROM_INPUT_STREAM
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_CLASS_NOT_FOUND_FROM_URL

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_CLASS_NOT_FOUND_FROM_URL
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_FILE_OPEN_ERROR

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_FILE_OPEN_ERROR
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_INPUT_STREAM_FROM_FILE_OPEN_ERROR

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_INPUT_STREAM_FROM_FILE_OPEN_ERROR
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_INPUT_STREAM_FROM_URL_OPEN_ERROR

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_INPUT_STREAM_FROM_URL_OPEN_ERROR
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_OBJECT_FROM_FILE_LOADING_ERROR

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_OBJECT_FROM_FILE_LOADING_ERROR
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_OBJECT_FROM_INPUT_STREAM_LOADING_ERROR

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_OBJECT_FROM_INPUT_STREAM_LOADING_ERROR
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_OBJECT_FROM_URL_LOADING_ERROR

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_OBJECT_FROM_URL_LOADING_ERROR
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_RESOURCE_NOT_FOUND

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_RESOURCE_NOT_FOUND
        See Also:
        Constant Field Values
      • EXCEPTION_MESSAGE_KEY_URL_OPEN_ERROR

        public static final java.lang.String EXCEPTION_MESSAGE_KEY_URL_OPEN_ERROR
        See Also:
        Constant Field Values
    • Method Detail

      • loadObjectFromFile

        public static java.lang.Object loadObjectFromFile​(java.lang.String fileName)
                                                   throws JRException
        Throws:
        JRException
      • loadObject

        public static java.lang.Object loadObject​(java.io.File file)
                                           throws JRException
        Throws:
        JRException
      • loadObject

        public static java.lang.Object loadObject​(java.net.URL url)
                                           throws JRException
        Throws:
        JRException
      • loadObject

        public static java.lang.Object loadObject​(java.io.InputStream is)
                                           throws JRException
        Throws:
        JRException
      • getInputStream

        public static java.io.InputStream getInputStream​(java.io.File file)
                                                  throws JRException
        Throws:
        JRException
      • getInputStream

        public static java.io.InputStream getInputStream​(java.net.URL url)
                                                  throws JRException
        Throws:
        JRException
      • loadBytes

        public static byte[] loadBytes​(java.io.InputStream is)
                                throws JRException
        Throws:
        JRException
      • readBytes

        public static byte[] readBytes​(java.io.InputStream is)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • loadBytesFromResource

        public static byte[] loadBytesFromResource​(java.lang.String resourceName)
                                            throws JRException
        Throws:
        JRException
      • loadBytesFromResource

        public static byte[] loadBytesFromResource​(java.lang.String resourceName,
                                                   java.lang.ClassLoader classLoader)
                                            throws JRException
        Throws:
        JRException
      • getLocationInputStream

        public static java.io.InputStream getLocationInputStream​(java.lang.String location)
                                                          throws JRException
        Tries to open an input stream for a location.

        The method tries to interpret the location as a file name, a resource name or an URL. If any of these succeed, an input stream is created and returned.

        Parameters:
        location - the location
        Returns:
        an input stream if the location is an existing file name, a resource name on the classpath or an URL or null otherwise.
        Throws:
        JRException
      • getFileInputStream

        public static java.io.InputStream getFileInputStream​(java.lang.String filename)
                                                      throws JRException
        Tries to open a file for reading.
        Parameters:
        filename - the file name
        Returns:
        an input stream for the file or null if the file was not found
        Throws:
        JRException
      • getResourceInputStream

        public static java.io.InputStream getResourceInputStream​(java.lang.String resource)
        Tries to open an input stream for a resource.
        Parameters:
        resource - the resource name
        Returns:
        an input stream for the resource or null if the resource was not found
      • getResources

        public static java.util.List<java.net.URL> getResources​(java.lang.String resource)
        Scans the context classloader and the classloader of this class for all resources that have a specified name, and returns a list of URLs for the found resources.
        Parameters:
        resource - the resource names
        Returns:
        a list of URLs of resources with the specified name; the list is empty if no resources have been found for the name
        See Also:
        ClassLoader.getResources(String)
      • collectResources

        protected static void collectResources​(java.lang.String resourceName,
                                               java.lang.ClassLoader classLoader,
                                               java.util.Set<java.net.URL> resources)
      • getClassLoaderResources

        public static java.util.List<ClassLoaderResource> getClassLoaderResources​(java.lang.String resource)
        Scans the context classloader and the classloader of this class for all resources that have a specified name, and returns a list of ClassLoaderResource objects for the found resources.

        The returned list contains the URLs of the resources, and for each resource the highest classloader in the classloader hierarchy on which the resource was found.

        Parameters:
        resource - the resource names
        Returns:
        a list of resources with the specified name; the list is empty if no resources have been found for the name
        See Also:
        ClassLoader.getResources(String)
      • collectResources

        protected static void collectResources​(java.lang.String resourceName,
                                               java.lang.ClassLoader classLoader,
                                               java.util.Map<java.net.URL,​ClassLoaderResource> resources)
      • getResource

        public static java.net.URL getResource​(java.lang.String resource)
        Returns the resource URL for a specified resource name.
        Parameters:
        resource - the resource name
        Returns:
        the URL of the resource having the specified name, or null if none found
        See Also:
        ClassLoader.getResource(String)
      • getURLInputStream

        public static java.io.InputStream getURLInputStream​(java.lang.String spec)
                                                     throws JRException
        Tries to open an input stream for an URL.
        Parameters:
        spec - the string to parse as an URL
        Returns:
        an input stream for the URL or null if spec is not a valid URL
        Throws:
        JRException