Blob Blame History Raw
package org.fedoraproject.javapackages.validator.config;

import java.util.Set;

import org.fedoraproject.javadeptools.rpm.RpmInfo;
import org.fedoraproject.javapackages.validator.Common;
import org.fedoraproject.javapackages.validator.config.BytecodeVersionConfig;

public class BytecodeVersionConfigJP implements BytecodeVersionConfig {
    private Set<String> packagesReqVersion8 = Set.of(new String[] {
            "maven",
            "apache-commons-cli",
            "apache-commons-codec",
            "apache-commons-io",
            "apache-commons-lang3",
            "atinject",
            "cdi-api",
            "google-guice",
            "guava",
            "httpcomponents-client",
            "httpcomponents-core",
            "jakarta-annotations",
            "jansi",
            "jsr-305",
            "maven-resolver",
            "maven-shared-utils",
            "maven-wagon",
            "plexus-cipher",
            "plexus-classworlds",
            "plexus-containers",
            "plexus-interpolation",
            "plexus-sec-dispatcher",
            "plexus-utils",
            "sisu",
            "slf4j",

            "ant",
            "antlr",
            "apache-commons-net",
            "bcel",
            "bsf",
            "jakarta-activation1",
            "jakarta-mail",
            "jakarta-oro",
            "jdepend",
            "jsch",
            "jzlib",
            "regexp",
            "xalan-j2",
            "xerces-j2",
            "xml-commons-apis",
            "xml-commons-resolver",
    });

    @Override
    public boolean allowedVersion(RpmInfo rpm, String jarName, String className, int version) {
        // JEP 238: Multi-Release JAR Files
        // https://openjdk.org/jeps/238
        if (className.startsWith("META-INF/versions/")) {
            return version <= 44 + Integer.parseInt(className.substring(18, className.indexOf('/', 18)));
        }

        if (className.equals("module-info.class") || className.equals("package-info.class")) {
            return true;
        }

        if (packagesReqVersion8.contains(rpm.getPackageName())) {
            return version <= 44 + 8;
        }

        return version <= 44 + 17;
    }
}