summaryrefslogtreecommitdiffstats
path: root/bundle-plugin
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2022-05-11 00:00:43 +0200
committergjoranv <gv@verizonmedia.com>2022-06-08 11:45:21 +0200
commit9bd635fb946b087506dcf83e6fb471bb0dabac5c (patch)
treed002aaa41cadb635a6a82fa311e53d166a3a2587 /bundle-plugin
parenta740306a3b27782aab5636c9459a7525217196cc (diff)
Test new language features from Java 11 to 17
- Records, switch statements and pattern matching for instanceof.
Diffstat (limited to 'bundle-plugin')
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java22
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/RecordWithOverride.java20
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/SwitchStatement.java23
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();
+ };
+ }
+}