in src/main/java/org/apache/sling/feature/maven/mojos/UpdateVersionsMojo.java [854:927]
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() );
}
}