Class DefaultVersionInfo

java.lang.Object
org.apache.maven.shared.release.versions.DefaultVersionInfo
All Implemented Interfaces:
Comparable<VersionInfo>, VersionInfo

public class DefaultVersionInfo extends Object implements VersionInfo
This compares and increments versions for a common java versioning scheme.

The supported version scheme has the following parts.
component-digits-annotation-annotationRevision-buildSpecifier
Example:
my-component-1.0.1-alpha-2-SNAPSHOT

    Terms:
  • component - name of the versioned component (log4j, commons-lang, etc)
  • digits - Numeric digits with at least one "." period. (1.0, 1.1, 1.01, 1.2.3, etc)
  • annotationRevision - Integer qualifier for the annotation. (4 as in RC-4)
  • buildSpecifier - Additional specifier for build. (SNAPSHOT, or build number like "20041114.081234-2")
Digits is the only required piece of the version string, and must contain at lease one "." period.

Implementation details:
The separators "_" and "-" between components are also optional (though they are usually recommended).
Example:
log4j-1.2.9-beta-9-SNAPSHOT == log4j1.2.9beta9SNAPSHOT == log4j_1.2.9_beta_9_SNAPSHOT

Leading zeros are significant when performing comparisons.

TODO: this parser is better than DefaultArtifactVersion - replace it with this (but align naming) and then remove this from here.

  • Field Details

    • strVersion

      private final String strVersion
    • digits

      private final List<String> digits
    • annotation

      private String annotation
    • annotationRevision

      private String annotationRevision
    • buildSpecifier

      private final String buildSpecifier
    • annotationSeparator

      private String annotationSeparator
    • annotationRevSeparator

      private String annotationRevSeparator
    • buildSeparator

      private final String buildSeparator
    • DIGITS_INDEX

      private static final int DIGITS_INDEX
      See Also:
    • ANNOTATION_SEPARATOR_INDEX

      private static final int ANNOTATION_SEPARATOR_INDEX
      See Also:
    • ANNOTATION_INDEX

      private static final int ANNOTATION_INDEX
      See Also:
    • ANNOTATION_REV_SEPARATOR_INDEX

      private static final int ANNOTATION_REV_SEPARATOR_INDEX
      See Also:
    • ANNOTATION_REVISION_INDEX

      private static final int ANNOTATION_REVISION_INDEX
      See Also:
    • BUILD_SEPARATOR_INDEX

      private static final int BUILD_SEPARATOR_INDEX
      See Also:
    • BUILD_SPECIFIER_INDEX

      private static final int BUILD_SPECIFIER_INDEX
      See Also:
    • SNAPSHOT_IDENTIFIER

      private static final String SNAPSHOT_IDENTIFIER
      See Also:
    • DIGIT_SEPARATOR_STRING

      private static final String DIGIT_SEPARATOR_STRING
      See Also:
    • STANDARD_PATTERN

      public static final Pattern STANDARD_PATTERN
    • ALTERNATE_PATTERN

      public static final Pattern ALTERNATE_PATTERN
  • Constructor Details

  • Method Details

    • isSnapshot

      public boolean isSnapshot()
      Description copied from interface: VersionInfo
      Returns whether this represents a snapshot version.
      Specified by:
      isSnapshot in interface VersionInfo
      Returns:
      true if the original value was a snapshot, otherwise false
    • getNextVersion

      public VersionInfo getNextVersion()
      Description copied from interface: VersionInfo
      Returns a VersionInfo object which represents the next version of this object.
      Specified by:
      getNextVersion in interface VersionInfo
      Returns:
      the next VersionInfo
    • compareTo

      public int compareTo(VersionInfo obj)
      Compares this DefaultVersionInfo to the supplied DefaultVersionInfo to determine which version is greater.
      Specified by:
      compareTo in interface Comparable<VersionInfo>
      Parameters:
      obj - the comparison version
      Returns:
      the comparison value
      Throws:
      IllegalArgumentException - if the components differ between the objects or if either of the annotations can not be determined.
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • incrementVersionString

      protected String incrementVersionString(String s)
      Takes a string and increments it as an integer. Preserves any lpad of "0" zeros.
      Parameters:
      s -
    • getSnapshotVersionString

      public String getSnapshotVersionString()
      Description copied from interface: VersionInfo
      Returns a string representing the version with a snapshot specification
      Specified by:
      getSnapshotVersionString in interface VersionInfo
      Returns:
      the snapshot version transformation of the original value
    • getReleaseVersionString

      public String getReleaseVersionString()
      Description copied from interface: VersionInfo
      Returns a string representing the version without a snapshot specification.
      Specified by:
      getReleaseVersionString in interface VersionInfo
      Returns:
      the final version transformation of the original value
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getVersionString

      protected static String getVersionString(DefaultVersionInfo info, String buildSpecifier, String buildSeparator)
    • joinDigitString

      protected static String joinDigitString(List<String> digits)
      Simply joins the items in the list with "." period
      Parameters:
      digits -
    • parseDigits

      private List<String> parseDigits(String strDigits)
      Splits the string on "." and returns a list containing each digit.
      Parameters:
      strDigits -
    • nullIfEmpty

      private static String nullIfEmpty(String s)
    • getDigits

      public List<String> getDigits()
    • getAnnotation

      public String getAnnotation()
    • getAnnotationRevision

      public String getAnnotationRevision()
    • getBuildSpecifier

      public String getBuildSpecifier()