src/main/java/de/unixwork/uwproj/CompatibilityCheck.java

Sat, 29 Nov 2025 18:11:18 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 29 Nov 2025 18:11:18 +0100
changeset 167
fa31a6d0ec56
parent 121
155cd224b51d
permissions
-rw-r--r--

improve 64 libdir detection on solaris

package de.unixwork.uwproj;

public class CompatibilityCheck {

    private CompatibilityCheck() {}

    private static int[] versionParts(String ver) {
        if (ver.isBlank()) return new int[]{0,0,0};
        final var partStrings = ver.split("\\.");
        try {
            return new int[]{
                    partStrings.length > 0 ? Integer.parseInt(partStrings[0]) : 0,
                    partStrings.length > 1 ? Integer.parseInt(partStrings[1]) : 0,
                    partStrings.length > 2 ? Integer.parseInt(partStrings[2]) : 0
            };
        } catch (NumberFormatException e) {
            return new int[]{0,0,0};
        }
    }

    public static void check(String expected, String actual) throws CompatibilityException {
        final var expectedVer = versionParts(expected);
        final var actualVer = versionParts(actual);
        if (expectedVer[0] != actualVer[0] || expectedVer[1] > actualVer[1]) {
            if (actual.isBlank()) actual = "unspecified";
            throw new CompatibilityException("Expected project file version '" + expected + "' but got '" + actual + "'.");
        }
    }

    public static class CompatibilityException extends Exception {
        public CompatibilityException(String message) {
            super(message);
        }
    }
}

mercurial