org.linkedin.util-core/src/main/java/org/linkedin/util/io/resource/internal/AbstractResourceProvider.java
@Override
  public InternalResource[] list(InternalResource resource, final ResourceFilter filter)
    throws IOException
  {
    final List<Resource> resources = new ArrayList<Resource>();

    String path = PathUtils.addTrailingSlash(resource.getPath());

    if(doList(path, new ResourceFilter()
    {
      @Override
      public boolean accept(Resource resource)
      {
        boolean res = filter.accept(resource);
        if(res)
          resources.add(resource);
        return res;
      }
    }))
    {
      return resources.toArray(new InternalResource[resources.size()]);
    }
    else
      return null;
  }
@Override
  public InternalResource[] list(InternalResource resource, final ResourceFilter filter)
    throws IOException
  {
    final List<Resource> resources = new ArrayList<Resource>();

    String path = PathUtils.addTrailingSlash(resource.getPath());

    if(doList(path, new ResourceFilter()
    {
      @Override
      public boolean accept(Resource resource)
      {
        boolean res = filter.accept(resource);
        if(res)
          resources.add(resource);
        return res;
      }
    }))
    {
      return resources.toArray(new InternalResource[resources.size()]);
    }
    else
      return null;
  }
If this resource denotes a directory, then it will return all resources that are contained in
the directory.

@param filter the filter to include only some resources in the result
@return all the resources contained in the directory or <code>null</code> if not a directory
@throws IOException if there is an error accessing the resource