diff options
author | gjoranv <gv@verizonmedia.com> | 2022-05-23 11:56:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-23 11:56:48 +0200 |
commit | 01684de5af498c76f7bb78edb8864ad14b6610ff (patch) | |
tree | caf9613d52c92363db9a782999c80cb34bd4fbcb | |
parent | 149a8f599c19f9a4262428cd758edaef63286c8a (diff) | |
parent | 9e319184dc6719a10b280ae6a8484448c839bf68 (diff) |
Merge pull request #22703 from vespa-engine/arnej/skip-invis-ann
only visible annotations are needed at runtime.
5 files changed, 37 insertions, 1 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 307509f0452..c5522c4c96a 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 @@ -160,7 +160,9 @@ class AnalyzeClassVisitor extends ClassVisitor implements ImportCollector { if (ExportPackage.class.getName().equals(Type.getType(desc).getClassName())) { return visitExportPackage(); } else { - addImportWithTypeDesc(desc); + if (visible) { + addImportWithTypeDesc(desc); + } return Analyze.visitAnnotationDefault(this); } } diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java index 6b9b0845328..1c061ca49a2 100644 --- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java @@ -3,8 +3,10 @@ package com.yahoo.container.plugin.classanalysis; import com.yahoo.container.plugin.classanalysis.sampleclasses.Base; import com.yahoo.container.plugin.classanalysis.sampleclasses.ClassAnnotation; +import com.yahoo.container.plugin.classanalysis.sampleclasses.InvisibleAnnotation; import com.yahoo.container.plugin.classanalysis.sampleclasses.Derived; import com.yahoo.container.plugin.classanalysis.sampleclasses.DummyAnnotation; +import com.yahoo.container.plugin.classanalysis.sampleclasses.InvisibleDummyAnnotation; import com.yahoo.container.plugin.classanalysis.sampleclasses.Fields; import com.yahoo.container.plugin.classanalysis.sampleclasses.Interface1; import com.yahoo.container.plugin.classanalysis.sampleclasses.Interface2; @@ -109,6 +111,11 @@ public class AnalyzeClassTest { } @Test + public void invisible_annotation_not_included() { + assertFalse(analyzeClass(InvisibleAnnotation.class).getReferencedClasses().contains(name(InvisibleDummyAnnotation.class))); + } + + @Test public void method_annotation_is_included() { assertTrue(analyzeClass(MethodAnnotation.class).getReferencedClasses().contains(name(DummyAnnotation.class))); } diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/DummyAnnotation.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/DummyAnnotation.java index a07b2917bd4..42335da3d62 100644 --- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/DummyAnnotation.java +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/DummyAnnotation.java @@ -1,9 +1,13 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.plugin.classanalysis.sampleclasses; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + /** * Input for class analysis tests. * @author Tony Vaagenes */ +@Retention(RetentionPolicy.RUNTIME) public @interface DummyAnnotation { } diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/InvisibleAnnotation.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/InvisibleAnnotation.java new file mode 100644 index 00000000000..ced7c3305b0 --- /dev/null +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/InvisibleAnnotation.java @@ -0,0 +1,10 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.plugin.classanalysis.sampleclasses; + +/** + * Input for class analysis tests.* + * @author arnej + */ +@InvisibleDummyAnnotation +public class InvisibleAnnotation { +} diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/InvisibleDummyAnnotation.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/InvisibleDummyAnnotation.java new file mode 100644 index 00000000000..b3cb75df354 --- /dev/null +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/InvisibleDummyAnnotation.java @@ -0,0 +1,13 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.plugin.classanalysis.sampleclasses; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Input for class analysis tests. + * @author arnej + */ +@Retention(RetentionPolicy.CLASS) +public @interface InvisibleDummyAnnotation { +} |