## com.sun.jersey.core.spi.scanning
Class PackageNamesScanner

    java.lang.Object
      com.sun.jersey.core.spi.scanning.PackageNamesScanner

All Implemented Interfaces:
  Scanner

    public class PackageNamesScanner

extends java.lang.Object
implements Scanner

A scanner that recursively scans URI-based resources present in a set of package names, and sub-package names of that set.

The URIs for a package name are obtained, by default, by invoking `ClassLoader.getResources(java.lang.String)` with the parameter that is the package name with "." replaced by "/". The obtaining of the resources with a given name may be overridden by registering an implementation of `PackageNamesScanner.ResourcesProvider` using the method `setResourcesProvider(com.sun.jersey.core.spi.scanning.PackageNamesScanner.ResourcesProvider)`.

Each URI is then scanned using a registered `UriSchemeScanner` that supports the URI scheme.

The following are registered by default. The `FileSchemeScanner` for "file" URI schemes. The `JarZipSchemeScanner` for "jar" or "zip" URI schemes to jar resources. The `VfsSchemeScanner` for the JBoss-based "vfsfile" and "vfszip" URI schemes.

Further schemes may be registered by registering an implementation of `UriSchemeScanner` in the META-INF/services file whose name is the the fully qualified class name of `UriSchemeScanner`.

If a URI scheme is not supported a `ScannerException` will be thrown and package scanning deployment will fail.

Author:
  Paul.Sandoz@Sun.Com, Jakub.Podlesak@Sun.Com

Nested Class Summary
`static class` | `PackageNamesScanner.ResourcesProvider` Find resources with a given name and class loader.

Constructor Summary
`PackageNamesScanner(java.lang.ClassLoader classloader, java.lang.String[] packages)` Scan from a set of packages using declared class loader.
`PackageNamesScanner(java.lang.String[] packages)` Scan from a set of packages using the context class loader.

Method Summary
`void` | `scan(ScannerListener cfl)` Perform a scan and report resources to a scanning listener.
`static void` | `setResourcesProvider(PackageNamesScanner.ResourcesProvider provider)` Set the `PackageNamesScanner.ResourcesProvider` implementation to find resources.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### PackageNamesScanner

    public PackageNamesScanner(java.lang.String[] packages)

  Scan from a set of packages using the context class loader.

  Parameters:
    `packages` - an array of package names.

### PackageNamesScanner

    public PackageNamesScanner(java.lang.ClassLoader classloader,
                               java.lang.String[] packages)

  Scan from a set of packages using declared class loader.

  Parameters:
    `classloader` - the class loader to load classes from.
    `packages` - an array of package names.

Method Detail

### scan

    public void scan(ScannerListener cfl)

  Description copied from interface: `Scanner`
  Perform a scan and report resources to a scanning listener.

  Specified by:
    `scan` in interface `Scanner`
  Parameters:
    `cfl` - the scanning listener to report entries.

### setResourcesProvider

    public static void setResourcesProvider(PackageNamesScanner.ResourcesProvider provider)
                                     throws java.lang.SecurityException

  Set the `PackageNamesScanner.ResourcesProvider` implementation to find resources.

  This method should be invoked before any package scanning is performed otherwise the functionality method will be utilized.

  Parameters:
    `provider` - the resources provider.
  Throws:
    `java.lang.SecurityException` - if the resources provider cannot be set.

Copyright © 2017 Oracle Corporation. All Rights Reserved.