Package org.codehaus.commons.compiler.util.resource

# Class MultiResourceFinder

java.lang.Object
org.codehaus.commons.compiler.util.resource.ResourceFinder
org.codehaus.commons.compiler.util.resource.ListableResourceFinder
org.codehaus.commons.compiler.util.resource.MultiResourceFinder

Direct Known Subclasses:
  `LazyMultiResourceFinder`

public class MultiResourceFinder extends ListableResourceFinder
A `ResourceFinder` that finds its resources through a collection of other `ResourceFinder`s.

## Field Summary

### Fields inherited from class org.codehaus.commons.compiler.util.resource.ResourceFinder

`EMPTY_RESOURCE_FINDER`

## Constructor Summary

Constructors
Constructor
Description
`MultiResourceFinder(Iterable<? extends ResourceFinder> resourceFinders)`
`MultiResourceFinder(ResourceFinder... resourceFinders)`

## Method Summary

Modifier and Type
Method
Description
`final Resource`
`findResource(String resourceName)`
Finds a resource by name and return it as a `Resource` object.
`Iterable<Resource>`
`list(String resourceNamePrefix, boolean recurse)`
Returns all resources who's names start with a given string.

### Methods inherited from class org.codehaus.commons.compiler.util.resource.ResourceFinder

`findResourceAsStream`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### MultiResourceFinder

public MultiResourceFinder(Iterable<? extends ResourceFinder> resourceFinders)

Parameters:
  `resourceFinders` - The entries of the "path"

### MultiResourceFinder

public MultiResourceFinder(ResourceFinder... resourceFinders)

Parameters:
  `resourceFinders` - The entries of the "path"

## Method Details

### findResource

@Nullable public final Resource findResource(String resourceName)
Description copied from class: `ResourceFinder`
Finds a resource by name and return it as a `Resource` object.

Specified by:
  `findResource` in class `ResourceFinder`
Parameters:
  `resourceName` - Designates the resource; typically structured by slashes ("/") like "`com/foo/pkg/Bar.class`"
Returns:
  `null` if the resource could not be found

### list

@Nullable public Iterable<Resource> list(String resourceNamePrefix, boolean recurse) throws IOException
Description copied from class: `ListableResourceFinder`
Returns all resources who's names start with a given string. Only resources with a content are included, no "special entries" of any kind, e.g. directories.

If the prefix string ends with "/", you will get a proper directory listing (recurse`=false`) or directory tree (recurse`=true`). Example:

       resourceFinder.list("dir/", true) =>
         dir/
         dir/afile
         dir/bfile
         dir/adir/
         dir/adir/file
         dir/bdir/
         dir/bdir/file

Otherwise, you will get a strange subset of a directory listing, resp. directory tree, as follows:

       resourceFinder.list("dir/a", true) =>
         dir/afile
         dir/adir/
         dir/adir/file

Specified by:
  `list` in class `ListableResourceFinder`
Parameters:
  `resourceNamePrefix` - E.g. `""` or `"java/lang/"`
Returns:
  All resources who's name starts with the given prefix; `null` iff a location designated by the resourceNamePrefix does not exist
Throws:
  `IOException`