diff options
3 files changed, 65 insertions, 0 deletions
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 1c061ca49a2..f9f56a31b20 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 @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.plugin.classanalysis; +import com.google.common.collect.ImmutableList; import com.yahoo.container.plugin.classanalysis.sampleclasses.Base; import com.yahoo.container.plugin.classanalysis.sampleclasses.ClassAnnotation; import com.yahoo.container.plugin.classanalysis.sampleclasses.InvisibleAnnotation; @@ -10,6 +11,8 @@ import com.yahoo.container.plugin.classanalysis.sampleclasses.InvisibleDummyAnno import com.yahoo.container.plugin.classanalysis.sampleclasses.Fields; import com.yahoo.container.plugin.classanalysis.sampleclasses.Interface1; import com.yahoo.container.plugin.classanalysis.sampleclasses.Interface2; +import com.yahoo.container.plugin.classanalysis.sampleclasses.RecordWithOverride; +import com.yahoo.container.plugin.classanalysis.sampleclasses.SwitchStatement; import com.yahoo.container.plugin.classanalysis.sampleclasses.MethodAnnotation; import com.yahoo.container.plugin.classanalysis.sampleclasses.MethodInvocation; import com.yahoo.osgi.annotation.ExportPackage; @@ -169,4 +172,23 @@ public class AnalyzeClassTest { assertTrue(Analyze.analyzeClass(classFile("class/Utf8")).getReferencedClasses() .contains("org.aspectj.weaver.MethodDeclarationLineNumber")); } + + @Test + public void switch_statements_are_analyzed() { + var referencedClasses = analyzeClass(SwitchStatement.class).getReferencedClasses(); + assertTrue(referencedClasses.contains(name(ImmutableList.class))); + assertTrue(referencedClasses.contains(name(IllegalArgumentException.class))); + } + + @Test + public void records_are_analyzed() { + var referencedClasses = analyzeClass(RecordWithOverride.class).getReferencedClasses(); + assertTrue(referencedClasses.containsAll(List.of( + name(java.util.List.class), + name(Byte.class), + name(ImmutableList.class), + name(IllegalArgumentException.class) + ))); + + } } diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/RecordWithOverride.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/RecordWithOverride.java new file mode 100644 index 00000000000..299a9930215 --- /dev/null +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/RecordWithOverride.java @@ -0,0 +1,20 @@ +package com.yahoo.container.plugin.classanalysis.sampleclasses; + +import com.google.common.collect.ImmutableList; + +import java.util.List; + +/** + * Input for class analysis test verifying Java 15 records, + * plus Java 16 pattern matching for instanceof. + * + * @author gjoranv + */ +public record RecordWithOverride(List<Byte> list) { + + public RecordWithOverride { + if (list instanceof ImmutableList<Byte> l) { + throw new IllegalArgumentException(l.toString()); + } + } +} diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/SwitchStatement.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/SwitchStatement.java new file mode 100644 index 00000000000..5dbe90e2b58 --- /dev/null +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/SwitchStatement.java @@ -0,0 +1,23 @@ +package com.yahoo.container.plugin.classanalysis.sampleclasses; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; + +import java.util.Collection; + +/** + * Input for class analysis test verifying Java 14 switch statement. + * + * @author gjoranv + */ +public class SwitchStatement { + + void switchStatement() throws Exception{ + String foo = ""; + Collection<?> c = switch (foo) { + case "list" -> ImmutableList.of(); + case "set" -> ImmutableSet.of(); + default -> throw new IllegalArgumentException(); + }; + } +} |