private static ArtifactVersion innerIncrementSegment()

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() );
        }
    }