Class GAVNameMapper

  • All Implemented Interfaces:
    NameMapper
    Direct Known Subclasses:
    GAECVNameMapper

    public class GAVNameMapper
    extends java.lang.Object
    implements NameMapper
    Artifact GAV 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 suffixes and separators, hence this instance may or may not be filesystem friendly (depends on strings used).

    Note: in earlier Resolver 1.9.x versions this mapper was the default, but it changed to GAECVNameMapper in 1.9.25.

    • 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 Deprecated Methods 
      Modifier and Type Method Description
      static NameMapper fileGav()
      Deprecated.
      Use NameMappers to create name mappers instead.
      static NameMapper gav()
      Deprecated.
      Use NameMappers to create name mappers instead.
      protected java.lang.String getArtifactName​(org.eclipse.aether.artifact.Artifact artifact)  
      protected java.lang.String getMetadataName​(org.eclipse.aether.metadata.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​(org.eclipse.aether.RepositorySystemSession session, java.util.Collection<? extends org.eclipse.aether.artifact.Artifact> artifacts, java.util.Collection<? extends org.eclipse.aether.metadata.Metadata> metadatas)
      Creates (opaque) names for passed in artifacts and metadata.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • GAVNameMapper

        public GAVNameMapper​(boolean fileSystemFriendly,
                             java.lang.String artifactPrefix,
                             java.lang.String artifactSuffix,
                             java.lang.String metadataPrefix,
                             java.lang.String metadataSuffix,
                             java.lang.String fieldSeparator)
    • Method Detail

      • nameLocks

        public java.util.Collection<java.lang.String> nameLocks​(org.eclipse.aether.RepositorySystemSession session,
                                                                java.util.Collection<? extends org.eclipse.aether.artifact.Artifact> artifacts,
                                                                java.util.Collection<? extends org.eclipse.aether.metadata.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.

        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 interface NameMapper
      • getArtifactName

        protected java.lang.String getArtifactName​(org.eclipse.aether.artifact.Artifact artifact)
      • getMetadataName

        protected java.lang.String getMetadataName​(org.eclipse.aether.metadata.Metadata metadata)