aboutsummaryrefslogtreecommitdiffstats
path: root/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java
diff options
context:
space:
mode:
authorbjormel <bjormel@yahooinc.com>2023-10-26 13:59:28 +0000
committerbjormel <bjormel@yahooinc.com>2023-10-26 13:59:28 +0000
commit567be9a1f6353cec41c23bfd1fcd46b4b2a4d2d7 (patch)
tree4664a743e166a5e11aee7b9acd70ad8ee2617612 /bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java
parente9058b555d4dfea2f6c872d9a677e8678b569569 (diff)
parentbce3b8e926bf9da880172acbe1ba4b12d5e026d6 (diff)
Merge branch 'master' into bjormel/aws-main-controllerbjormel/aws-main-controller
Diffstat (limited to 'bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java')
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java
index 310527e9254..6b8f3f6ba12 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java
@@ -1,7 +1,8 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import com.yahoo.api.annotations.PublicApi;
+import com.yahoo.container.plugin.classanalysis.Analyze.JdkVersionCheck;
import com.yahoo.osgi.annotation.ExportPackage;
import com.yahoo.osgi.annotation.Version;
import org.apache.maven.artifact.versioning.ArtifactVersion;
@@ -23,6 +24,7 @@ import java.util.Set;
*
* @author Tony Vaagenes
* @author ollivir
+ * @author gjoranv
*/
class AnalyzeClassVisitor extends ClassVisitor implements ImportCollector {
@@ -32,10 +34,12 @@ class AnalyzeClassVisitor extends ClassVisitor implements ImportCollector {
private boolean isPublicApi = false;
private final Optional<ArtifactVersion> defaultExportPackageVersion;
+ private final JdkVersionCheck jdkVersionCheck;
- AnalyzeClassVisitor(ArtifactVersion defaultExportPackageVersion) {
+ AnalyzeClassVisitor(ArtifactVersion defaultExportPackageVersion, JdkVersionCheck jdkVersionCheck) {
super(Opcodes.ASM9);
this.defaultExportPackageVersion = Optional.ofNullable(defaultExportPackageVersion);
+ this.jdkVersionCheck = jdkVersionCheck;
}
@Override
@@ -73,6 +77,11 @@ class AnalyzeClassVisitor extends ClassVisitor implements ImportCollector {
this.name = Analyze.internalNameToClassName(name)
.orElseThrow(() -> new RuntimeException("Unable to resolve class name for " + name));
+ if (version > Opcodes.V17 && jdkVersionCheck == JdkVersionCheck.ENABLED) {
+ var jdkVersion = version - 44;
+ throw new RuntimeException("Class " + name + " is compiled for Java version " + jdkVersion + ", but only Java 17 is supported");
+ }
+
addImportWithInternalName(superName);
Arrays.asList(interfaces).forEach(this::addImportWithInternalName);