Class GAVNameMapper
- java.lang.Object
-
- org.eclipse.aether.internal.impl.synccontext.named.GAVNameMapper
-
- All Implemented Interfaces:
NameMapper
public class GAVNameMapper extends java.lang.Object implements NameMapper
Artifact GAVNameMapper
, 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).
-
-
Field Summary
Fields Modifier and Type Field 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 Summary
Constructors Constructor Description GAVNameMapper(boolean fileSystemFriendly, java.lang.String artifactPrefix, java.lang.String artifactSuffix, java.lang.String metadataPrefix, java.lang.String metadataSuffix, java.lang.String fieldSeparator)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static NameMapper
fileGav()
static NameMapper
gav()
private java.lang.String
getArtifactName(Artifact artifact)
private java.lang.String
getMetadataName(Metadata metadata)
boolean
isFileSystemFriendly()
Returnstrue
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.
-
-
-
Field Detail
-
fileSystemFriendly
private final boolean fileSystemFriendly
-
artifactPrefix
private final java.lang.String artifactPrefix
-
artifactSuffix
private final java.lang.String artifactSuffix
-
metadataPrefix
private final java.lang.String metadataPrefix
-
metadataSuffix
private final java.lang.String metadataSuffix
-
fieldSeparator
private final java.lang.String fieldSeparator
-
-
Method Detail
-
isFileSystemFriendly
public boolean isFileSystemFriendly()
Description copied from interface:NameMapper
Returnstrue
if lock names returned by this lock name mapper are file system friendly, can be used as file names and paths.- Specified by:
isFileSystemFriendly
in interfaceNameMapper
-
nameLocks
public java.util.Collection<java.lang.String> nameLocks(RepositorySystemSession session, java.util.Collection<? extends Artifact> artifacts, java.util.Collection<? extends Metadata> metadatas)
Description copied from interface:NameMapper
Creates (opaque) names for passed in artifacts and metadata. Returned collection has max size of sum of the passed in artifacts and metadata collections, or less. If an empty collection is returned, there will be no locking happening. Never returnsnull
. 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.
Note: name mapper must not use same string for artifacts and metadata, so even the simplest possible implementation like
StaticNameMapper
uses two different static strings.- Specified by:
nameLocks
in interfaceNameMapper
-
getArtifactName
private java.lang.String getArtifactName(Artifact artifact)
-
getMetadataName
private java.lang.String getMetadataName(Metadata metadata)
-
gav
public static NameMapper gav()
-
fileGav
public static NameMapper fileGav()
-
-