|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectcom.android.repository.api.RepoManager
public abstract class RepoManager
Primary interface for interacting with repository packages.
To set up an RepoManager:
SchemaModules used to parse the package.xml files and
remote repositories used by this repo using registerSchemaModule(SchemaModule)
setLocalPath(File).
FallbackLocalRepoLoader that can recognize and convert those packages using
setFallbackLocalRepoLoader(FallbackLocalRepoLoader).
RepositorySourceProviders to provide URLs for remotely-available packages.
FallbackRemoteRepoLoader that can read and convert them.
To load the local and remote packages, use load(long, List, List, List, ProgressRunner,
Downloader, SettingsController, boolean)
TODO: it would be nice if this could be redesigned such that load didn't need to be called
explicitly, or there was a better way to know if packages were or need to be loaded.
To use the loaded packages, get an RepositoryPackages object from getPackages().
| Nested Class Summary | |
|---|---|
static interface |
RepoManager.RepoLoadedCallback
Callback for when repository load is completed/partially completed. |
| Field Summary | |
|---|---|
static long |
DEFAULT_EXPIRATION_PERIOD_MS
After loading the repository, this is the amount of time that must pass before we consider it to be stale and need to be reloaded. |
| Constructor Summary | |
|---|---|
RepoManager()
|
|
| Method Summary | |
|---|---|
static RepoManager |
create(FileOp fop)
|
static SchemaModule |
getCommonModule()
Gets the core SchemaModule created by the RepoManager itself. |
static SchemaModule |
getGenericModule()
Gets the SchemaModule created by the RepoManager that includes the trivial generic
typeDetails type. |
abstract java.io.File |
getLocalPath()
Gets the path to the local repository root. |
abstract RepositoryPackages |
getPackages()
Gets the currently-loaded RepositoryPackages. |
abstract 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. |
abstract java.util.Set<SchemaModule> |
getSchemaModules()
Gets the currently-registered SchemaModules. |
abstract java.util.Set<RepositorySourceProvider> |
getSourceProviders()
Gets the currently registered RepositorySourceProviders. |
abstract java.util.Set<RepositorySource> |
getSources(Downloader downloader,
SettingsController settings,
ProgressIndicator progress,
boolean forceRefresh)
Gets the actual RepositorySources from the registered RepositorySourceProviders. |
abstract 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. |
boolean |
loadSynchronously(long cacheExpirationMs,
ProgressIndicator progress,
Downloader downloader,
SettingsController settings)
Load the local and remote repositories synchronously. |
abstract void |
markInvalid()
Causes cached results to be considered expired. |
abstract void |
registerLocalChangeListener(RepoManager.RepoLoadedCallback listener)
Registers a listener that will be called whenever the local packages are reloaded and have changed. |
abstract void |
registerRemoteChangeListener(RepoManager.RepoLoadedCallback listener)
Register a listener that will be called whenever the remote packages are reloaded and have changed. |
abstract void |
registerSchemaModule(SchemaModule module)
Register an SchemaModule that can be used when parsing XML for this repo. |
abstract void |
registerSourceProvider(RepositorySourceProvider provider)
Adds a RepositorySourceProvider from which to get RepositorySources from
which to download lists of available repository packages. |
abstract void |
setFallbackLocalRepoLoader(FallbackLocalRepoLoader local)
Sets the FallbackLocalRepoLoader to use when scanning the local repository for
packages. |
abstract void |
setFallbackRemoteRepoLoader(FallbackRemoteRepoLoader remote)
Sets the FallbackRemoteRepoLoader to try when we encounter a remote xml file that the
RepoManger can't read. |
abstract void |
setLocalPath(java.io.File path)
Sets the path to the local repository root. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final long DEFAULT_EXPIRATION_PERIOD_MS
| Constructor Detail |
|---|
public RepoManager()
| Method Detail |
|---|
@NonNull
public static RepoManager create(@NonNull
FileOp fop)
fop - The FileOp to use for local filesystem operations. Probably
FileOpUtils.create() unless part of a unit test.
RepoManager.
public abstract void registerSchemaModule(@NonNull
SchemaModule module)
SchemaModule that can be used when parsing XML for this repo.
@NonNull public abstract java.util.Set<SchemaModule> getSchemaModules()
SchemaModules. This probably shouldn't be used except
by code within the RepoManager or unit tests.
@NonNull public static SchemaModule getCommonModule()
SchemaModule created by the RepoManager itself. Contains the base
definition of repository, package, revision, etc.
@NonNull public static SchemaModule getGenericModule()
SchemaModule created by the RepoManager that includes the trivial generic
typeDetails type.
public abstract void setLocalPath(@Nullable
java.io.File path)
@Nullable public abstract java.io.File getLocalPath()
public abstract void setFallbackLocalRepoLoader(@Nullable
FallbackLocalRepoLoader local)
FallbackLocalRepoLoader to use when scanning the local repository for
packages.
public abstract void registerSourceProvider(@NonNull
RepositorySourceProvider provider)
RepositorySourceProvider from which to get RepositorySources from
which to download lists of available repository packages.
@NonNull public abstract java.util.Set<RepositorySourceProvider> getSourceProviders()
RepositorySourceProviders. Should only be needed for
testing.
public abstract java.util.Set<RepositorySource> getSources(@Nullable
Downloader downloader,
@Nullable
SettingsController settings,
@NonNull
ProgressIndicator progress,
boolean forceRefresh)
RepositorySources from the registered RepositorySourceProviders.
Probably should only be needed by a repository UI.
downloader - The Downloader to use for downloading source lists, if needed.settings - The settings to use when downloading or reading source lists.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.
public abstract void setFallbackRemoteRepoLoader(@Nullable
FallbackRemoteRepoLoader remote)
FallbackRemoteRepoLoader to try when we encounter a remote xml file that the
RepoManger can't read.
public abstract 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)
cacheExpirationMs - 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 cancelled
true if a load was performed. false if cached results were fresh
enough.
public final boolean loadSynchronously(long cacheExpirationMs,
@NonNull
ProgressIndicator progress,
@Nullable
Downloader downloader,
@Nullable
SettingsController settings)
cacheExpirationMs - How long must have passed since the last load for us to reload.
Specify 0 to reload immediately.progress - The ProgressIndicator to use for showing progress and
logging.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.
true if the load was successful (including if cached results were returned), false otherwise.public abstract void markInvalid()
load(long, List, List,
List, ProgressRunner, Downloader, SettingsController, boolean) is called, a complete load
will be done.
@NonNull public abstract RepositoryPackages getPackages()
RepositoryPackages.
@Nullable
public abstract org.w3c.dom.ls.LSResourceResolver getResourceResolver(@NonNull
ProgressIndicator progress)
LSResourceResolver that can find the XSDs for all versions of the
currently-registered SchemaModules by namespace. Returns null if there is an error.
public abstract void registerLocalChangeListener(@NonNull
RepoManager.RepoLoadedCallback listener)
RepositoryPackages instance passed to the callback will contain only
the local packages.
public abstract void registerRemoteChangeListener(@NonNull
RepoManager.RepoLoadedCallback listener)
RepositoryPackages instance will contain the remote and local packages.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||