diff options
Diffstat (limited to 'bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis')
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) { |