in src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java [92:156]
public JarClasses analyze(JarAnalyzer jarAnalyzer) {
JarClasses classes = jarAnalyzer.getJarData().getJarClasses();
if (classes == null) {
String jarfilename = jarAnalyzer.getFile().getAbsolutePath();
classes = new JarClasses();
List<JarEntry> classList = jarAnalyzer.getClassEntries();
classes.setDebugPresent(false);
double maxVersion = 0.0;
for (JarEntry entry : classList) {
String classname = entry.getName();
try {
ClassParser classParser = new ClassParser(jarfilename, classname);
JavaClass javaClass = classParser.parse();
String classSignature = javaClass.getClassName();
if (!classes.isDebugPresent()) {
if (hasDebugSymbols(javaClass)) {
classes.setDebugPresent(true);
}
}
double classVersion = javaClass.getMajor();
if (javaClass.getMinor() > 0) {
classVersion = classVersion + javaClass.getMinor() / 10.0;
}
if (classVersion > maxVersion) {
maxVersion = classVersion;
}
Method[] methods = javaClass.getMethods();
for (Method method : methods) {
classes.addMethod(classSignature + "." + method.getName() + method.getSignature());
}
String classPackageName = javaClass.getPackageName();
classes.addClassName(classSignature);
classes.addPackage(classPackageName);
ImportVisitor importVisitor = new ImportVisitor(javaClass);
DescendingVisitor descVisitor = new DescendingVisitor(javaClass, importVisitor);
javaClass.accept(descVisitor);
classes.addImports(importVisitor.getImports());
} catch (ClassFormatException e) {
logger.warn("Unable to process class " + classname + " in JarAnalyzer File " + jarfilename, e);
} catch (IOException e) {
logger.warn("Unable to process JarAnalyzer File " + jarfilename, e);
}
}
Optional.ofNullable(JAVA_CLASS_VERSIONS.get(maxVersion)).ifPresent(classes::setJdkRevision);
jarAnalyzer.getJarData().setJarClasses(classes);
}
return classes;
}