Class DefaultVersionInfo

  • All Implemented Interfaces:
    java.lang.Comparable<VersionInfo>, VersionInfo

    public class DefaultVersionInfo
    extends java.lang.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 Detail

      • strVersion

        private final java.lang.String strVersion
      • digits

        private final java.util.List<java.lang.String> digits
      • annotation

        private java.lang.String annotation
      • annotationRevision

        private java.lang.String annotationRevision
      • buildSpecifier

        private final java.lang.String buildSpecifier
      • annotationSeparator

        private java.lang.String annotationSeparator
      • annotationRevSeparator

        private java.lang.String annotationRevSeparator
      • buildSeparator

        private final java.lang.String buildSeparator
      • ANNOTATION_SEPARATOR_INDEX

        private static final int ANNOTATION_SEPARATOR_INDEX
        See Also:
        Constant Field Values
      • ANNOTATION_REV_SEPARATOR_INDEX

        private static final int ANNOTATION_REV_SEPARATOR_INDEX
        See Also:
        Constant Field Values
      • ANNOTATION_REVISION_INDEX

        private static final int ANNOTATION_REVISION_INDEX
        See Also:
        Constant Field Values
      • SNAPSHOT_IDENTIFIER

        private static final java.lang.String SNAPSHOT_IDENTIFIER
        See Also:
        Constant Field Values
      • DIGIT_SEPARATOR_STRING

        private static final java.lang.String DIGIT_SEPARATOR_STRING
        See Also:
        Constant Field Values
      • STANDARD_PATTERN

        public static final java.util.regex.Pattern STANDARD_PATTERN
      • ALTERNATE_PATTERN

        public static final java.util.regex.Pattern ALTERNATE_PATTERN
    • Constructor Detail

      • DefaultVersionInfo

        public DefaultVersionInfo​(java.lang.String version)
                           throws VersionParseException
        Constructs this object and parses the supplied version string.
        Parameters:
        version -
        Throws:
        VersionParseException
      • DefaultVersionInfo

        public DefaultVersionInfo​(java.util.List<java.lang.String> digits,
                                  java.lang.String annotation,
                                  java.lang.String annotationRevision,
                                  java.lang.String buildSpecifier,
                                  java.lang.String annotationSeparator,
                                  java.lang.String annotationRevSeparator,
                                  java.lang.String buildSeparator)
    • Method Detail

      • 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
      • compareTo

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

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

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

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

        public java.lang.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 java.lang.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 java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getVersionString

        protected static java.lang.String getVersionString​(DefaultVersionInfo info,
                                                           java.lang.String buildSpecifier,
                                                           java.lang.String buildSeparator)
      • joinDigitString

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

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

        private static java.lang.String nullIfEmpty​(java.lang.String s)
      • getDigits

        public java.util.List<java.lang.String> getDigits()
      • getAnnotation

        public java.lang.String getAnnotation()
      • getAnnotationRevision

        public java.lang.String getAnnotationRevision()
      • getBuildSpecifier

        public java.lang.String getBuildSpecifier()