Package: org.grails.io.support

[Java] Class PathMatchingResourcePatternResolver

    • Constructor Detail

      • public PathMatchingResourcePatternResolver()

        Create a new PathMatchingResourcePatternResolver with a DefaultResourceLoader.

        ClassLoader access will happen via the thread context class loader.

      • public PathMatchingResourcePatternResolver(ClassLoader classLoader)

        Create a new PathMatchingResourcePatternResolver with a DefaultResourceLoader.

        Parameters:
        classLoader - the ClassLoader to load classpath resources with, or null for using the thread context class loader at the time of actual resource access

      • public PathMatchingResourcePatternResolver(ResourceLoader resourceLoader)

        Create a new PathMatchingResourcePatternResolver.

        ClassLoader access will happen via the thread context class loader.

        Parameters:
        resourceLoader - the ResourceLoader to load root directories and actual resources with

    • Method Detail

      • protected Resource convertClassLoaderURL(URL url)

        Convert the given URL as returned from the ClassLoader into a Resource object.

        The default implementation simply creates a UrlResource instance.

        Parameters:
        url - a URL as returned from the ClassLoader
        Returns:
        the corresponding Resource object
        See Also:
        ClassLoader.getResources

      • protected String determineRootDir(String location)

        Determine the root directory for the given location.

        Used for determining the starting point for file matching, resolving the root directory location to a java.io.File and passing it into retrieveMatchingFiles, with the remainder of the location as pattern.

        Will return "/WEB-INF/" for the pattern "/WEB-INF/*.xml", for example.

        Parameters:
        location - the location to check
        Returns:
        the part of the location that denotes the root directory
        See Also:
        retrieveMatchingFiles

      • protected Set<Resource> doFindMatchingFileSystemResources(File rootDir, String subPattern)

        Find all resources in the file system that match the given location pattern via the Ant-style PathMatcher.

        throws:
        IOException in case of I/O errors
        Parameters:
        rootDir - the root directory in the file system
        subPattern - the sub pattern to match (below the root directory)
        Returns:
        the Set of matching Resource instances
        See Also:
        retrieveMatchingFiles

      • protected Set<Resource> doFindPathMatchingFileResources(Resource rootDirResource, String subPattern)

        Find all resources in the file system that match the given location pattern via the Ant-style PathMatcher.

        throws:
        IOException in case of I/O errors
        Parameters:
        rootDirResource - the root directory as Resource
        subPattern - the sub pattern to match (below the root directory)
        Returns:
        the Set of matching Resource instances
        See Also:
        retrieveMatchingFiles

      • protected Set<Resource> doFindPathMatchingJarResources(Resource rootDirResource, String subPattern)

        Find all resources in jar files that match the given location pattern via the Ant-style PathMatcher.

        throws:
        IOException in case of I/O errors
        Parameters:
        rootDirResource - the root directory as Resource
        subPattern - the sub pattern to match (below the root directory)
        Returns:
        the Set of matching Resource instances
        See Also:
        JarURLConnection

      • protected void doRetrieveMatchingFiles(String fullPattern, File dir, Set<File> result)

        Recursively retrieve files that match the given pattern, adding them to the given result list.

        Parameters:
        fullPattern - the pattern to match against, with prepended root directory path
        dir - the current directory
        result - the Set of matching File instances to add to

      • protected Resource[] findAllClassPathResources(String location)

        Find all class location resources with the given location via the ClassLoader.

        throws:
        IOException in case of I/O errors
        Parameters:
        location - the absolute path within the classpath
        Returns:
        the result as Resource array
        See Also:
        ClassLoader.getResources
        convertClassLoaderURL

      • protected Resource[] findPathMatchingResources(String locationPattern)

        Find all resources that match the given location pattern via the Ant-style PathMatcher. Supports resources in jar files and zip files and in the file system.

        throws:
        IOException in case of I/O errors
        Parameters:
        locationPattern - the location pattern to match
        Returns:
        the result as Resource array
        See Also:
        doFindPathMatchingJarResources
        doFindPathMatchingFileResources

      • public ClassLoader getClassLoader()

        Return the ClassLoader that this pattern resolver works with (never null).

      • protected JarFile getJarFile(String jarFileUrl)

        Resolve the given jar file URL into a JarFile object.

      • public AntPathMatcher getPathMatcher()

        Return the PathMatcher that this resource pattern resolver uses.

      • public ResourceLoader getResourceLoader()

        Return the ResourceLoader that this pattern resolver works with.

      • protected boolean isJarResource(Resource resource)

        Return whether the given resource handle indicates a jar resource that the doFindPathMatchingJarResources method can handle.

        The default implementation checks against the URL protocols "jar", "zip" and "wsjar" (the latter are used by BEA WebLogic Server and IBM WebSphere, respectively, but can be treated like jar files).

        Parameters:
        resource - the resource handle to check (usually the root directory to start path matching from)
        See Also:
        doFindPathMatchingJarResources

      • protected Resource resolveRootDirResource(Resource original)

        Resolve the specified resource for path matching.

        The default implementation detects an Equinox OSGi "bundleresource:" / "bundleentry:" URL and resolves it into a standard jar file URL that can be traversed using Spring's standard jar file traversal algorithm.

        Parameters:
        original - the resource to resolve
        Returns:
        the resolved resource (may be identical to the passed-in resource)

      • protected Set<File> retrieveMatchingFiles(File rootDir, String pattern)

        Retrieve files that match the given path pattern, checking the given directory and its subdirectories.

        throws:
        IOException if directory contents could not be retrieved
        Parameters:
        rootDir - the directory to start from
        pattern - the pattern to match against, relative to the root directory
        Returns:
        the Set of matching File instances

      • public void setPathMatcher(AntPathMatcher pathMatcher)

        Set the PathMatcher implementation to use for this resource pattern resolver. Default is AntPathMatcher.