public interface LockStrategy
Note that some implementations may actually choose to NOT perform locking, when no lock is necessary (cache not shared). Some other implementations may choose to lock the cache for the download of a whole module (not possible yet), or at the artifact level.
The lock methods should return true when the lock is either actually acquired or not performed by the strategy.
Locking used in the locking strategy must support reentrant lock. Reentrant locking should be performed for the whole strategy.
Modifier and Type | Method and Description |
---|---|
java.lang.String |
getName()
Returns the name of the strategy
|
boolean |
lockArtifact(Artifact artifact,
java.io.File artifactFileToDownload)
Performs a lock before downloading the given
Artifact to the given file. |
void |
unlockArtifact(Artifact artifact,
java.io.File artifactFileToDownload)
Release the lock acquired for an artifact download.
|
java.lang.String getName()
boolean lockArtifact(Artifact artifact, java.io.File artifactFileToDownload) throws java.lang.InterruptedException
Artifact
to the given file.artifact
- the artifact about to be downloadedartifactFileToDownload
- the file where the artifact will be downloadedjava.lang.InterruptedException
- if the thread is interrupted while waiting to acquire the lockvoid unlockArtifact(Artifact artifact, java.io.File artifactFileToDownload)
artifact
- the artifact for which the lock was acquiredartifactFileToDownload
- the file where the artifact is supposed to have been downloaded