Class DiscriminatingNameMapper

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String CONFIG_PROP_DISCRIMINATOR
      Configuration property to pass in discriminator, if needed.
      static java.lang.String CONFIG_PROP_HOSTNAME
      Configuration property to pass in hostname, if needed.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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<org.eclipse.aether.named.NamedLockKey> 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
    • Field Detail

      • CONFIG_PROP_DISCRIMINATOR

        public static final java.lang.String CONFIG_PROP_DISCRIMINATOR
        Configuration property to pass in discriminator, if needed. If not present, it is auto-calculated.
        Since:
        1.7.0
        See Also:
        Constant Field Values
      • CONFIG_PROP_HOSTNAME

        public static final java.lang.String CONFIG_PROP_HOSTNAME
        Configuration property to pass in hostname, if needed. If not present, hostname as reported by system will be used.
        Since:
        1.7.0
        See Also:
        Constant Field Values
    • Method Detail

      • isFileSystemFriendly

        public boolean isFileSystemFriendly()
        Description copied from interface: NameMapper
        Returns true if lock names returned by this lock name mapper are file system friendly, can be used as file names and paths.

        Note: The fact that name mapper is "file system friendly" means ONLY that names it produces CAN be used as file names and paths. Still, it does not mean they will work with ANY file based locking, as for example FileLockNamedLockFactory expects names as string encoded URIs. The only name mapper doing it is BasedirNameMapper.

        Specified by:
        isFileSystemFriendly in interface NameMapper
      • nameLocks

        public java.util.Collection<org.eclipse.aether.named.NamedLockKey> 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