Class DefaultRepositoryCacheManager

    • Field Detail

      • DEFAULT_ARTIFACT_PATTERN

        private static final java.lang.String DEFAULT_ARTIFACT_PATTERN
        See Also:
        Constant Field Values
      • DEFAULT_DATA_FILE_PATTERN

        private static final java.lang.String DEFAULT_DATA_FILE_PATTERN
        See Also:
        Constant Field Values
      • DEFAULT_IVY_PATTERN

        private static final java.lang.String DEFAULT_IVY_PATTERN
        See Also:
        Constant Field Values
      • DEFAULT_MEMORY_CACHE_SIZE

        private static final int DEFAULT_MEMORY_CACHE_SIZE
        See Also:
        Constant Field Values
      • SHA_DIGEST

        private static java.security.MessageDigest SHA_DIGEST
      • basedir

        private java.io.File basedir
      • name

        private java.lang.String name
      • ivyPattern

        private java.lang.String ivyPattern
      • dataFilePattern

        private java.lang.String dataFilePattern
      • artifactPattern

        private java.lang.String artifactPattern
      • lockStrategyName

        private java.lang.String lockStrategyName
      • changingPattern

        private java.lang.String changingPattern
      • changingMatcherName

        private java.lang.String changingMatcherName
      • checkmodified

        private java.lang.Boolean checkmodified
      • useOrigin

        private java.lang.Boolean useOrigin
      • ttlRules

        private ModuleRules<java.lang.Long> ttlRules
      • defaultTTL

        private java.lang.Long defaultTTL
      • DURATION_PATTERN

        private static final java.util.regex.Pattern DURATION_PATTERN
      • ARTIFACT_KEY_PATTERN

        private static final java.util.regex.Pattern ARTIFACT_KEY_PATTERN
    • Constructor Detail

      • DefaultRepositoryCacheManager

        public DefaultRepositoryCacheManager()
      • DefaultRepositoryCacheManager

        public DefaultRepositoryCacheManager​(java.lang.String name,
                                             IvySettings settings,
                                             java.io.File basedir)
    • Method Detail

      • getIvyFileInCache

        public java.io.File getIvyFileInCache​(ModuleRevisionId mrid)
      • getIvyPattern

        public java.lang.String getIvyPattern()
      • getArtifactPattern

        public java.lang.String getArtifactPattern()
      • setArtifactPattern

        public void setArtifactPattern​(java.lang.String artifactPattern)
      • getBasedir

        public java.io.File getBasedir()
      • setBasedir

        public void setBasedir​(java.io.File cache)
      • getDefaultTTL

        public long getDefaultTTL()
      • setDefaultTTL

        public void setDefaultTTL​(long defaultTTL)
      • setDefaultTTL

        public void setDefaultTTL​(java.lang.String defaultTTL)
      • getDataFilePattern

        public java.lang.String getDataFilePattern()
      • setDataFilePattern

        public void setDataFilePattern​(java.lang.String dataFilePattern)
      • setIvyPattern

        public void setIvyPattern​(java.lang.String ivyPattern)
      • getName

        public java.lang.String getName()
        Description copied from interface: RepositoryCacheManager
        Returns the name of the repository cache manager.
        Specified by:
        getName in interface RepositoryCacheManager
        Returns:
        the name of the repository cache manager.
      • setName

        public void setName​(java.lang.String name)
      • getChangingMatcherName

        public java.lang.String getChangingMatcherName()
      • setChangingMatcher

        public void setChangingMatcher​(java.lang.String changingMatcherName)
      • getChangingPattern

        public java.lang.String getChangingPattern()
      • setChangingPattern

        public void setChangingPattern​(java.lang.String changingPattern)
      • addTTL

        public void addTTL​(java.util.Map<java.lang.String,​java.lang.String> attributes,
                           PatternMatcher matcher,
                           long duration)
      • addConfiguredTtl

        public void addConfiguredTtl​(java.util.Map<java.lang.String,​java.lang.String> attributes)
      • setMemorySize

        public void setMemorySize​(int size)
      • parseDuration

        private long parseDuration​(java.lang.String duration)
      • getGroupIntValue

        private int getGroupIntValue​(java.util.regex.Matcher m,
                                     int groupNumber)
      • isCheckmodified

        public boolean isCheckmodified()
        True if this cache should check lastmodified date to know if ivy files are up to date.
        Returns:
        boolean
      • setCheckmodified

        public void setCheckmodified​(boolean check)
      • isUseOrigin

        public boolean isUseOrigin()
        True if this cache should use artifacts original location when possible, false if they should be copied to cache.
        Returns:
        boolean
      • setUseOrigin

        public void setUseOrigin​(boolean b)
      • getArchiveFileInCache

        public java.io.File getArchiveFileInCache​(Artifact artifact)
        Returns a File object pointing to where the artifact can be found on the local file system. This is usually in the cache, but it can be directly in the repository if it is local and if the resolve has been done with useOrigin = true
        Parameters:
        artifact - Artifact
        Returns:
        File
      • getArchiveFileInCache

        public java.io.File getArchiveFileInCache​(Artifact artifact,
                                                  ArtifactOrigin origin)
        Returns a File object pointing to where the artifact can be found on the local file system. This is usually in the cache, but it can be directly in the repository if it is local and if the resolve has been done with useOrigin = true
        Parameters:
        artifact - Artifact
        origin - ArtifactOrigin
        Returns:
        File
      • getArchiveFileInCache

        private java.io.File getArchiveFileInCache​(Artifact artifact,
                                                   ArtifactOrigin origin,
                                                   boolean useOrigin)
        Returns a File object pointing to where the artifact can be found on the local file system, using or not the original location depending on the availability of origin information provided as parameter and the setting of useOrigin. If useOrigin is false, this method will always return the file in the cache.
        Parameters:
        artifact - Artifact
        origin - ArtifactOrigin
        useOrigin - boolean
        Returns:
        File
      • getArchivePathInCache

        public java.lang.String getArchivePathInCache​(Artifact artifact)
      • getArchivePathInCache

        public java.lang.String getArchivePathInCache​(Artifact artifact,
                                                      ArtifactOrigin origin)
      • saveResolver

        private void saveResolver​(ModuleDescriptor md,
                                  java.lang.String name)
        Saves the information of which resolver was used to resolve a md, so that this info can be retrieve later (even after a jvm restart) by getSavedResolverName(ModuleDescriptor md)
        Parameters:
        md - the module descriptor resolved
        name - resolver name
      • saveResolvers

        public void saveResolvers​(ModuleDescriptor md,
                                  java.lang.String metadataResolverName,
                                  java.lang.String artifactResolverName)
        Saves the information of which resolver was used to resolve a md, so that this info can be retrieve later (even after a jvm restart) by getSavedArtResolverName(ModuleDescriptor md)
        Specified by:
        saveResolvers in interface RepositoryCacheManager
        Parameters:
        md - the module descriptor resolved
        metadataResolverName - metadata resolver name
        artifactResolverName - artifact resolver name
      • getSavedResolverName

        private java.lang.String getSavedResolverName​(ModuleDescriptor md)
      • getSavedArtResolverName

        private java.lang.String getSavedArtResolverName​(ModuleDescriptor md)
      • removeSavedArtifactOrigin

        private void removeSavedArtifactOrigin​(Artifact artifact)
      • getPrefixKey

        private java.lang.String getPrefixKey​(Artifact artifact)
        Creates the unique prefix key that will reference the artifact within the properties.
        Parameters:
        artifact - the artifact to create the unique key from. Cannot be null.
        Returns:
        the unique prefix key as a string.
      • getLocationKey

        private java.lang.String getLocationKey​(Artifact artifact)
        Returns the key used to identify the location of the artifact.
        Parameters:
        artifact - the artifact to generate the key from. Cannot be null.
        Returns:
        the key to be used to reference the artifact location.
      • getIsLocalKey

        private java.lang.String getIsLocalKey​(Artifact artifact)
        Returns the key used to identify if the artifact is local.
        Parameters:
        artifact - the artifact to generate the key from. Cannot be null.
        Returns:
        the key to be used to reference the artifact locality.
      • getLastCheckedKey

        private java.lang.String getLastCheckedKey​(Artifact artifact)
        Returns the key used to identify the last time the artifact was checked to be up to date.
        Parameters:
        artifact - the artifact to generate the key from. Cannot be null.
        Returns:
        the key to be used to reference the artifact's last check date.
      • getExistsKey

        private java.lang.String getExistsKey​(Artifact artifact)
        Returns the key used to identify the existence of the remote artifact.
        Parameters:
        artifact - the artifact to generate the key from. Cannot be null.
        Returns:
        the key to be used to reference the existence of the artifact.
      • getOriginalKey

        private java.lang.String getOriginalKey​(Artifact artifact)
        Returns the key used to identify the original artifact.
        Parameters:
        artifact - the artifact to generate the key from. Cannot be null.
        Returns:
        the key to be used to reference the original artifact.
      • getCachedDataFile

        private PropertiesFile getCachedDataFile​(java.lang.String resolverName,
                                                 ModuleRevisionId mRevId)
        A resolver-specific ivydata file, only used for caching dynamic revisions, e.g. integration-repo.
      • findModuleInCache

        public ResolvedModuleRevision findModuleInCache​(DependencyDescriptor dd,
                                                        ModuleRevisionId requestedRevisionId,
                                                        CacheMetadataOptions options,
                                                        java.lang.String expectedResolver)
        Description copied from interface: RepositoryCacheManager
        Search a module descriptor in cache for a mrid
        Specified by:
        findModuleInCache in interface RepositoryCacheManager
        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
      • getModuleDescriptorParser

        protected ModuleDescriptorParser getModuleDescriptorParser​(java.io.File moduleDescriptorFile)
        Choose write module descriptor parser for a given moduleDescriptor
        Parameters:
        moduleDescriptorFile - a given module descriptor
        Returns:
        ModuleDescriptorParser
      • getResolvedRevision

        private java.lang.String getResolvedRevision​(java.lang.String expectedResolver,
                                                     ModuleRevisionId mrid,
                                                     CacheMetadataOptions options)
        Called by doFindModuleInCache to lookup the dynamic mrid in the ivycache's ivydata file.
      • saveResolvedRevision

        @Deprecated
        public void saveResolvedRevision​(ModuleRevisionId mrid,
                                         java.lang.String revision)
        Deprecated.
        Description copied from interface: RepositoryCacheManager
        Caches a dynamic revision constraint resolution.
        Specified by:
        saveResolvedRevision in interface RepositoryCacheManager
        Parameters:
        mrid - the dynamic module revision id
        revision - the resolved revision
      • saveResolvedRevision

        public void saveResolvedRevision​(java.lang.String resolverName,
                                         ModuleRevisionId mrid,
                                         java.lang.String revision)
        Description copied from interface: RepositoryCacheManager
        Caches a dynamic revision constraint resolution for a specific resolver.
        Specified by:
        saveResolvedRevision in interface RepositoryCacheManager
        Parameters:
        resolverName - the resolver in which this dynamic revision was resolved
        mrid - the dynamic module revision id
        revision - the resolved revision
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getRepositoryCacheRoot

        public java.io.File getRepositoryCacheRoot()
      • setLockStrategy

        public void setLockStrategy​(LockStrategy lockStrategy)
      • setLockStrategy

        public void setLockStrategy​(java.lang.String lockStrategyName)
      • downloadRepositoryResource

        public ArtifactDownloadReport downloadRepositoryResource​(Resource resource,
                                                                 java.lang.String name,
                                                                 java.lang.String type,
                                                                 java.lang.String extension,
                                                                 CacheResourceOptions options,
                                                                 Repository repository)
        Description copied from interface: RepositoryCacheManager
        Download some repository resource and put it in the cache.

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

        Specified by:
        downloadRepositoryResource in interface RepositoryCacheManager
        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
      • computeResourceNameHash

        private java.lang.String computeResourceNameHash​(Resource resource)
        Compute a SHA1 of the resource name, encoded in base64, so we can use it as a file name.
        Parameters:
        resource - the resource which name will be hashed
        Returns:
        the hash
      • checkCacheUptodate

        private boolean checkCacheUptodate​(java.io.File archiveFile,
                                           Resource resource,
                                           ArtifactOrigin savedOrigin,
                                           ArtifactOrigin origin,
                                           long ttl)
        Check that a cached file can be considered up to date and thus not downloaded
        Parameters:
        archiveFile - the file in the cache
        resource - the remote resource to check
        savedOrigin - the saved origin which contains that last checked date
        origin - the origin in which to store the new last checked date
        ttl - the time to live to consider the cache up to date
        Returns:
        true if the cache is considered up to date
      • cacheModuleDescriptor

        public ResolvedModuleRevision cacheModuleDescriptor​(DependencyResolver resolver,
                                                            ResolvedResource mdRef,
                                                            DependencyDescriptor dd,
                                                            Artifact moduleArtifact,
                                                            ResourceDownloader downloader,
                                                            CacheMetadataOptions options)
                                                     throws java.text.ParseException
        Description copied from interface: RepositoryCacheManager
        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.

        Specified by:
        cacheModuleDescriptor in interface RepositoryCacheManager
        Parameters:
        resolver - the dependency resolver from which the cache request comes from
        mdRef - a resolved resource pointing to the remote original module descriptor
        dd - the dependency descriptor for which the module descriptor should be cached
        moduleArtifact - 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
      • lockMetadataArtifact

        private boolean lockMetadataArtifact​(ModuleRevisionId mrid)
      • unlockMetadataArtifact

        private void unlockMetadataArtifact​(ModuleRevisionId mrid)
      • getOriginalMetadataArtifact

        public Artifact getOriginalMetadataArtifact​(Artifact moduleArtifact)
      • isOriginalMetadataArtifact

        private boolean isOriginalMetadataArtifact​(Artifact artifact)
      • dumpSettings

        public void dumpSettings()
      • assertInsideCache

        public final void assertInsideCache​(java.io.File fileInCache)
        Throws:
        java.lang.IllegalArgumentException - if the given path points outside of the cache.