org.codehaus.groovy.grails.io.support

Class PathMatchingResourcePatternResolver

    • Method Summary

      Methods 
      Modifier and Type Method and Description
      protected Resource convertClassLoaderURL(java.net.URL url)
      Convert the given URL as returned from the ClassLoader into a Resource object.
      protected java.lang.String determineRootDir(java.lang.String location)
      Determine the root directory for the given location.
      protected java.util.Set<Resource> doFindMatchingFileSystemResources(java.io.File rootDir, java.lang.String subPattern)
      Find all resources in the file system that match the given location pattern via the Ant-style PathMatcher.
      protected java.util.Set<Resource> doFindPathMatchingFileResources(Resource rootDirResource, java.lang.String subPattern)
      Find all resources in the file system that match the given location pattern via the Ant-style PathMatcher.
      protected java.util.Set<Resource> doFindPathMatchingJarResources(Resource rootDirResource, java.lang.String subPattern)
      Find all resources in jar files that match the given location pattern via the Ant-style PathMatcher.
      protected void doRetrieveMatchingFiles(java.lang.String fullPattern, java.io.File dir, java.util.Set<java.io.File> result)
      Recursively retrieve files that match the given pattern, adding them to the given result list.
      protected Resource[] findAllClassPathResources(java.lang.String location)
      Find all class location resources with the given location via the ClassLoader.
      protected Resource[] findPathMatchingResources(java.lang.String locationPattern)
      Find all resources that match the given location pattern via the Ant-style PathMatcher.
      java.lang.ClassLoader getClassLoader()
      Return the ClassLoader that this pattern resolver works with (never null).
      protected java.util.jar.JarFile getJarFile(java.lang.String jarFileUrl)
      Resolve the given jar file URL into a JarFile object.
      AntPathMatcher getPathMatcher()
      Return the PathMatcher that this resource pattern resolver uses.
      Resource getResource(java.lang.String location) 
      ResourceLoader getResourceLoader()
      Return the ResourceLoader that this pattern resolver works with.
      Resource[] getResources(java.lang.String locationPattern) 
      protected boolean isJarResource(Resource resource)
      Return whether the given resource handle indicates a jar resource that the doFindPathMatchingJarResources method can handle.
      protected Resource resolveRootDirResource(Resource original)
      Resolve the specified resource for path matching.
      protected java.util.Set<java.io.File> retrieveMatchingFiles(java.io.File rootDir, java.lang.String pattern)
      Retrieve files that match the given path pattern, checking the given directory and its subdirectories.
      void setPathMatcher(AntPathMatcher pathMatcher)
      Set the PathMatcher implementation to use for this resource pattern resolver.
      • Methods inherited from class java.lang.Object

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

      • PathMatchingResourcePatternResolver

        public PathMatchingResourcePatternResolver()
        Create a new PathMatchingResourcePatternResolver with a DefaultResourceLoader.

        ClassLoader access will happen via the thread context class loader.

      • PathMatchingResourcePatternResolver

        public PathMatchingResourcePatternResolver(java.lang.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
      • PathMatchingResourcePatternResolver

        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

      • getResourceLoader

        public ResourceLoader getResourceLoader()
        Return the ResourceLoader that this pattern resolver works with.
      • getClassLoader

        public java.lang.ClassLoader getClassLoader()
        Return the ClassLoader that this pattern resolver works with (never null).
      • setPathMatcher

        public void setPathMatcher(AntPathMatcher pathMatcher)
        Set the PathMatcher implementation to use for this resource pattern resolver. Default is AntPathMatcher.
      • getPathMatcher

        public AntPathMatcher getPathMatcher()
        Return the PathMatcher that this resource pattern resolver uses.
      • getResource

        public Resource getResource(java.lang.String location)
      • getResources

        public Resource[] getResources(java.lang.String locationPattern)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • findAllClassPathResources

        protected Resource[] findAllClassPathResources(java.lang.String location)
                                                throws java.io.IOException
        Find all class location resources with the given location via the ClassLoader.
        Parameters:
        location - the absolute path within the classpath
        Returns:
        the result as Resource array
        Throws:
        java.io.IOException - in case of I/O errors
        See Also:
        ClassLoader.getResources(java.lang.String), convertClassLoaderURL(java.net.URL)
      • convertClassLoaderURL

        protected Resource convertClassLoaderURL(java.net.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(java.lang.String)
      • determineRootDir

        protected java.lang.String determineRootDir(java.lang.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(java.io.File, java.lang.String)
      • resolveRootDirResource

        protected Resource resolveRootDirResource(Resource original)
                                           throws java.io.IOException
        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)
        Throws:
        java.io.IOException - in case of resolution failure
      • isJarResource

        protected boolean isJarResource(Resource resource)
                                 throws java.io.IOException
        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)
        Throws:
        java.io.IOException
        See Also:
        doFindPathMatchingJarResources(org.codehaus.groovy.grails.io.support.Resource, java.lang.String)
      • doFindPathMatchingJarResources

        protected java.util.Set<Resource> doFindPathMatchingJarResources(Resource rootDirResource,
                                                             java.lang.String subPattern)
                                                                  throws java.io.IOException
        Find all resources in jar files that match the given location pattern via the Ant-style PathMatcher.
        Parameters:
        rootDirResource - the root directory as Resource
        subPattern - the sub pattern to match (below the root directory)
        Returns:
        the Set of matching Resource instances
        Throws:
        java.io.IOException - in case of I/O errors
        See Also:
        JarURLConnection
      • getJarFile

        protected java.util.jar.JarFile getJarFile(java.lang.String jarFileUrl)
                                            throws java.io.IOException
        Resolve the given jar file URL into a JarFile object.
        Throws:
        java.io.IOException
      • doFindPathMatchingFileResources

        protected java.util.Set<Resource> doFindPathMatchingFileResources(Resource rootDirResource,
                                                              java.lang.String subPattern)
                                                                   throws java.io.IOException
        Find all resources in the file system that match the given location pattern via the Ant-style PathMatcher.
        Parameters:
        rootDirResource - the root directory as Resource
        subPattern - the sub pattern to match (below the root directory)
        Returns:
        the Set of matching Resource instances
        Throws:
        java.io.IOException - in case of I/O errors
        See Also:
        retrieveMatchingFiles(java.io.File, java.lang.String)
      • doFindMatchingFileSystemResources

        protected java.util.Set<Resource> doFindMatchingFileSystemResources(java.io.File rootDir,
                                                                java.lang.String subPattern)
                                                                     throws java.io.IOException
        Find all resources in the file system that match the given location pattern via the Ant-style PathMatcher.
        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
        Throws:
        java.io.IOException - in case of I/O errors
        See Also:
        retrieveMatchingFiles(java.io.File, java.lang.String)
      • retrieveMatchingFiles

        protected java.util.Set<java.io.File> retrieveMatchingFiles(java.io.File rootDir,
                                                        java.lang.String pattern)
                                                             throws java.io.IOException
        Retrieve files that match the given path pattern, checking the given directory and its subdirectories.
        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
        Throws:
        java.io.IOException - if directory contents could not be retrieved
      • doRetrieveMatchingFiles

        protected void doRetrieveMatchingFiles(java.lang.String fullPattern,
                                   java.io.File dir,
                                   java.util.Set<java.io.File> result)
                                        throws java.io.IOException
        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
        Throws:
        java.io.IOException - if directory contents could not be retrieved