Class DiscriminatingNameMapper

  • All Implemented Interfaces:
    NameMapper

    @Singleton
    @Named("discriminating")
    public class DiscriminatingNameMapper
    extends java.lang.Object
    implements NameMapper
    Discriminating 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.

    • Field Detail

      • CONFIG_PROP_DISCRIMINATOR

        private static final java.lang.String CONFIG_PROP_DISCRIMINATOR
        Configuration property to pass in discriminator
        See Also:
        Constant Field Values
      • CONFIG_PROP_HOSTNAME

        private static final java.lang.String CONFIG_PROP_HOSTNAME
        Configuration property to pass in hostname
        See Also:
        Constant Field Values
      • DEFAULT_DISCRIMINATOR_DIGEST

        private static final java.lang.String DEFAULT_DISCRIMINATOR_DIGEST
        See Also:
        Constant Field Values
      • DEFAULT_HOSTNAME

        private static final java.lang.String DEFAULT_HOSTNAME
        See Also:
        Constant Field Values
      • LOGGER

        private static final org.slf4j.Logger LOGGER
      • hostname

        private final java.lang.String hostname
    • Constructor Detail

      • DiscriminatingNameMapper

        @Inject
        public DiscriminatingNameMapper​(@Named("gav")
                                        NameMapper nameMapper)
    • Method Detail

      • 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 returns 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.
        Specified by:
        nameLocks in interface NameMapper
      • getHostname

        private java.lang.String getHostname()