diff options
Diffstat (limited to 'bundle-plugin/src/main/java/com')
9 files changed, 32 insertions, 12 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 054e820b1a4..7c34539921b 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 @@ -13,7 +13,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.Optional; - /** * Main entry point for class analysis * @@ -21,6 +20,7 @@ import java.util.Optional; * @author ollivir */ public class Analyze { + public static ClassFileMetaData analyzeClass(File classFile) { return analyzeClass(classFile, null); } @@ -44,7 +44,7 @@ public class Analyze { } static Optional<String> internalNameToClassName(String internalClassName) { - if(internalClassName == null) { + if (internalClassName == null) { return Optional.empty(); } else { return getClassName(Type.getObjectType(internalClassName)); @@ -53,12 +53,14 @@ 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()); - default: - return Optional.empty(); + 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(); } } @@ -89,4 +91,5 @@ public class Analyze { } }; } + } 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 88b752ae945..307509f0452 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 @@ -24,8 +24,9 @@ import java.util.Set; * @author ollivir */ class AnalyzeClassVisitor extends ClassVisitor implements ImportCollector { + private String name = null; - private Set<String> imports = new HashSet<>(); + private final Set<String> imports = new HashSet<>(); private Optional<ExportPackageAnnotation> exportPackageAnnotation = Optional.empty(); private final Optional<ArtifactVersion> defaultExportPackageVersion; @@ -168,4 +169,5 @@ class AnalyzeClassVisitor extends ClassVisitor implements ImportCollector { assert (!imports.contains("int")); return new ClassFileMetaData(name, imports, exportPackageAnnotation); } + } diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeFieldVisitor.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeFieldVisitor.java index b4c44c9ed40..051df41d62b 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeFieldVisitor.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeFieldVisitor.java @@ -14,6 +14,7 @@ import java.util.Set; * @author ollivir */ public class AnalyzeFieldVisitor extends FieldVisitor implements ImportCollector { + private final AnalyzeClassVisitor analyzeClassVisitor; private final Set<String> imports = new HashSet<>(); @@ -46,4 +47,5 @@ public class AnalyzeFieldVisitor extends FieldVisitor implements ImportCollector public void visitEnd() { analyzeClassVisitor.addImports(imports); } + } diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodVisitor.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodVisitor.java index b7d1291d54a..7913f315cdd 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodVisitor.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodVisitor.java @@ -20,7 +20,9 @@ import java.util.Set; * @author ollivir */ class AnalyzeMethodVisitor extends MethodVisitor implements ImportCollector { + private final Set<String> imports = new HashSet<>(); + private final AnalyzeClassVisitor analyzeClassVisitor; AnalyzeMethodVisitor(AnalyzeClassVisitor analyzeClassVisitor) { @@ -104,13 +106,14 @@ class AnalyzeMethodVisitor extends MethodVisitor implements ImportCollector { @Override public void visitInvokeDynamicInsn(String name, String desc, Handle bootstrapMethod, Object... bootstrapMethodArgs) { + addImportWithTypeDesc(desc); for (Object arg : bootstrapMethodArgs) { if (arg instanceof Type) { addImport((Type) arg); } else if (arg instanceof Handle) { addImportWithInternalName(((Handle) arg).getOwner()); Arrays.asList(Type.getArgumentTypes(desc)).forEach(this::addImport); - } else if ((arg instanceof Number) == false && (arg instanceof String) == false) { + } else if ( ! (arg instanceof Number) && ! (arg instanceof String)) { throw new AssertionError("Unexpected type " + arg.getClass() + " with value '" + arg + "'"); } } @@ -165,4 +168,5 @@ class AnalyzeMethodVisitor extends MethodVisitor implements ImportCollector { @Override public void visitCode() { } + } diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeSignatureVisitor.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeSignatureVisitor.java index d3c32e11201..61c37e99edf 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeSignatureVisitor.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeSignatureVisitor.java @@ -12,10 +12,10 @@ import java.util.Set; * @author Tony Vaagenes * @author ollivir */ - class AnalyzeSignatureVisitor extends SignatureVisitor implements ImportCollector { + private final AnalyzeClassVisitor analyzeClassVisitor; - private Set<String> imports = new HashSet<>(); + private final Set<String> imports = new HashSet<>(); AnalyzeSignatureVisitor(AnalyzeClassVisitor analyzeClassVisitor) { super(Opcodes.ASM7); @@ -116,4 +116,5 @@ class AnalyzeSignatureVisitor extends SignatureVisitor implements ImportCollecto if (signature != null) new SignatureReader(signature).acceptType(new AnalyzeSignatureVisitor(analyzeClassVisitor)); } + } diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ClassFileMetaData.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ClassFileMetaData.java index 4195f342e92..5601430a27f 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ClassFileMetaData.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ClassFileMetaData.java @@ -11,6 +11,7 @@ import java.util.Set; * @author ollivir */ public class ClassFileMetaData { + private final String name; private final Set<String> referencedClasses; private final Optional<ExportPackageAnnotation> exportPackage; @@ -32,4 +33,5 @@ public class ClassFileMetaData { public Optional<ExportPackageAnnotation> getExportPackage() { return exportPackage; } + } diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ExportPackageAnnotation.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ExportPackageAnnotation.java index 955056b2306..7f3fb9522f7 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ExportPackageAnnotation.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ExportPackageAnnotation.java @@ -9,6 +9,7 @@ import java.util.regex.Pattern; * @author ollivir */ public class ExportPackageAnnotation { + private final int major; private final int minor; private final int micro; @@ -59,4 +60,5 @@ public class ExportPackageAnnotation { public int hashCode() { return Objects.hash(major, minor, micro, qualifier); } + } diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ImportCollector.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ImportCollector.java index 1dc1e49897d..e341ef1a80f 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ImportCollector.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ImportCollector.java @@ -11,6 +11,7 @@ import java.util.Set; * @author ollivir */ public interface ImportCollector { + Set<String> imports(); default void addImportWithTypeDesc(String typeDescriptor) { @@ -32,4 +33,5 @@ public interface ImportCollector { default void addImport(Optional<String> anImport) { anImport.ifPresent(pkg -> imports().add(pkg)); } + } 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 3d20bfd54df..9eef8a55c01 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 @@ -11,6 +11,7 @@ import java.util.Set; * @author ollivir */ public class Packages { + public static class PackageMetaData { public final Set<String> definedPackages; public final Set<String> referencedExternalPackages; @@ -40,4 +41,5 @@ public class Packages { referencedPackages.removeAll(definedPackages); return new PackageMetaData(definedPackages, referencedPackages); } + } |