in src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java [68:101]
public void visitClass(String className, InputStream in) {
try {
byte[] byteCode = toByteArray(in);
if (excludedClasses.isMatch(className)) {
return;
}
ClassReader reader = new ClassReader(byteCode);
final Set<String> constantPoolClassRefs = ConstantPoolParser.getConstantPoolClassReferences(byteCode);
for (String string : constantPoolClassRefs) {
resultCollector.addName(className, string);
}
AnnotationVisitor annotationVisitor = new DefaultAnnotationVisitor(resultCollector, className);
SignatureVisitor signatureVisitor = new DefaultSignatureVisitor(resultCollector, className);
FieldVisitor fieldVisitor = new DefaultFieldVisitor(annotationVisitor, resultCollector, className);
MethodVisitor mv =
new DefaultMethodVisitor(annotationVisitor, signatureVisitor, resultCollector, className);
ClassVisitor classVisitor = new DefaultClassVisitor(
signatureVisitor, annotationVisitor, fieldVisitor, mv, resultCollector, className);
reader.accept(classVisitor, 0);
} catch (IOException exception) {
throw new UncheckedIOException(exception);
} catch (IndexOutOfBoundsException e) {
// some bug inside ASM causes an IOB exception.
// this happens when the class isn't valid.
throw new VisitClassException("Unable to process: " + className, e);
} catch (IllegalArgumentException e) {
throw new VisitClassException("Byte code of '" + className + "' is corrupt", e);
}
}