public class RepoManagerImpl extends RepoManager
RepoManager. Loads local and remote RepoPackages
synchronously and asynchronously into a RepositoryPackages instance from the given local
path and from the registered RepositorySourceProviders, using the registered SchemaModules.RepoManager.DummyProgressRunner, RepoManager.RepoLoadedCallbackDEFAULT_EXPIRATION_PERIOD_MS| Constructor and Description |
|---|
RepoManagerImpl(FileOp fop)
Create a new
RepoManagerImpl. |
| Modifier and Type | Method and Description |
|---|---|
PackageOperation |
getInProgressInstallOperation(RepoPackage remotePackage)
Gets the previously-registered installer that is currently installing the given package, or
null if there is none. |
java.io.File |
getLocalPath()
Gets the path to the local repository root.
|
RepositoryPackages |
getPackages()
Gets the currently-loaded
RepositoryPackages. |
org.w3c.dom.ls.LSResourceResolver |
getResourceResolver(ProgressIndicator progress)
Gets an
LSResourceResolver that can find the XSDs for all versions of the
currently-registered SchemaModules by namespace. |
java.util.Set<SchemaModule> |
getSchemaModules()
Gets the currently-registered
SchemaModules. |
java.util.Set<RepositorySourceProvider> |
getSourceProviders()
Gets the currently registered
RepositorySourceProviders. |
java.util.Set<RepositorySource> |
getSources(Downloader downloader,
ProgressIndicator progress,
boolean forceRefresh)
Gets the actual
RepositorySources from the registered RepositorySourceProviders. |
void |
installBeginning(RepoPackage remotePackage,
PackageOperation installer)
Record that the given package is in the process of being installed by the given installer.
|
void |
installEnded(RepoPackage remotePackage)
Record that the given package is no longer in the process of being installed (that is,
install completed either successfully or unsuccessfully).
|
boolean |
load(long cacheExpirationMs,
java.util.List<RepoManager.RepoLoadedCallback> onLocalComplete,
java.util.List<RepoManager.RepoLoadedCallback> onSuccess,
java.util.List<java.lang.Runnable> onError,
ProgressRunner runner,
Downloader downloader,
SettingsController settings,
boolean sync)
Load the local and remote repositories.
|
void |
markInvalid()
Causes cached results to be considered expired.
|
void |
markLocalCacheInvalid()
Causes the cached results of the local repositories to be considered expired.
|
void |
registerLocalChangeListener(RepoManager.RepoLoadedCallback listener)
Registers a listener that will be called whenever the local packages are reloaded and have
changed.
|
void |
registerRemoteChangeListener(RepoManager.RepoLoadedCallback listener)
Register a listener that will be called whenever the remote packages are reloaded and have
changed.
|
void |
registerSchemaModule(SchemaModule module)
Register an
SchemaModule that can be used when parsing XML for this repo. |
void |
registerSourceProvider(RepositorySourceProvider provider)
Adds a
RepositorySourceProvider from which to get RepositorySources from
which to download lists of available repository packages. |
boolean |
reloadLocalIfNeeded(ProgressIndicator progress)
Check to see if there have been any changes to the local repo since the last load.
|
void |
setFallbackLocalRepoLoader(FallbackLocalRepoLoader fallback)
Sets the
FallbackLocalRepoLoader to use when scanning the local repository for
packages. |
void |
setFallbackRemoteRepoLoader(FallbackRemoteRepoLoader remote)
Sets the
FallbackRemoteRepoLoader to try when we encounter a remote xml file that the
RepoManger can't read. |
void |
setLocalPath(java.io.File path)
Sets the path to the local repository root.
|
create, getCommonModule, getGenericModule, loadSynchronouslypublic RepoManagerImpl(@Nullable
FileOp fop)
RepoManagerImpl. Before anything can be loaded, at least a local path
and/or at least one RepositorySourceProvider must be set.fop - FileOp to use for local file operations. Should only be null if you're
never planning to load a local repo using this RepoManagerImpl.@Nullable public java.io.File getLocalPath()
RepoManagergetLocalPath in class RepoManagerpublic void setFallbackLocalRepoLoader(@Nullable
FallbackLocalRepoLoader fallback)
FallbackLocalRepoLoader to use when scanning the local repository for
packages. This calls markInvalid(), so a complete load will occur the next time
load(long, List, List, List, ProgressRunner, Downloader, SettingsController,
boolean) is called.setFallbackLocalRepoLoader in class RepoManagerpublic void setFallbackRemoteRepoLoader(@Nullable
FallbackRemoteRepoLoader remote)
FallbackRemoteRepoLoader to try when we encounter a remote xml file that the
RepoManger can't read. This calls markInvalid(), so a complete load will occur the next time
load(long, List, List, List, ProgressRunner, Downloader, SettingsController,
boolean) is called.setFallbackRemoteRepoLoader in class RepoManagerpublic void setLocalPath(@Nullable
java.io.File path)
markInvalid(), so a complete load will occur the next time
load(long, List, List, List, ProgressRunner, Downloader, SettingsController,
boolean) is called.setLocalPath in class RepoManagerpublic void registerSourceProvider(@NonNull
RepositorySourceProvider provider)
RepositorySourceProvider from which to get RepositorySources from
which to download lists of available repository packages. This calls markInvalid(), so a complete load will occur the next time
load(long, List, List, List, ProgressRunner, Downloader, SettingsController,
boolean) is called.registerSourceProvider in class RepoManager@NonNull public java.util.Set<RepositorySourceProvider> getSourceProviders()
RepoManagerRepositorySourceProviders. Should only be needed for
testing.getSourceProviders in class RepoManager@NonNull public java.util.Set<RepositorySource> getSources(@Nullable Downloader downloader, @NonNull ProgressIndicator progress, boolean forceRefresh)
RepoManagerRepositorySources from the registered RepositorySourceProviders.
Probably should only be needed by a repository UI.getSources in class RepoManagerdownloader - The Downloader to use for downloading source lists, if needed.progress - A ProgressIndicator for source providers to use to show their
progress and for logging.forceRefresh - Individual RepositorySourceProviders may cache their results. If
forceRefresh is true, specifies that they should reload rather
than returning cached results.RepositorySources obtained from the providers.@NonNull public java.util.Set<SchemaModule> getSchemaModules()
RepoManagerSchemaModules. This probably shouldn't be used except
by code within the RepoManager or unit tests.getSchemaModules in class RepoManagerpublic void registerSchemaModule(@NonNull
SchemaModule module)
SchemaModule that can be used when parsing XML for this repo. This calls markInvalid(), so a complete load will occur the next time
load(long, List, List, List, ProgressRunner, Downloader, SettingsController,
boolean) is called.registerSchemaModule in class RepoManagerpublic void markInvalid()
RepoManagerRepoManager.load(long, List, List,
List, ProgressRunner, Downloader, SettingsController, boolean) is called, a complete load
will be done.markInvalid in class RepoManagerpublic void markLocalCacheInvalid()
RepoManagerRepoManager.load(long, List, List, List, ProgressRunner, Downloader, SettingsController, boolean)
is called, the load will be done only for the local repositories, the remotes being loaded
from the cache if possible.markLocalCacheInvalid in class RepoManager@Nullable
public org.w3c.dom.ls.LSResourceResolver getResourceResolver(@NonNull
ProgressIndicator progress)
RepoManagerLSResourceResolver that can find the XSDs for all versions of the
currently-registered SchemaModules by namespace. Returns null if there is an error.getResourceResolver in class RepoManager@NonNull public RepositoryPackages getPackages()
RepoManagerRepositoryPackages.getPackages in class RepoManagerpublic boolean load(long cacheExpirationMs,
@Nullable
java.util.List<RepoManager.RepoLoadedCallback> onLocalComplete,
@Nullable
java.util.List<RepoManager.RepoLoadedCallback> onSuccess,
@Nullable
java.util.List<java.lang.Runnable> onError,
@NonNull
ProgressRunner runner,
@Nullable
Downloader downloader,
@Nullable
SettingsController settings,
boolean sync)
RepoManagerload in class RepoManagercacheExpirationMs - How long must have passed since the last load for us to reload.
Specify 0 to reload immediately.onLocalComplete - When loading, the local repo load happens first, and should be
relatively fast. When complete, the onLocalComplete RepoManager.RepoLoadedCallbacks are run. Will be called with a RepositoryPackages that contains only the local packages.onSuccess - Callbacks that are run when the entire load (local and remote) has
completed successfully. Called with an RepositoryPackages
containing both the local and remote packages.onError - Callbacks that are run when there's an error at some point during
the load.runner - The ProgressRunner to use for any tasks started during the
load, including running the callbacks.downloader - The Downloader to use for downloading remote files,
including any remote list of repo sources and the remote
repositories themselves.settings - The settings to use during the load, including for example proxy
settings used when fetching remote files.sync - If true, load synchronously. If false, load asynchronously (this
method should return quickly, and the onSuccess callbacks
can be used to process the completed results).
TODO: throw exception if cancelledtrue if a load was performed. false if cached results were fresh
enough.public boolean reloadLocalIfNeeded(@NonNull
ProgressIndicator progress)
RepoManagerreloadLocalIfNeeded in class RepoManagertrue if a reload is done, false otherwise.public void registerLocalChangeListener(@NonNull
RepoManager.RepoLoadedCallback listener)
RepoManagerRepositoryPackages instance passed to the callback will contain only
the local packages.registerLocalChangeListener in class RepoManagerpublic void registerRemoteChangeListener(@NonNull
RepoManager.RepoLoadedCallback listener)
RepoManagerRepositoryPackages instance will contain the remote and local packages.registerRemoteChangeListener in class RepoManagerpublic void installBeginning(@NonNull
RepoPackage remotePackage,
@NonNull
PackageOperation installer)
RepoManagerinstallBeginning in class RepoManagerpublic void installEnded(@NonNull
RepoPackage remotePackage)
RepoManagerinstallEnded in class RepoManager@Nullable public PackageOperation getInProgressInstallOperation(@NonNull RepoPackage remotePackage)
RepoManagernull if there is none.getInProgressInstallOperation in class RepoManager