Class PackageNamesScanner
- All Implemented Interfaces:
AutoCloseable
,Iterator<String>
,ResourceFinder
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 "/".
Each URI is then scanned using a registered UriSchemeResourceFinderFactory
that
supports the URI scheme.
The following are registered by default.
The FileSchemeResourceFinderFactory
for "file" URI schemes.
The JarZipSchemeResourceFinderFactory
for "jar" or "zip" URI schemes to jar
resources.
The VfsSchemeResourceFinderFactory
for the JBoss-based "vfsfile" and "vfszip"
URI schemes.
Further schemes may be registered by registering an implementation of
UriSchemeResourceFinderFactory
in the META-INF/services file whose name is
the fully qualified class name of UriSchemeResourceFinderFactory
.
If a URI scheme is not supported a ResourceFinderException
will be thrown
and package scanning deployment will fail.
- Author:
- Paul Sandoz, Jakub Podlesak
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Find resources with a given name and class loader. -
Constructor Summary
ConstructorDescriptionPackageNamesScanner
(ClassLoader classLoader, String[] packages, boolean recursive) Scan a set of packages using the providedClassLoader
.PackageNamesScanner
(String[] packages, boolean recursive) Scan a set of packages using a contextClassLoader
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Default implementation of#close()
which does nothing.boolean
hasNext()
next()
open()
Open current resource.void
reset()
Reset theResourceFinder
instance.static void
Set thePackageNamesScanner.ResourcesProvider
implementation to find resources.Methods inherited from class org.glassfish.jersey.server.internal.AbstractResourceFinderAdapter
remove
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Iterator
forEachRemaining
-
Constructor Details
-
PackageNamesScanner
Scan a set of packages using a contextClassLoader
. Therecursive
flag determines whether the packages will be scanned recursively together with their nested packages (true
) or if only the specified packages shall be scanned (false
).- Parameters:
packages
- an array of package names.recursive
- if (true
the packages will be scanned recursively together with any nested packages, iffalse
only the explicitly listed packages will be scanned.
-
PackageNamesScanner
Scan a set of packages using the providedClassLoader
. Therecursive
flag determines whether the packages will be scanned recursively together with their nested packages (true
) or if only the specified packages shall be scanned (false
).- Parameters:
classLoader
- theClassLoader
to load classes from.packages
- an array of package names.recursive
- if (true
the packages will be scanned recursively together with any nested packages, iffalse
only the explicitly listed packages will be scanned.
-
-
Method Details
-
hasNext
public boolean hasNext() -
next
-
open
Description copied from interface:ResourceFinder
Open current resource.- Returns:
- input stream from which current resource can be loaded.
-
close
public void close()Description copied from class:AbstractResourceFinderAdapter
Default implementation of#close()
which does nothing.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceResourceFinder
- Overrides:
close
in classAbstractResourceFinderAdapter
-
reset
public void reset()Description copied from interface:ResourceFinder
Reset theResourceFinder
instance. Upon calling this method the implementing class MUST reset its internal state to the initial state. -
getClassloader
-
setResourcesProvider
public static void setResourcesProvider(PackageNamesScanner.ResourcesProvider provider) throws SecurityException Set thePackageNamesScanner.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:
SecurityException
- if the resources provider cannot be set.
-