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

java.lang.Object
  extended by 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:
[email protected], [email protected]

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 © 2010 Oracle Corporation. All Rights Reserved.