Default implementation of artifact versioning.
Method from org.apache.geronimo.kernel.repository.Version Detail: |
public int compareTo(Object o) {
Version otherVersion = (Version) o;
int result = compareIntegers(majorVersion, otherVersion.majorVersion);
if (result == 0) {
result = compareIntegers(minorVersion, otherVersion.minorVersion);
}
if (result == 0) {
result = compareIntegers(incrementalVersion, otherVersion.incrementalVersion);
}
if (result == 0) {
if (buildNumber != null || otherVersion.buildNumber != null) {
result = compareIntegers(buildNumber, otherVersion.buildNumber);
} else if (qualifier != null) {
if (otherVersion.qualifier != null) {
if (qualifier.length() > otherVersion.qualifier.length() &&
qualifier.startsWith(otherVersion.qualifier)) {
// here, the longer one that otherwise match is considered older
result = -1;
} else if (qualifier.length() < otherVersion.qualifier.length() &&
otherVersion.qualifier.startsWith(qualifier)) {
// here, the longer one that otherwise match is considered older
result = 1;
} else {
result = qualifier.compareTo(otherVersion.qualifier);
}
} else {
// otherVersion has no qualifier but we do - that's newer
result = -1;
}
} else if (otherVersion.qualifier != null) {
// otherVersion has a qualifier but we don't, we're newer
result = 1;
}
}
return result;
}
|
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (other == null || this.getClass() != other.getClass()) {
return false;
}
Version v = (Version) other;
if (majorVersion == null? v.majorVersion != null: !majorVersion.equals(v.majorVersion)) {
return false;
}
if (minorVersion == null? v.minorVersion != null: !minorVersion.equals(v.minorVersion)) {
return false;
}
if (incrementalVersion == null? v.incrementalVersion != null: !incrementalVersion.equals(v.incrementalVersion)) {
return false;
}
if (buildNumber == null? v.buildNumber != null: !buildNumber.equals(v.buildNumber)) {
return false;
}
return qualifier == null ? v.qualifier == null : qualifier.equals(v.qualifier);
}
|
public int getBuildNumber() {
return buildNumber != null ? buildNumber.intValue() : 0;
}
|
public int getIncrementalVersion() {
return incrementalVersion != null ? incrementalVersion.intValue() : 0;
}
|
public int getMajorVersion() {
return majorVersion != null ? majorVersion.intValue() : 0;
}
|
public int getMinorVersion() {
return minorVersion != null ? minorVersion.intValue() : 0;
}
|
public String getQualifier() {
return qualifier;
}
|
public int hashCode() {
int hashCode = 0;
if (majorVersion != null) {
hashCode = majorVersion.intValue();
}
if (minorVersion != null) {
hashCode = 37 * hashCode + minorVersion.intValue();
}
if (incrementalVersion != null) {
hashCode = 37 * hashCode + incrementalVersion.intValue();
}
if (buildNumber != null) {
hashCode = 37 * hashCode + buildNumber.intValue();
}
if (qualifier != null) {
hashCode = 37 * hashCode + qualifier.hashCode();
}
return hashCode;
}
|
public final void parseVersion(String version) {
int index = version.indexOf("-");
String part1;
String part2 = null;
if (index < 0) {
part1 = version;
} else {
part1 = version.substring(0, index);
part2 = version.substring(index + 1);
}
if (part2 != null) {
try {
if (part2.length() == 1 || !part2.startsWith("0")) {
buildNumber = Integer.valueOf(part2);
} else {
qualifier = part2;
}
}
catch (NumberFormatException e) {
qualifier = part2;
}
}
if (part1.indexOf(".") < 0 && !part1.startsWith("0")) {
try {
majorVersion = Integer.valueOf(part1);
}
catch (NumberFormatException e) {
// qualifier is the whole version, including "-"
qualifier = version;
buildNumber = null;
}
} else {
boolean fallback = false;
StringTokenizer tok = new StringTokenizer(part1, ".");
try {
majorVersion = getNextIntegerToken(tok);
if (tok.hasMoreTokens()) {
minorVersion = getNextIntegerToken(tok);
}
if (tok.hasMoreTokens()) {
incrementalVersion = getNextIntegerToken(tok);
}
if (tok.hasMoreTokens()) {
fallback = true;
}
}
catch (NumberFormatException e) {
fallback = true;
}
if (fallback) {
// qualifier is the whole version, including "-"
qualifier = version;
majorVersion = null;
minorVersion = null;
incrementalVersion = null;
}
}
}
|
public String toString() {
StringBuffer buf = new StringBuffer();
if (majorVersion != null) {
buf.append(majorVersion);
}
if (minorVersion != null) {
buf.append(".");
buf.append(minorVersion);
}
if (incrementalVersion != null) {
buf.append(".");
buf.append(incrementalVersion);
}
if (buildNumber != null) {
buf.append("-");
buf.append(buildNumber);
} else if (qualifier != null) {
if (buf.length() > 0) {
buf.append("-");
}
buf.append(qualifier);
}
return buf.toString();
}
|