public class ClasspathCrawler extends Object implements DataProvider
This class handles a list of data files or zip/jar archives located in the classpath. Since the classpath is not a
tree structure the list elements cannot be whole directories recursively browsed as in DirectoryCrawler
, they
must be data files or zip/jar archives.
A typical use case is to put all data files in a single zip or jar archive and to build an instance of this class with the single name of this zip/jar archive. Two different instances may be used one for user or project specific data and another one for system-wide or general data.
Gzip-compressed files are supported.
Zip archives entries are supported recursively.
This is a simple application of the visitor
design pattern for list browsing.
DataProvidersManager
,
Serialized FormGZIP_FILE_PATTERN, ZIP_ARCHIVE_PATTERN
Constructor and Description |
---|
ClasspathCrawler(ClassLoader classLoaderIn,
String... list)
Build a data classpath crawler.
|
ClasspathCrawler(String... list)
Build a data classpath crawler.
|
Modifier and Type | Method and Description |
---|---|
boolean |
feed(Pattern supported,
DataLoader visitor)
Feed a data file loader by browsing the data collection.
|
public ClasspathCrawler(String... list) throws PatriusException
Calling this constructor has the same effect as calling ClasspathCrawler(ClassLoader, String...)
with
ClasspathCrawler.class.getClassLoader()
as first argument.
list
- list of data file names within the classpathPatriusException
- if a list elements is not an existing resourcepublic ClasspathCrawler(ClassLoader classLoaderIn, String... list) throws PatriusException
classLoaderIn
- class loader to use to retrieve the resourceslist
- list of data file names within the classpathPatriusException
- if a list elements is not an existing resourcepublic boolean feed(Pattern supported, DataLoader visitor) throws PatriusException
The method crawls all files referenced in the instance (for example all files in a directories tree) and for each file supported by the file loader it asks the file loader to load it.
If the method completes without exception, then the data loader is considered to have been fed successfully and
the top level data providers manager
will return immediately without attempting to
use the next configured providers.
If the method completes abruptly with an exception, then the top level data providers
manager
will try to use the next configured providers, in case another one can feed the data
loader
.
feed
in interface DataProvider
supported
- pattern for file names supported by the visitorvisitor
- data file visitor to usePatriusException
- if the data loader cannot be fed
(read error ...)Copyright © 2023 CNES. All rights reserved.