Package org.apache.ivy.core.cache
Class DefaultRepositoryCacheManager
- java.lang.Object
-
- org.apache.ivy.core.cache.DefaultRepositoryCacheManager
-
- All Implemented Interfaces:
RepositoryCacheManager
,IvySettingsAware
public class DefaultRepositoryCacheManager extends java.lang.Object implements RepositoryCacheManager, IvySettingsAware
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
DefaultRepositoryCacheManager.BackupResourceDownloader
Resource downloader which makes a copy of the previously existing file before overriding it.private static class
DefaultRepositoryCacheManager.ConfiguredTTL
private class
DefaultRepositoryCacheManager.MyModuleDescriptorProvider
-
Field Summary
Fields Modifier and Type Field Description private static java.util.regex.Pattern
ARTIFACT_KEY_PATTERN
private java.lang.String
artifactPattern
private java.io.File
basedir
private java.lang.String
changingMatcherName
private java.lang.String
changingPattern
private java.lang.Boolean
checkmodified
private java.util.List<DefaultRepositoryCacheManager.ConfiguredTTL>
configuredTTLs
private java.lang.String
dataFilePattern
private static java.lang.String
DEFAULT_ARTIFACT_PATTERN
private static java.lang.String
DEFAULT_DATA_FILE_PATTERN
private static java.lang.String
DEFAULT_IVY_PATTERN
private static int
DEFAULT_MEMORY_CACHE_SIZE
private java.lang.Long
defaultTTL
private static java.util.regex.Pattern
DURATION_PATTERN
private java.lang.String
ivyPattern
private LockStrategy
lockStrategy
private java.lang.String
lockStrategyName
private ModuleDescriptorMemoryCache
memoryModuleDescrCache
private static int
MILLIS_IN_DAY
private static int
MILLIS_IN_HOUR
private static int
MILLIS_IN_MINUTES
private static int
MILLIS_IN_SECONDS
private java.lang.String
name
private PackagingManager
packagingManager
private IvySettings
settings
private static java.security.MessageDigest
SHA_DIGEST
private ModuleRules<java.lang.Long>
ttlRules
private java.lang.Boolean
useOrigin
-
Constructor Summary
Constructors Constructor Description DefaultRepositoryCacheManager()
DefaultRepositoryCacheManager(java.lang.String name, IvySettings settings, java.io.File basedir)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addConfiguredTtl(java.util.Map<java.lang.String,java.lang.String> attributes)
void
addTTL(java.util.Map<java.lang.String,java.lang.String> attributes, PatternMatcher matcher, long duration)
ResolvedModuleRevision
cacheModuleDescriptor(DependencyResolver resolver, ResolvedResource mdRef, DependencyDescriptor dd, Artifact moduleArtifact, ResourceDownloader downloader, CacheMetadataOptions options)
Caches an original module descriptor.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 downloadedvoid
clean()
Cleans the whole cache.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.private ResolvedModuleRevision
doFindModuleInCache(ModuleRevisionId mrid, CacheMetadataOptions options, java.lang.String expectedResolver)
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.void
dumpSettings()
ResolvedModuleRevision
findModuleInCache(DependencyDescriptor dd, ModuleRevisionId requestedRevisionId, CacheMetadataOptions options, java.lang.String expectedResolver)
Search a module descriptor in cache for a mridjava.io.File
getArchiveFileInCache(Artifact artifact)
Returns a File object pointing to where the artifact can be found on the local file system.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.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.java.lang.String
getArchivePathInCache(Artifact artifact)
java.lang.String
getArchivePathInCache(Artifact artifact, ArtifactOrigin origin)
java.lang.String
getArtifactPattern()
java.io.File
getBasedir()
private PropertiesFile
getCachedDataFile(java.lang.String resolverName, ModuleRevisionId mRevId)
A resolver-specific ivydata file, only used for caching dynamic revisions, e.g.private PropertiesFile
getCachedDataFile(ModuleDescriptor md)
private PropertiesFile
getCachedDataFile(ModuleRevisionId mRevId)
private Matcher
getChangingMatcher(CacheMetadataOptions options)
java.lang.String
getChangingMatcherName()
java.lang.String
getChangingPattern()
java.lang.String
getDataFilePattern()
private Artifact
getDefaultMetadataArtifact(ModuleRevisionId mrid)
private ArtifactOrigin
getDefaultMetadataArtifactOrigin(ModuleRevisionId mrid)
long
getDefaultTTL()
private java.lang.String
getExistsKey(Artifact artifact)
Returns the key used to identify the existence of the remote artifact.private int
getGroupIntValue(java.util.regex.Matcher m, int groupNumber)
private java.lang.String
getIsLocalKey(Artifact artifact)
Returns the key used to identify if the artifact is local.java.io.File
getIvyFileInCache(ModuleRevisionId mrid)
java.lang.String
getIvyPattern()
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.private java.lang.String
getLocationKey(Artifact artifact)
Returns the key used to identify the location of the artifact.LockStrategy
getLockStrategy()
private ModuleDescriptor
getMdFromCache(ModuleDescriptorParser mdParser, CacheMetadataOptions options, java.io.File ivyFile)
ModuleDescriptorMemoryCache
getMemoryCache()
protected ModuleDescriptorParser
getModuleDescriptorParser(java.io.File moduleDescriptorFile)
Choose write module descriptor parser for a given moduleDescriptorjava.lang.String
getName()
Returns the name of the repository cache manager.private java.lang.String
getOriginalKey(Artifact artifact)
Returns the key used to identify the original artifact.Artifact
getOriginalMetadataArtifact(Artifact moduleArtifact)
private java.lang.String
getPrefixKey(Artifact artifact)
Creates the unique prefix key that will reference the artifact within the properties.java.io.File
getRepositoryCacheRoot()
private java.lang.String
getResolvedRevision(java.lang.String expectedResolver, ModuleRevisionId mrid, CacheMetadataOptions options)
Called by doFindModuleInCache to lookup the dynamicmrid
in the ivycache's ivydata file.ArtifactOrigin
getSavedArtifactOrigin(Artifact artifact)
Returns the artifact origin of the given artifact as saved in this cache.private java.lang.String
getSavedArtResolverName(ModuleDescriptor md)
private java.lang.String
getSavedResolverName(ModuleDescriptor md)
IvySettings
getSettings()
private ModuleDescriptor
getStaledMd(ModuleDescriptorParser mdParser, CacheMetadataOptions options, java.io.File ivyFile, ParserSettings parserSettings)
long
getTTL(ModuleRevisionId mrid)
private boolean
isChanging(DependencyDescriptor dd, ModuleRevisionId requestedRevisionId, CacheMetadataOptions options)
boolean
isCheckmodified()
True if this cache should check lastmodified date to know if ivy files are up to date.private boolean
isCheckmodified(DependencyDescriptor dd, ModuleRevisionId requestedRevisionId, CacheMetadataOptions options)
private boolean
isOriginalMetadataArtifact(Artifact artifact)
boolean
isUseOrigin()
True if this cache should use artifacts original location when possible, false if they should be copied to cache.private boolean
lockMetadataArtifact(ModuleRevisionId mrid)
void
originalToCachedModuleDescriptor(DependencyResolver resolver, ResolvedResource originalMetadataRef, Artifact requestedMetadataArtifact, ResolvedModuleRevision rmr, ModuleDescriptorWriter writer)
Stores a standardized version of an original module descriptor in the cache for later use.private long
parseDuration(java.lang.String duration)
private void
removeSavedArtifactOrigin(Artifact artifact)
(package private) void
saveArtifactOrigin(Artifact artifact, ArtifactOrigin origin)
void
saveResolvedRevision(java.lang.String resolverName, ModuleRevisionId mrid, java.lang.String revision)
Caches a dynamic revision constraint resolution for a specific resolver.void
saveResolvedRevision(ModuleRevisionId mrid, java.lang.String revision)
Deprecated.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)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)void
setArtifactPattern(java.lang.String artifactPattern)
void
setBasedir(java.io.File cache)
void
setChangingMatcher(java.lang.String changingMatcherName)
void
setChangingPattern(java.lang.String changingPattern)
void
setCheckmodified(boolean check)
void
setDataFilePattern(java.lang.String dataFilePattern)
void
setDefaultTTL(long defaultTTL)
void
setDefaultTTL(java.lang.String defaultTTL)
void
setIvyPattern(java.lang.String ivyPattern)
void
setLockStrategy(java.lang.String lockStrategyName)
void
setLockStrategy(LockStrategy lockStrategy)
void
setMemorySize(int size)
void
setName(java.lang.String name)
void
setSettings(IvySettings settings)
void
setUseOrigin(boolean b)
java.lang.String
toString()
private void
unlockMetadataArtifact(ModuleRevisionId mrid)
private void
unpackArtifact(Artifact artifact, ArtifactDownloadReport adr, CacheDownloadOptions options)
-
-
-
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
-
settings
private IvySettings settings
-
basedir
private java.io.File basedir
-
lockStrategy
private LockStrategy lockStrategy
-
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
-
memoryModuleDescrCache
private ModuleDescriptorMemoryCache memoryModuleDescrCache
-
packagingManager
private PackagingManager packagingManager
-
configuredTTLs
private final java.util.List<DefaultRepositoryCacheManager.ConfiguredTTL> configuredTTLs
-
DURATION_PATTERN
private static final java.util.regex.Pattern DURATION_PATTERN
-
MILLIS_IN_SECONDS
private static final int MILLIS_IN_SECONDS
- See Also:
- Constant Field Values
-
MILLIS_IN_MINUTES
private static final int MILLIS_IN_MINUTES
- See Also:
- Constant Field Values
-
MILLIS_IN_HOUR
private static final int MILLIS_IN_HOUR
- See Also:
- Constant Field Values
-
MILLIS_IN_DAY
private static final int MILLIS_IN_DAY
- See Also:
- Constant Field Values
-
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
-
getSettings
public IvySettings getSettings()
-
setSettings
public void setSettings(IvySettings settings)
- Specified by:
setSettings
in interfaceIvySettingsAware
-
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 interfaceRepositoryCacheManager
- 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)
-
getMemoryCache
public ModuleDescriptorMemoryCache getMemoryCache()
-
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
- Artifactorigin
- 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
- Artifactorigin
- ArtifactOriginuseOrigin
- 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 resolvedname
- 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 interfaceRepositoryCacheManager
- Parameters:
md
- the module descriptor resolvedmetadataResolverName
- metadata resolver nameartifactResolverName
- artifact resolver name
-
getSavedResolverName
private java.lang.String getSavedResolverName(ModuleDescriptor md)
-
getSavedArtResolverName
private java.lang.String getSavedArtResolverName(ModuleDescriptor md)
-
saveArtifactOrigin
void saveArtifactOrigin(Artifact artifact, ArtifactOrigin origin)
-
removeSavedArtifactOrigin
private void removeSavedArtifactOrigin(Artifact artifact)
-
getSavedArtifactOrigin
public ArtifactOrigin getSavedArtifactOrigin(Artifact artifact)
Description copied from interface:RepositoryCacheManager
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.- Specified by:
getSavedArtifactOrigin
in interfaceRepositoryCacheManager
- 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
-
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(ModuleDescriptor md)
-
getCachedDataFile
private PropertiesFile getCachedDataFile(ModuleRevisionId mRevId)
-
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 interfaceRepositoryCacheManager
- Parameters:
dd
- the dependency descriptor identifying the module to searchrequestedRevisionId
- the requested dependency module revision id identifying the module to searchoptions
- options on how caching should be handledexpectedResolver
- 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
-
doFindModuleInCache
private ResolvedModuleRevision doFindModuleInCache(ModuleRevisionId mrid, CacheMetadataOptions options, java.lang.String expectedResolver)
-
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
-
getMdFromCache
private ModuleDescriptor getMdFromCache(ModuleDescriptorParser mdParser, CacheMetadataOptions options, java.io.File ivyFile) throws java.text.ParseException, java.io.IOException
- Throws:
java.text.ParseException
java.io.IOException
-
getStaledMd
private ModuleDescriptor getStaledMd(ModuleDescriptorParser mdParser, CacheMetadataOptions options, java.io.File ivyFile, ParserSettings parserSettings) throws java.text.ParseException, java.io.IOException
- Throws:
java.text.ParseException
java.io.IOException
-
getResolvedRevision
private java.lang.String getResolvedRevision(java.lang.String expectedResolver, ModuleRevisionId mrid, CacheMetadataOptions options)
Called by doFindModuleInCache to lookup the dynamicmrid
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 interfaceRepositoryCacheManager
- Parameters:
mrid
- the dynamic module revision idrevision
- 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 interfaceRepositoryCacheManager
- Parameters:
resolverName
- the resolver in which this dynamic revision was resolvedmrid
- the dynamic module revision idrevision
- the resolved revision
-
getTTL
public long getTTL(ModuleRevisionId mrid)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
getRepositoryCacheRoot
public java.io.File getRepositoryCacheRoot()
-
getLockStrategy
public LockStrategy getLockStrategy()
-
setLockStrategy
public void setLockStrategy(LockStrategy lockStrategy)
-
setLockStrategy
public void setLockStrategy(java.lang.String lockStrategyName)
-
download
public ArtifactDownloadReport download(Artifact artifact, ArtifactResourceResolver resourceResolver, ResourceDownloader resourceDownloader, CacheDownloadOptions options)
Description copied from interface:RepositoryCacheManager
Downloads an artifact to this cache.- Specified by:
download
in interfaceRepositoryCacheManager
- Parameters:
artifact
- the artifact to downloadresourceResolver
- a resource resolver to use if the artifact needs to be resolved to a Resource for downloadingresourceDownloader
- a resource downloader to use if actual download of the resource is neededoptions
- a set of options to adjust the download- Returns:
- a report indicating how the download was performed
-
unpackArtifact
private void unpackArtifact(Artifact artifact, ArtifactDownloadReport adr, CacheDownloadOptions options)
-
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 interfaceRepositoryCacheManager
- Parameters:
resource
- the resource of the file to put in cachename
- 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 downloadrepository
- 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 cacheresource
- the remote resource to checksavedOrigin
- the saved origin which contains that last checked dateorigin
- the origin in which to store the new last checked datettl
- the time to live to consider the cache up to date- Returns:
true
if the cache is considered up to date
-
originalToCachedModuleDescriptor
public void originalToCachedModuleDescriptor(DependencyResolver resolver, ResolvedResource originalMetadataRef, Artifact requestedMetadataArtifact, ResolvedModuleRevision rmr, ModuleDescriptorWriter writer)
Description copied from interface:RepositoryCacheManager
Stores a standardized version of an original module descriptor in the cache for later use.- Specified by:
originalToCachedModuleDescriptor
in interfaceRepositoryCacheManager
- Parameters:
resolver
- the dependency resolver from which the cache request comes fromoriginalMetadataRef
- a resolved resource pointing to the remote original module descriptorrequestedMetadataArtifact
- the module descriptor artifact as requested originallyrmr
- theResolvedModuleRevision
representing the local cached module descriptorwriter
- aModuleDescriptorWriter
able to write the module descriptor to a stream.
-
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 interfaceRepositoryCacheManager
- Parameters:
resolver
- the dependency resolver from which the cache request comes frommdRef
- a resolved resource pointing to the remote original module descriptordd
- the dependency descriptor for which the module descriptor should be cachedmoduleArtifact
- the module descriptor artifact as requested originallydownloader
- a ResourceDownloader able to download the original module descriptor resource if required by this cache implementationoptions
- 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)
-
getDefaultMetadataArtifactOrigin
private ArtifactOrigin getDefaultMetadataArtifactOrigin(ModuleRevisionId mrid)
-
getDefaultMetadataArtifact
private Artifact getDefaultMetadataArtifact(ModuleRevisionId mrid)
-
isOriginalMetadataArtifact
private boolean isOriginalMetadataArtifact(Artifact artifact)
-
isChanging
private boolean isChanging(DependencyDescriptor dd, ModuleRevisionId requestedRevisionId, CacheMetadataOptions options)
-
getChangingMatcher
private Matcher getChangingMatcher(CacheMetadataOptions options)
-
isCheckmodified
private boolean isCheckmodified(DependencyDescriptor dd, ModuleRevisionId requestedRevisionId, CacheMetadataOptions options)
-
clean
public void clean()
Description copied from interface:RepositoryCacheManager
Cleans the whole cache.- Specified by:
clean
in interfaceRepositoryCacheManager
-
dumpSettings
public void dumpSettings()
-
-