in src/main/java/org/apache/sling/feature/maven/mojos/UpdateVersionsMojo.java [873:946]
private static ArtifactVersion innerIncrementSegment(final ArtifactVersion v, final int segment) {
int segmentCount = innerGetSegmentCount(v);
if (segment < 0 || segment >= segmentCount) {
throw new IllegalArgumentException(v.toString());
}
String version = v.toString();
if (segmentCount == 1) {
// only the qualifier
version = alphaNumIncrement(version);
return new DefaultArtifactVersion(version);
} else {
int major = v.getMajorVersion();
int minor = v.getMinorVersion();
int incremental = v.getIncrementalVersion();
int build = v.getBuildNumber();
String qualifier = v.getQualifier();
int minorIndex = version.indexOf('.');
boolean haveMinor = minorIndex != -1;
int incrementalIndex = haveMinor ? version.indexOf('.', minorIndex + 1) : -1;
boolean haveIncremental = incrementalIndex != -1;
int buildIndex = version.indexOf('-');
boolean haveBuild = buildIndex != -1 && qualifier == null;
boolean haveQualifier = buildIndex != -1 && qualifier != null;
switch (segment) {
case 0:
major++;
minor = 0;
incremental = 0;
build = 0;
qualifier = null;
break;
case 1:
minor++;
incremental = 0;
build = 0;
if (haveQualifier && qualifier.endsWith("SNAPSHOT")) {
qualifier = "SNAPSHOT";
}
break;
case 2:
incremental++;
build = 0;
qualifier = null;
break;
case 3:
if (haveQualifier) {
qualifier = qualifierIncrement(qualifier);
} else {
build++;
}
break;
}
final StringBuilder result = new StringBuilder();
result.append(major);
if (haveMinor || minor > 0 || incremental > 0) {
result.append('.');
result.append(minor);
}
if (haveIncremental || incremental > 0) {
result.append('.');
result.append(incremental);
}
if (haveQualifier && qualifier != null) {
result.append('-');
result.append(qualifier);
} else if (haveBuild || build > 0) {
result.append('-');
result.append(build);
}
return new DefaultArtifactVersion(result.toString());
}
}