RepositoryCacheManager
Date: 2014-12-13

org.apache.ivy.core.cache

## Interface RepositoryCacheManager

- All Known Implementing Classes:
    DefaultRepositoryCacheManager

      public interface RepositoryCacheManager

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ResolvedModuleRevision` | `cacheModuleDescriptor(DependencyResolver resolver, ResolvedResource orginalMetadataRef, DependencyDescriptor dd, Artifact requestedMetadataArtifact, ResourceDownloader downloader, CacheMetadataOptions options)` Caches an original module descriptor.
    `void` | `clean()` Cleans the whole cache.
    `ArtifactDownloadReport` | `download(Artifact artifact, ArtifactResourceResolver resourceResolver, ResourceDownloader resourceDownloader, CacheDownloadOptions options)` Downloads an artifact to this cache.
    `ArtifactDownloadReport` | `downloadRepositoryResource(Resource resource, java.lang.String name, java.lang.String type, java.lang.String extension, CacheResourceOptions options, Repository repository)` Download some repository resource and put it in the cache.
    `ResolvedModuleRevision` | `findModuleInCache(DependencyDescriptor dd, ModuleRevisionId requestedRevisionId, CacheMetadataOptions options, java.lang.String expectedResolver)` Search a module descriptor in cache for a mrid
    `java.lang.String` | `getName()` Returns the name of the repository cache manager.
    `ArtifactOrigin` | `getSavedArtifactOrigin(Artifact artifact)` Returns the artifact origin of the given artifact as saved in this cache.
    `void` | `originalToCachedModuleDescriptor(DependencyResolver resolver, ResolvedResource orginalMetadataRef, Artifact requestedMetadataArtifact, ResolvedModuleRevision rmr, ModuleDescriptorWriter writer)` Stores a standardized version of an original module descriptor in the cache for later use.
    `void` | `saveResolvedRevision(ModuleRevisionId dynamicMrid, java.lang.String revision)` Caches a dynamic revision constraint resolution.
    `void` | `saveResolvers(ModuleDescriptor descriptor, java.lang.String metadataResolverName, java.lang.String artifactResolverName)` Saves the information of which resolvers were used to resolve a module (both for metadata and artifact), so that this info can be loaded later (even after a jvm restart) for the use of `#findModuleInCache(DependencyDescriptor, CacheMetadataOptions, String)`.

- - ### Method Detail

    - #### getName

          java.lang.String getName()

      Returns the name of the repository cache manager.
      Returns:
        the name of the repository cache manager.

    - #### saveResolvers

          void saveResolvers(ModuleDescriptor descriptor,
                           java.lang.String metadataResolverName,
                           java.lang.String artifactResolverName)

      Saves the information of which resolvers were used to resolve a module (both for metadata and artifact), so that this info can be loaded later (even after a jvm restart) for the use of `#findModuleInCache(DependencyDescriptor, CacheMetadataOptions, String)`.
      Parameters:
        `md` - the module descriptor resolved
        `metadataResolverName` - metadata resolver name
        `artifactResolverName` - artifact resolver name

    - #### getSavedArtifactOrigin

          ArtifactOrigin getSavedArtifactOrigin(Artifact artifact)

      Returns the artifact origin of the given artifact as saved in this cache.

      If the origin is unknown, the returned ArtifactOrigin instance will return true when `ArtifactOrigin.isUnknown(ArtifactOrigin)` is called.

      Parameters:
        `artifact` - the artifact for which the saved artifact origin should be returned.
      Returns:
        the artifact origin of the given artifact as saved in this cache

    - #### findModuleInCache

          ResolvedModuleRevision findModuleInCache(DependencyDescriptor dd,
                                                 ModuleRevisionId requestedRevisionId,
                                                 CacheMetadataOptions options,
                                                 java.lang.String expectedResolver)

      Search a module descriptor in cache for a mrid
      Parameters:
        `dd` - the dependency descriptor identifying the module to search
        `requestedRevisionId` - the requested dependency module revision id identifying the module to search
        `options` - options on how caching should be handled
        `expectedResolver` - the resolver with which the md in cache must have been resolved to be returned, null if this doesn't matter
      Returns:
        the ResolvedModuleRevision corresponding to the module found, null if none correct has been found in cache

    - #### download

          ArtifactDownloadReport download(Artifact artifact,
                                        ArtifactResourceResolver resourceResolver,
                                        ResourceDownloader resourceDownloader,
                                        CacheDownloadOptions options)

      Downloads an artifact to this cache.
      Parameters:
        `artifact` - the artifact to download
        `resourceResolver` - a resource resolver to use if the artifact needs to be resolved to a Resource for downloading
        `resourceDownloader` - a resource downloader to use if actual download of the resource is needed
        `options` - a set of options to adjust the download
      Returns:
        a report indicating how the download was performed

    - #### downloadRepositoryResource

          ArtifactDownloadReport downloadRepositoryResource(Resource resource,
                                                          java.lang.String name,
                                                          java.lang.String type,
                                                          java.lang.String extension,
                                                          CacheResourceOptions options,
                                                          Repository repository)

      Download some repository resource and put it in the cache.

      If the cached version is considered enough up to date, no downloading is done.

      Parameters:
        `resource` - the resource of the file to put in cache
        `name` - the descriptive name of the resource (helps while manually looking into the cache files)
        `type` - the type of the resource (helps while manually looking into the cache files)
        `extension` - the extension of the resource (helps while manually looking into the cache files)
        `options` - a set of options to adjust the download
        `repository` - the repository which resolve the content of the resource
      Returns:
        a report indicating how the download was performed

    - #### cacheModuleDescriptor

          ResolvedModuleRevision cacheModuleDescriptor(DependencyResolver resolver,
                                                     ResolvedResource orginalMetadataRef,
                                                     DependencyDescriptor dd,
                                                     Artifact requestedMetadataArtifact,
                                                     ResourceDownloader downloader,
                                                     CacheMetadataOptions options)
                                                       throws java.text.ParseException

      Caches an original module descriptor.

      After this call, the original module descriptor file (with no modification nor conversion) should be available as a local file.

      Parameters:
        `resolver` - the dependency resolver from which the cache request comes from
        `orginalMetadataRef` - a resolved resource pointing to the remote original module descriptor
        `dd` - the dependency descriptor for which the module descriptor should be cached
        `requestedMetadataArtifact` - the module descriptor artifact as requested originally
        `downloader` - a ResourceDownloader able to download the original module descriptor resource if required by this cache implementation
        `options` - options to apply to cache this module descriptor
      Returns:
        a `ResolvedModuleRevision` representing the local cached module descriptor, or null if it failed
      Throws:
        `java.text.ParseException` - if an exception occurred while parsing the module descriptor

    - #### originalToCachedModuleDescriptor

          void originalToCachedModuleDescriptor(DependencyResolver resolver,
                                              ResolvedResource orginalMetadataRef,
                                              Artifact requestedMetadataArtifact,
                                              ResolvedModuleRevision rmr,
                                              ModuleDescriptorWriter writer)

      Stores a standardized version of an original module descriptor in the cache for later use.
      Parameters:
        `resolver` - the dependency resolver from which the cache request comes from
        `orginalMetadataRef` - a resolved resource pointing to the remote original module descriptor
        `requestedMetadataArtifact` - the module descriptor artifact as requested originally
        `rmr` - the `ResolvedModuleRevision` representing the local cached module descriptor
        `writer` - a `ModuleDescriptorWriter` able to write the module descriptor to a stream.

    - #### clean

          void clean()

      Cleans the whole cache.

    - #### saveResolvedRevision

          void saveResolvedRevision(ModuleRevisionId dynamicMrid,
                                  java.lang.String revision)

      Caches a dynamic revision constraint resolution.
      Parameters:
        `dynamicMrid` - the dynamic module revision id
        `revision` - the resolved revision