Package com.github.zafarkhaja.semver
Class Version
- java.lang.Object
-
- com.github.zafarkhaja.semver.Version
-
- All Implemented Interfaces:
Comparable<Version>
public class Version extends Object implements Comparable<Version>
TheVersionclass is the main class of the Java SemVer library. This class implements the Facade design pattern. It is also immutable, which makes the class thread-safe.- Since:
- 0.1.0
- Author:
- Zafar Khaja
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classVersion.BuilderA mutable builder for the immutableVersionclass.
-
Field Summary
Fields Modifier and Type Field Description static Comparator<Version>BUILD_AWARE_ORDERA comparator that respects the build metadata when comparing versions.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description intcompareTo(Version other)Compares this version to the other version.intcompareWithBuildsTo(Version other)Compare this version to the other version taking into account the build metadata.booleanequals(Object other)Checks if this version equals the other version.static VersionforIntegers(int major)Creates a new instance ofVersionfor the specified version numbers.static VersionforIntegers(int major, int minor)Creates a new instance ofVersionfor the specified version numbers.static VersionforIntegers(int major, int minor, int patch)Creates a new instance ofVersionfor the specified version numbers.StringgetBuildMetadata()Returns the string representation of the build metadata.intgetMajorVersion()Returns the major version number.intgetMinorVersion()Returns the minor version number.StringgetNormalVersion()Returns the string representation of the normal version.intgetPatchVersion()Returns the patch version number.StringgetPreReleaseVersion()Returns the string representation of the pre-release version.booleangreaterThan(Version other)Checks if this version is greater than the other version.booleangreaterThanOrEqualTo(Version other)Checks if this version is greater than or equal to the other version.inthashCode()VersionincrementBuildMetadata()Increments the build metadata.VersionincrementMajorVersion()Increments the major version.VersionincrementMajorVersion(String preRelease)Increments the major version and appends the pre-release version.VersionincrementMinorVersion()Increments the minor version.VersionincrementMinorVersion(String preRelease)Increments the minor version and appends the pre-release version.VersionincrementPatchVersion()Increments the patch version.VersionincrementPatchVersion(String preRelease)Increments the patch version and appends the pre-release version.VersionincrementPreReleaseVersion()Increments the pre-release version.booleanlessThan(Version other)Checks if this version is less than the other version.booleanlessThanOrEqualTo(Version other)Checks if this version is less than or equal to the other version.booleansatisfies(Expression expr)Checks if this version satisfies the specified SemVer Expression.booleansatisfies(String expr)Checks if this version satisfies the specified SemVer Expression string.VersionsetBuildMetadata(String build)Sets the build metadata.VersionsetPreReleaseVersion(String preRelease)Sets the pre-release version.StringtoString()static VersionvalueOf(String version)Creates a new instance ofVersionas a result of parsing the specified version string.
-
-
-
Field Detail
-
BUILD_AWARE_ORDER
public static final Comparator<Version> BUILD_AWARE_ORDER
A comparator that respects the build metadata when comparing versions.
-
-
Method Detail
-
valueOf
public static Version valueOf(String version)
Creates a new instance ofVersionas a result of parsing the specified version string.- Parameters:
version- the version string to parse- Returns:
- a new instance of the
Versionclass - Throws:
IllegalArgumentException- if the input string isNULLor emptyParseException- when invalid version string is providedUnexpectedCharacterException- is a special case ofParseException
-
forIntegers
public static Version forIntegers(int major)
Creates a new instance ofVersionfor the specified version numbers.- Parameters:
major- the major version number- Returns:
- a new instance of the
Versionclass - Throws:
IllegalArgumentException- if a negative integer is passed- Since:
- 0.7.0
-
forIntegers
public static Version forIntegers(int major, int minor)
Creates a new instance ofVersionfor the specified version numbers.- Parameters:
major- the major version numberminor- the minor version number- Returns:
- a new instance of the
Versionclass - Throws:
IllegalArgumentException- if a negative integer is passed- Since:
- 0.7.0
-
forIntegers
public static Version forIntegers(int major, int minor, int patch)
Creates a new instance ofVersionfor the specified version numbers.- Parameters:
major- the major version numberminor- the minor version numberpatch- the patch version number- Returns:
- a new instance of the
Versionclass - Throws:
IllegalArgumentException- if a negative integer is passed- Since:
- 0.7.0
-
satisfies
public boolean satisfies(String expr)
Checks if this version satisfies the specified SemVer Expression string. This method is a part of the SemVer Expressions API.- Parameters:
expr- the SemVer Expression string- Returns:
trueif this version satisfies the specified SemVer Expression orfalseotherwise- Throws:
ParseException- in case of a general parse errorLexerException- when encounters an illegal characterUnexpectedTokenException- when comes across an unexpected token- Since:
- 0.7.0
-
satisfies
public boolean satisfies(Expression expr)
Checks if this version satisfies the specified SemVer Expression. This method is a part of the SemVer Expressions API.- Parameters:
expr- the SemVer Expression- Returns:
trueif this version satisfies the specified SemVer Expression orfalseotherwise- Since:
- 0.9.0
-
incrementMajorVersion
public Version incrementMajorVersion()
Increments the major version.- Returns:
- a new instance of the
Versionclass
-
incrementMajorVersion
public Version incrementMajorVersion(String preRelease)
Increments the major version and appends the pre-release version.- Parameters:
preRelease- the pre-release version to append- Returns:
- a new instance of the
Versionclass - Throws:
IllegalArgumentException- if the input string isNULLor emptyParseException- when invalid version string is providedUnexpectedCharacterException- is a special case ofParseException
-
incrementMinorVersion
public Version incrementMinorVersion()
Increments the minor version.- Returns:
- a new instance of the
Versionclass
-
incrementMinorVersion
public Version incrementMinorVersion(String preRelease)
Increments the minor version and appends the pre-release version.- Parameters:
preRelease- the pre-release version to append- Returns:
- a new instance of the
Versionclass - Throws:
IllegalArgumentException- if the input string isNULLor emptyParseException- when invalid version string is providedUnexpectedCharacterException- is a special case ofParseException
-
incrementPatchVersion
public Version incrementPatchVersion()
Increments the patch version.- Returns:
- a new instance of the
Versionclass
-
incrementPatchVersion
public Version incrementPatchVersion(String preRelease)
Increments the patch version and appends the pre-release version.- Parameters:
preRelease- the pre-release version to append- Returns:
- a new instance of the
Versionclass - Throws:
IllegalArgumentException- if the input string isNULLor emptyParseException- when invalid version string is providedUnexpectedCharacterException- is a special case ofParseException
-
incrementPreReleaseVersion
public Version incrementPreReleaseVersion()
Increments the pre-release version.- Returns:
- a new instance of the
Versionclass
-
incrementBuildMetadata
public Version incrementBuildMetadata()
Increments the build metadata.- Returns:
- a new instance of the
Versionclass
-
setPreReleaseVersion
public Version setPreReleaseVersion(String preRelease)
Sets the pre-release version.- Parameters:
preRelease- the pre-release version to set- Returns:
- a new instance of the
Versionclass - Throws:
IllegalArgumentException- if the input string isNULLor emptyParseException- when invalid version string is providedUnexpectedCharacterException- is a special case ofParseException
-
setBuildMetadata
public Version setBuildMetadata(String build)
Sets the build metadata.- Parameters:
build- the build metadata to set- Returns:
- a new instance of the
Versionclass - Throws:
IllegalArgumentException- if the input string isNULLor emptyParseException- when invalid version string is providedUnexpectedCharacterException- is a special case ofParseException
-
getMajorVersion
public int getMajorVersion()
Returns the major version number.- Returns:
- the major version number
-
getMinorVersion
public int getMinorVersion()
Returns the minor version number.- Returns:
- the minor version number
-
getPatchVersion
public int getPatchVersion()
Returns the patch version number.- Returns:
- the patch version number
-
getNormalVersion
public String getNormalVersion()
Returns the string representation of the normal version.- Returns:
- the string representation of the normal version
-
getPreReleaseVersion
public String getPreReleaseVersion()
Returns the string representation of the pre-release version.- Returns:
- the string representation of the pre-release version
-
getBuildMetadata
public String getBuildMetadata()
Returns the string representation of the build metadata.- Returns:
- the string representation of the build metadata
-
greaterThan
public boolean greaterThan(Version other)
Checks if this version is greater than the other version.- Parameters:
other- the other version to compare to- Returns:
trueif this version is greater than the other version orfalseotherwise- See Also:
compareTo(Version other)
-
greaterThanOrEqualTo
public boolean greaterThanOrEqualTo(Version other)
Checks if this version is greater than or equal to the other version.- Parameters:
other- the other version to compare to- Returns:
trueif this version is greater than or equal to the other version orfalseotherwise- See Also:
compareTo(Version other)
-
lessThan
public boolean lessThan(Version other)
Checks if this version is less than the other version.- Parameters:
other- the other version to compare to- Returns:
trueif this version is less than the other version orfalseotherwise- See Also:
compareTo(Version other)
-
lessThanOrEqualTo
public boolean lessThanOrEqualTo(Version other)
Checks if this version is less than or equal to the other version.- Parameters:
other- the other version to compare to- Returns:
trueif this version is less than or equal to the other version orfalseotherwise- See Also:
compareTo(Version other)
-
equals
public boolean equals(Object other)
Checks if this version equals the other version. The comparison is done by theVersion.compareTomethod.- Overrides:
equalsin classObject- Parameters:
other- the other version to compare to- Returns:
trueif this version equals the other version orfalseotherwise- See Also:
compareTo(Version other)
-
compareTo
public int compareTo(Version other)
Compares this version to the other version. This method does not take into account the versions' build metadata. If you want to compare the versions' build metadata use theVersion.compareWithBuildsTomethod or theVersion.BUILD_AWARE_ORDERcomparator.- Specified by:
compareToin interfaceComparable<Version>- Parameters:
other- the other version to compare to- Returns:
- a negative integer, zero or a positive integer if this version is less than, equal to or greater the the specified version
- See Also:
BUILD_AWARE_ORDER,compareWithBuildsTo(Version other)
-
compareWithBuildsTo
public int compareWithBuildsTo(Version other)
Compare this version to the other version taking into account the build metadata. The method makes use of theVersion.BUILD_AWARE_ORDERcomparator.- Parameters:
other- the other version to compare to- Returns:
- integer result of comparison compatible with
that of the
Comparable.compareTomethod - See Also:
BUILD_AWARE_ORDER
-
-