@Singleton @Named(value="discriminating") public class DiscriminatingNameMapper extends java.lang.Object implements NameMapper
NameMapper
, that wraps another NameMapper
and adds a "discriminator" as prefix, that
makes lock names unique including the hostname and local repository (by default). The discriminator may be passed
in via RepositorySystemSession
or is automatically calculated based on the local hostname and repository
path. The implementation retains order of collection elements as it got it from
NameMapper.nameLocks(RepositorySystemSession, Collection, Collection)
method.
The default setup wraps GAVNameMapper
, but manually may be created any instance needed.
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
CONFIG_PROP_DISCRIMINATOR
Configuration property to pass in discriminator
|
private static java.lang.String |
CONFIG_PROP_HOSTNAME
Configuration property to pass in hostname
|
private static java.lang.String |
DEFAULT_DISCRIMINATOR_DIGEST |
private static java.lang.String |
DEFAULT_HOSTNAME |
private java.lang.String |
hostname |
private static org.slf4j.Logger |
LOGGER |
static java.lang.String |
NAME |
private NameMapper |
nameMapper |
Constructor and Description |
---|
DiscriminatingNameMapper(NameMapper nameMapper) |
Modifier and Type | Method and Description |
---|---|
private java.lang.String |
createDiscriminator(RepositorySystemSession session) |
private java.lang.String |
getHostname() |
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.
|
public static final java.lang.String NAME
private static final java.lang.String CONFIG_PROP_DISCRIMINATOR
private static final java.lang.String CONFIG_PROP_HOSTNAME
private static final java.lang.String DEFAULT_DISCRIMINATOR_DIGEST
private static final java.lang.String DEFAULT_HOSTNAME
private static final org.slf4j.Logger LOGGER
private final NameMapper nameMapper
private final java.lang.String hostname
@Inject public DiscriminatingNameMapper(@Named(value="gav") NameMapper 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.nameLocks
in interface NameMapper
private java.lang.String getHostname()
private java.lang.String createDiscriminator(RepositorySystemSession session)