Package io.microsphere.util
Class Version
- java.lang.Object
-
- io.microsphere.util.Version
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Comparable<Version>
@Immutable public class Version extends java.lang.Object implements java.lang.Comparable<Version>, java.io.Serializable
Represents a version number composed of major, minor, and patch components.This class provides methods to compare versions using standard comparison operators such as greater than, less than, and equal to. It also supports parsing version strings in the format "major.minor.patch". The supported version patterns :
- major
- major.minor
- major.minor.patch
- major.minor.patch-preRelease
Example Usage
Version v1 = new Version(1, 2, 3); Version v2 = Version.of("1.2.3"); // Comparison boolean isEqual = v1.equals(v2); // true boolean isGreaterThan = v1.isGreaterThan(Version.of("1.2.2")); // true boolean isLessThan = v1.lt(Version.of("1.3.0")); // true // Parsing from string Version v3 = Version.of("2.0.0"); // Getting version from a class's manifest Version versionFromManifest = Version.getVersion(MyClass.class);- Since:
- 1.0.0
- Author:
- Mercy
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classVersion.Operator
-
Constructor Summary
Constructors Constructor Description Version(int major)Creates a newVersionwith the specified major version number.Version(int major, int minor)Creates a newVersionwith the specified major and minor version numbers.Version(int major, int minor, int patch)Creates a newVersionwith the specified major, minor, and patch version numbers.Version(int major, int minor, int patch, java.lang.String preRelease)Creates a newVersionwith the specified major, minor, patch, and pre-release components.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description intcompareTo(Version that)Compares this version with another version for ordering.booleaneq(Version that)CurrentVersionis equal to thatbooleanequals(Version that)CurrentVersionis equal to thatbooleanequals(java.lang.Object o)CurrentVersionis equal to thatbooleange(Version that)CurrentVersionis greater than or equal to thatintgetMajor()The major versionintgetMinor()The minor versionintgetPatch()The patchjava.lang.StringgetPreRelease()The pre-releasestatic VersiongetVersion(java.lang.Class<?> targetClass)Class that exposes the version.booleangt(Version that)CurrentVersionis greater than thatinthashCode()Returns a hash code value for this version.booleanisGreaterOrEqual(Version that)CurrentVersionis greater than or equal to thatbooleanisGreaterThan(Version that)CurrentVersionis greater than thatbooleanisLessOrEqual(Version that)CurrentVersionis less than or equal to thatbooleanisLessThan(Version that)CurrentVersionis less than thatbooleanle(Version that)CurrentVersionis less than or equal to thatbooleanlt(Version that)CurrentVersionis less than thatstatic Versionof(int major)Creates aVersionwith only a major version number.static Versionof(int major, int minor)Creates aVersionwith major and minor version numbers.static Versionof(int major, int minor, int patch)Creates aVersionwith major, minor, and patch version numbers.static Versionof(int major, int minor, int patch, java.lang.String preRelease)Creates aVersionwith major, minor, patch, and pre-release components.static Versionof(java.lang.String version)Parses a version string and creates aVersioninstance.static VersionofVersion(int major)Creates aVersionwith only a major version number.static VersionofVersion(int major, int minor)Creates aVersionwith major and minor version numbers.static VersionofVersion(int major, int minor, int patch)Creates aVersionwith major, minor, and patch version numbers.static VersionofVersion(int major, int minor, int patch, java.lang.String preRelease)Creates aVersionwith major, minor, patch, and pre-release components.static VersionofVersion(java.lang.Class<?> classInResource)Creates aVersionby detecting the version from the artifact containing the specified class.static VersionofVersion(java.lang.String version)Parses a version string and creates aVersioninstance.java.lang.StringtoString()Returns the string representation of this version in the format "major.minor.patch" or "major.minor.patch-preRelease" if a pre-release identifier is present.
-
-
-
Constructor Detail
-
Version
public Version(int major)
Creates a newVersionwith the specified major version number. Minor and patch are defaulted to 0.Example Usage
Version v = new Version(1); // 1.0.0- Parameters:
major- the major version number
-
Version
public Version(int major, int minor)Creates a newVersionwith the specified major and minor version numbers. Patch is defaulted to 0.Example Usage
Version v = new Version(1, 2); // 1.2.0- Parameters:
major- the major version numberminor- the minor version number
-
Version
public Version(int major, int minor, int patch)Creates a newVersionwith the specified major, minor, and patch version numbers.Example Usage
Version v = new Version(1, 2, 3); // 1.2.3- Parameters:
major- the major version numberminor- the minor version numberpatch- the patch version number
-
Version
public Version(int major, int minor, int patch, java.lang.String preRelease)Creates a newVersionwith the specified major, minor, patch, and pre-release components.Example Usage
Version v = new Version(1, 2, 3, "SNAPSHOT"); // 1.2.3-SNAPSHOT- Parameters:
major- the major version number (must be non-negative)minor- the minor version number (must be non-negative)patch- the patch version number (must be non-negative)preRelease- the optional pre-release identifier (e.g., "SNAPSHOT", "alpha")- Throws:
java.lang.IllegalArgumentException- if major, minor, or patch is negative, or all are zero
-
-
Method Detail
-
getMajor
public int getMajor()
The major version- Returns:
- major version
-
getMinor
public int getMinor()
The minor version- Returns:
- minor version
-
getPatch
public int getPatch()
The patch- Returns:
- patch
-
getPreRelease
@Nullable public java.lang.String getPreRelease()
The pre-release- Returns:
- pre-release
-
gt
public boolean gt(Version that)
CurrentVersionis greater than that- Parameters:
that- the version to be compared- Returns:
trueif greater than, orfalse- See Also:
isGreaterThan(Version)
-
isGreaterThan
public boolean isGreaterThan(Version that)
CurrentVersionis greater than that- Parameters:
that- the version to be compared- Returns:
trueif greater than, orfalse- See Also:
gt(Version)
-
ge
public boolean ge(Version that)
CurrentVersionis greater than or equal to that- Parameters:
that- the version to be compared- Returns:
trueif greater than, orfalse- See Also:
isGreaterOrEqual(Version)
-
isGreaterOrEqual
public boolean isGreaterOrEqual(Version that)
CurrentVersionis greater than or equal to that- Parameters:
that- the version to be compared- Returns:
trueif greater than, orfalse- See Also:
ge(Version)
-
lt
public boolean lt(Version that)
CurrentVersionis less than that- Parameters:
that- the version to be compared- Returns:
trueif less than, orfalse
-
isLessThan
public boolean isLessThan(Version that)
CurrentVersionis less than that- Parameters:
that- the version to be compared- Returns:
trueif less than, orfalse
-
le
public boolean le(Version that)
CurrentVersionis less than or equal to that- Parameters:
that- the version to be compared- Returns:
trueif less than, orfalse- See Also:
isLessOrEqual(Version)
-
isLessOrEqual
public boolean isLessOrEqual(Version that)
CurrentVersionis less than or equal to that- Parameters:
that- the version to be compared- Returns:
trueif less than, orfalse- See Also:
le(Version)
-
eq
public boolean eq(Version that)
CurrentVersionis equal to that- Parameters:
that- the version to be compared- Returns:
trueif equals, orfalse
-
equals
public boolean equals(Version that)
CurrentVersionis equal to that- Parameters:
that- the version to be compared- Returns:
trueif equals, orfalse
-
equals
public boolean equals(java.lang.Object o)
CurrentVersionis equal to that- Overrides:
equalsin classjava.lang.Object- Parameters:
o- the version to be compared- Returns:
trueif equals, orfalse
-
hashCode
public int hashCode()
Returns a hash code value for this version.Example Usage
Version v = Version.of("1.2.3"); int hash = v.hashCode();- Overrides:
hashCodein classjava.lang.Object- Returns:
- a hash code value for this version
-
compareTo
public int compareTo(Version that)
Compares this version with another version for ordering. Versions are compared by major, then minor, then patch, then pre-release.Example Usage
Version v1 = Version.of("1.2.3"); Version v2 = Version.of("1.3.0"); int result = v1.compareTo(v2); // negative (v1 < v2)- Specified by:
compareToin interfacejava.lang.Comparable<Version>- Parameters:
that- the version to compare against- Returns:
- a negative integer, zero, or a positive integer as this version is less than, equal to, or greater than the specified version
-
toString
public java.lang.String toString()
Returns the string representation of this version in the format "major.minor.patch" or "major.minor.patch-preRelease" if a pre-release identifier is present.Example Usage
Version v = new Version(1, 2, 3, "SNAPSHOT"); String s = v.toString(); // "1.2.3-SNAPSHOT"- Overrides:
toStringin classjava.lang.Object- Returns:
- the version string
-
of
public static Version of(int major)
Creates aVersionwith only a major version number.Example Usage
Version v = Version.of(2); // 2.0.0- Parameters:
major- the major version number- Returns:
- a new
Versioninstance
-
of
public static Version of(int major, int minor)
Creates aVersionwith major and minor version numbers.Example Usage
Version v = Version.of(1, 2); // 1.2.0- Parameters:
major- the major version numberminor- the minor version number- Returns:
- a new
Versioninstance
-
of
public static Version of(int major, int minor, int patch)
Creates aVersionwith major, minor, and patch version numbers.Example Usage
Version v = Version.of(1, 2, 3); // 1.2.3- Parameters:
major- the major version numberminor- the minor version numberpatch- the patch version number- Returns:
- a new
Versioninstance
-
of
public static Version of(int major, int minor, int patch, java.lang.String preRelease)
Creates aVersionwith major, minor, patch, and pre-release components.Example Usage
Version v = Version.of(1, 0, 0, "beta"); // 1.0.0-beta- Parameters:
major- the major version numberminor- the minor version numberpatch- the patch version numberpreRelease- the pre-release identifier- Returns:
- a new
Versioninstance
-
of
public static Version of(java.lang.String version)
Parses a version string and creates aVersioninstance. Supports formats: "major", "major.minor", "major.minor.patch", "major.minor.patch-preRelease".Example Usage
Version v1 = Version.of("1.2.3"); // 1.2.3 Version v2 = Version.of("2.0.0-SNAPSHOT"); // 2.0.0-SNAPSHOT- Parameters:
version- the version string to parse- Returns:
- a new
Versioninstance - Throws:
java.lang.IllegalArgumentException- if the version string is null, blank, or invalid
-
ofVersion
public static Version ofVersion(int major)
Creates aVersionwith only a major version number.Example Usage
Version v = Version.ofVersion(2); // 2.0.0- Parameters:
major- the major version number- Returns:
- a new
Versioninstance
-
ofVersion
public static Version ofVersion(int major, int minor)
Creates aVersionwith major and minor version numbers.Example Usage
Version v = Version.ofVersion(1, 2); // 1.2.0- Parameters:
major- the major version numberminor- the minor version number- Returns:
- a new
Versioninstance
-
ofVersion
public static Version ofVersion(int major, int minor, int patch)
Creates aVersionwith major, minor, and patch version numbers.Example Usage
Version v = Version.ofVersion(1, 2, 3); // 1.2.3- Parameters:
major- the major version numberminor- the minor version numberpatch- the patch version number- Returns:
- a new
Versioninstance
-
ofVersion
public static Version ofVersion(int major, int minor, int patch, java.lang.String preRelease)
Creates aVersionwith major, minor, patch, and pre-release components.Example Usage
Version v = Version.ofVersion(1, 0, 0, "alpha"); // 1.0.0-alpha- Parameters:
major- the major version numberminor- the minor version numberpatch- the patch version numberpreRelease- the pre-release identifier- Returns:
- a new
Versioninstance
-
ofVersion
public static Version ofVersion(java.lang.String version)
Parses a version string and creates aVersioninstance. Supports formats: "major", "major.minor", "major.minor.patch", "major.minor.patch-preRelease".Example Usage
Version v1 = Version.ofVersion("1.2.3"); // 1.2.3 Version v2 = Version.ofVersion("2.0.0-SNAPSHOT"); // 2.0.0-SNAPSHOT Version v3 = Version.ofVersion("3"); // 3.0.0- Parameters:
version- the version string to parse- Returns:
- a new
Versioninstance - Throws:
java.lang.IllegalArgumentException- if the version string is null, blank, or contains non-numeric parts
-
ofVersion
public static Version ofVersion(@Nonnull java.lang.Class<?> classInResource)
Creates aVersionby detecting the version from the artifact containing the specified class. This method usesArtifactDetectorto locate the artifact and retrieve its version.Example Usage
Version version = Version.ofVersion(MyClass.class); // e.g., 1.0.0- Parameters:
classInResource- the class contained in the artifact whose version is to be detected- Returns:
- a new
Versioninstance - Throws:
java.lang.IllegalArgumentException- if the version can't be resolved
-
getVersion
@Nonnull public static Version getVersion(java.lang.Class<?> targetClass) throws java.lang.IllegalArgumentException
Class that exposes the version. Fetches the "Implementation-Version" manifest attribute from the jar file.- Parameters:
targetClass- the class to exposes the version- Returns:
- non-null
- Throws:
java.lang.IllegalArgumentException- if the "Implementation-Version" manifest attribute can't be fetched from the jar file.
-
-