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