public class GAVNameMapper extends java.lang.Object implements NameMapper
NameMapper
, uses artifact and metadata coordinates to name their corresponding locks. Is not
considering local repository, only the artifact coordinates. May use custom prefixes and sufixes and separators,
hence this instance may or may not be filesystem friendly (depends on strings used).Modifier and Type | Field and Description |
---|---|
private java.lang.String |
artifactPrefix |
private java.lang.String |
artifactSuffix |
private java.lang.String |
fieldSeparator |
private boolean |
fileSystemFriendly |
private java.lang.String |
metadataPrefix |
private java.lang.String |
metadataSuffix |
Constructor and Description |
---|
GAVNameMapper(boolean fileSystemFriendly,
java.lang.String artifactPrefix,
java.lang.String artifactSuffix,
java.lang.String metadataPrefix,
java.lang.String metadataSuffix,
java.lang.String fieldSeparator) |
Modifier and Type | Method and Description |
---|---|
static NameMapper |
fileGav() |
static NameMapper |
gav() |
private java.lang.String |
getArtifactName(Artifact artifact) |
private java.lang.String |
getMetadataName(Metadata metadata) |
boolean |
isFileSystemFriendly()
Returns
true if lock names returned by this lock name mapper are file system friendly, can be used
as file names and paths. |
java.util.Collection<java.lang.String> |
nameLocks(RepositorySystemSession session,
java.util.Collection<? extends Artifact> artifacts,
java.util.Collection<? extends Metadata> metadatas)
Creates (opaque) names for passed in artifacts and metadata.
|
private final boolean fileSystemFriendly
private final java.lang.String artifactPrefix
private final java.lang.String artifactSuffix
private final java.lang.String metadataPrefix
private final java.lang.String metadataSuffix
private final java.lang.String fieldSeparator
public GAVNameMapper(boolean fileSystemFriendly, java.lang.String artifactPrefix, java.lang.String artifactSuffix, java.lang.String metadataPrefix, java.lang.String metadataSuffix, java.lang.String fieldSeparator)
public boolean isFileSystemFriendly()
NameMapper
true
if lock names returned by this lock name mapper are file system friendly, can be used
as file names and paths.isFileSystemFriendly
in interface NameMapper
public java.util.Collection<java.lang.String> nameLocks(RepositorySystemSession session, java.util.Collection<? extends Artifact> artifacts, java.util.Collection<? extends Metadata> metadatas)
NameMapper
null
. The resulting collection MUST BE "stable" (always sorted by
same criteria) to avoid deadlocks by acquiring locks in same order, essentially disregarding the order of
the input collections.
There is no requirement of any kind of "parity" between input element count (sum of two collections, that is) and output collection size, just the returned upper size limit is defined (sum of the passed in two collections size). If returned collection is empty, no locking will happen, if single element, one lock will be used, if two then two named locks will be used etc.
nameLocks
in interface NameMapper
private java.lang.String getArtifactName(Artifact artifact)
private java.lang.String getMetadataName(Metadata metadata)
public static NameMapper gav()
public static NameMapper fileGav()