All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fasterxml.jackson.core.Version Maven / Gradle / Ivy

The newest version!
/* Jackson JSON-processor.
 *
 * Copyright (c) 2007- Tatu Saloranta, [email protected]
 */

package com.fasterxml.jackson.core;

import java.util.Objects;

/**
 * Object that encapsulates versioning information of a component.
 * Version information includes not just version number but also
 * optionally group and artifact ids of the component being versioned.
 *

* Note that optional group and artifact id properties are new with Jackson 2.0: * if provided, they should align with Maven artifact information. */ public class Version implements Comparable, java.io.Serializable { private static final long serialVersionUID = 1L; private final static Version UNKNOWN_VERSION = new Version(0, 0, 0, null, null, null); protected final int _majorVersion; protected final int _minorVersion; protected final int _patchLevel; protected final String _groupId; protected final String _artifactId; /** * Additional information for snapshot versions; null for non-snapshot * (release) versions. */ protected final String _snapshotInfo; /** * @param major Major version number * @param minor Minor version number * @param patchLevel patch level of version * @param snapshotInfo Optional additional string qualifier * * @since 2.1 * @deprecated Use variant that takes group and artifact ids */ @Deprecated public Version(int major, int minor, int patchLevel, String snapshotInfo) { this(major, minor, patchLevel, snapshotInfo, null, null); } public Version(int major, int minor, int patchLevel, String snapshotInfo, String groupId, String artifactId) { _majorVersion = major; _minorVersion = minor; _patchLevel = patchLevel; _snapshotInfo = snapshotInfo; _groupId = (groupId == null) ? "" : groupId; _artifactId = (artifactId == null) ? "" : artifactId; } /** * Method returns canonical "not known" version, which is used as version * in cases where actual version information is not known (instead of null). * * @return Version instance to use as a placeholder when actual version is not known * (or not relevant) */ public static Version unknownVersion() { return UNKNOWN_VERSION; } /** * @return {@code True} if this instance is the one returned by * call to {@link #unknownVersion()} * * @since 2.7 to replace misspelled {@link #isUknownVersion()} */ public boolean isUnknownVersion() { return (this == UNKNOWN_VERSION); } public boolean isSnapshot() { return (_snapshotInfo != null) && !_snapshotInfo.isEmpty(); } /** * @return {@code True} if this instance is the one returned by * call to {@link #unknownVersion()} * * @deprecated Since 2.7 use correctly spelled method {@link #isUnknownVersion()} */ @Deprecated public boolean isUknownVersion() { return isUnknownVersion(); } public int getMajorVersion() { return _majorVersion; } public int getMinorVersion() { return _minorVersion; } public int getPatchLevel() { return _patchLevel; } public String getGroupId() { return _groupId; } public String getArtifactId() { return _artifactId; } public String toFullString() { return _groupId + '/' + _artifactId + '/' + toString(); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(_majorVersion).append('.'); sb.append(_minorVersion).append('.'); sb.append(_patchLevel); if (isSnapshot()) { sb.append('-').append(_snapshotInfo); } return sb.toString(); } @Override public int hashCode() { return _artifactId.hashCode() ^ _groupId.hashCode() ^ Objects.hashCode(_snapshotInfo) + _majorVersion - _minorVersion + _patchLevel; } @Override public boolean equals(Object o) { if (o == this) return true; if (o == null) return false; if (o.getClass() != getClass()) return false; Version other = (Version) o; return (other._majorVersion == _majorVersion) && (other._minorVersion == _minorVersion) && (other._patchLevel == _patchLevel) && Objects.equals(other._snapshotInfo, _snapshotInfo) && other._artifactId.equals(_artifactId) && other._groupId.equals(_groupId) ; } @Override public int compareTo(Version other) { if (other == this) return 0; int diff = _groupId.compareTo(other._groupId); if (diff == 0) { diff = _artifactId.compareTo(other._artifactId); if (diff == 0) { diff = _majorVersion - other._majorVersion; if (diff == 0) { diff = _minorVersion - other._minorVersion; if (diff == 0) { diff = _patchLevel - other._patchLevel; if (diff == 0) { // Snapshot: non-snapshot AFTER snapshot, otherwise alphabetical if (isSnapshot()) { if (other.isSnapshot()) { diff = _snapshotInfo.compareTo(other._snapshotInfo); } else { diff = -1; } } else if (other.isSnapshot()) { diff = 1; } else { diff = 0; } } } } } } return diff; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy