private static ArtifactVersion innerIncrementSegment()

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