Record Class GAVR

java.lang.Object
java.lang.Record
dev.enola.connect.maven.GAVR

public record GAVR(String groupId, String artifactId, String extension, String classifier, String version, String repo) extends Record
GAVR is a Maven GroupID, ArtifactID, Version, Extension (AKA Type), Classifier + Repository.

The GroupID, ArtifactID & Version are mandatory and cannot be empty. The Extension, Classifier & Repository can be empty (but never null).

The Maven default extension "jar" are hidden in the GAV coordinates and Package URL syntax (but is returned by extension() API). This is different from Maven core, which always shows "jar".

This class itself does NOT imply any other "defaults" for Classifier & Repository. Callers of this class may resolve a GAVR without repo to one with a repo using Mima.origin(ModelResponse).

  • Constructor Details

    • GAVR

      public GAVR(String groupId, String artifactId, String extension, String classifier, String version, String repo)
      Creates an instance of a GAVR record class.
      Parameters:
      groupId - the value for the groupId record component
      artifactId - the value for the artifactId record component
      extension - the value for the extension record component
      classifier - the value for the classifier record component
      version - the value for the version record component
      repo - the value for the repo record component
  • Method Details

    • parseGAV

      public static GAVR parseGAV(String gav)
      Parse a coordinates in the <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version> format, like e.g. "ch.vorburger.mariaDB4j:mariaDB4j-core:3.1.0" to a GAVR.

      This format is not a URL; use parsePkgURL(String) if you have a URL, or toPkgURL() if you want one.

      PS: This syntax does not allow specifying a repository!

    • toPkgURL

      public String toPkgURL()
      Return a String in the same format that parsePkgURL(String) uses.
    • parsePkgURL

      public static GAVR parsePkgURL(String purl)
      Parse a Maven Package URL. For example, "pkg:maven/ch.vorburger.mariaDB4j/mariaDB4j-core@3.1.0?classifier=javadoc". See Type definition and its underlying SPDX specification.
    • toGAV

      public String toGAV()
      Return a String in the same format that parseGAV(String) uses.

      This omits extension "jar" when it can (contrary to how org.eclipse.aether.artifact.AbstractArtifact#toString() does it).

    • toBuilder

    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • groupId

      public String groupId()
      Returns the value of the groupId record component.
      Returns:
      the value of the groupId record component
    • artifactId

      public String artifactId()
      Returns the value of the artifactId record component.
      Returns:
      the value of the artifactId record component
    • extension

      public String extension()
      Returns the value of the extension record component.
      Returns:
      the value of the extension record component
    • classifier

      public String classifier()
      Returns the value of the classifier record component.
      Returns:
      the value of the classifier record component
    • version

      public String version()
      Returns the value of the version record component.
      Returns:
      the value of the version record component
    • repo

      public String repo()
      Returns the value of the repo record component.
      Returns:
      the value of the repo record component