summaryrefslogtreecommitdiffstats
path: root/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis
diff options
context:
space:
mode:
Diffstat (limited to 'bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis')
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java18
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java16
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageInfo.java6
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java9
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java17
5 files changed, 31 insertions, 35 deletions
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java
index a93f8cb87d5..4fd8e936f3d 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java
@@ -21,7 +21,7 @@ import java.util.Optional;
*/
public class Analyze {
- public static ClassFileMetaData analyzeClass(File classFile) {
+ static ClassFileMetaData analyzeClass(File classFile) {
return analyzeClass(classFile, null);
}
@@ -52,16 +52,12 @@ public class Analyze {
}
static Optional<String> getClassName(Type aType) {
- switch (aType.getSort()) {
- case Type.ARRAY:
- return getClassName(aType.getElementType());
- case Type.OBJECT:
- return Optional.of(aType.getClassName());
- case Type.METHOD:
- return getClassName(aType.getReturnType());
- default:
- return Optional.empty();
- }
+ return switch (aType.getSort()) {
+ case Type.ARRAY -> getClassName(aType.getElementType());
+ case Type.OBJECT -> Optional.of(aType.getClassName());
+ case Type.METHOD -> getClassName(aType.getReturnType());
+ default -> Optional.empty();
+ };
}
static AnnotationVisitor visitAnnotationDefault(ImportCollector collector) {
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 e57af606b3a..310527e9254 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
@@ -120,18 +120,10 @@ class AnalyzeClassVisitor extends ClassVisitor implements ImportCollector {
public void visit(String name, Object value) {
if (name != null) {
switch (name) {
- case "major":
- major = (int) value;
- break;
- case "minor":
- minor = (int) value;
- break;
- case "micro":
- micro = (int) value;
- break;
- case "qualifier":
- qualifier = (String) value;
- break;
+ case "major" -> major = (int) value;
+ case "minor" -> minor = (int) value;
+ case "micro" -> micro = (int) value;
+ case "qualifier" -> qualifier = (String) value;
}
}
}
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageInfo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageInfo.java
index c19320b8e98..7b665d67931 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageInfo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageInfo.java
@@ -3,12 +3,16 @@ package com.yahoo.container.plugin.classanalysis;
import java.util.Optional;
/**
- * The package
+ * Info about a Java package deduced from class analysis.
*
* @author gjoranv
*/
record PackageInfo(String name, Optional<ExportPackageAnnotation> exportPackage, boolean isPublicApi) {
+ /**
+ * Returns this if it has an ExportPackage annotation, otherwise returns the other.
+ * Used to combine objects, where this should take precedence over the other.
+ */
PackageInfo hasExportPackageOrElse(PackageInfo other) {
return exportPackage().isPresent() ? this : other;
}
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java
index 51fba228b41..699736195cf 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java
@@ -8,7 +8,6 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -49,6 +48,14 @@ public class PackageTally {
.collect(Collectors.toSet());
}
+ public Set<String> nonPublicApiExportedPackages() {
+ return definedPackages.values().stream()
+ .filter(pkgInfo -> pkgInfo.exportPackage().isPresent())
+ .filter(pkgInfo -> ! pkgInfo.isPublicApi())
+ .map(PackageInfo::name)
+ .collect(Collectors.toSet());
+ }
+
/**
* Returns the set of packages that is referenced from this tally, but not included in the given set of available packages.
*
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java
index 48a128c2f0d..a9f95f2b2f2 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java
@@ -7,7 +7,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* Utility methods related to packages.
@@ -37,19 +36,17 @@ public class Packages {
}
/**
- * Returns the imported Vespa packages that don't exist in the given set of allowed packages.
+ * Returns the imported packages that exist in the given set of disallowed packages.
*/
- public static List<String> disallowedVespaImports(Map<String, ImportPackages.Import> imports, List<String> allowed) {
+ public static List<String> disallowedImports(Map<String, ImportPackages.Import> imports, List<String> disallowed) {
if (imports == null || imports.isEmpty()) return List.of();
- var publicApi = allowed == null ? Set.of() : new HashSet<>(allowed);
+ var importedSet = new HashSet<>(imports.keySet());
+ var disallowedSet = disallowed == null ? Set.of() : new HashSet<>(disallowed);
- Set<String> yahooImports = imports.keySet().stream()
- .filter(pkg -> pkg.startsWith("com.yahoo") || pkg.startsWith("ai.vespa."))
- .collect(Collectors.toSet());
-
- List<String> disallowedImports = yahooImports.stream().collect(Collectors.groupingBy(publicApi::contains)).get(false);
- return disallowedImports == null ? List.of() : disallowedImports;
+ return importedSet.stream()
+ .filter(disallowedSet::contains)
+ .toList();
}
public static PackageMetaData analyzePackages(Set<ClassFileMetaData> allClasses) {