in src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java [55:83]
public void visitClass(String className, InputStream in) {
try {
byte[] byteCode = IOUtils.toByteArray(in);
ClassReader reader = new ClassReader(byteCode);
final Set<String> constantPoolClassRefs = ConstantPoolParser.getConstantPoolClassReferences(byteCode);
for (String string : constantPoolClassRefs) {
resultCollector.addName(string);
}
AnnotationVisitor annotationVisitor = new DefaultAnnotationVisitor(resultCollector);
SignatureVisitor signatureVisitor = new DefaultSignatureVisitor(resultCollector);
FieldVisitor fieldVisitor = new DefaultFieldVisitor(annotationVisitor, resultCollector);
MethodVisitor mv = new DefaultMethodVisitor(annotationVisitor, signatureVisitor, resultCollector);
ClassVisitor classVisitor =
new DefaultClassVisitor(signatureVisitor, annotationVisitor, fieldVisitor, mv, resultCollector);
reader.accept(classVisitor, 0);
} catch (IOException exception) {
exception.printStackTrace();
} catch (IndexOutOfBoundsException e) {
// some bug inside ASM causes an IOB exception. Log it and move on?
// this happens when the class isn't valid.
logger.warn("Unable to process: " + className, e);
} catch (IllegalArgumentException e) {
// [MSHARED-1248] should log instead of failing when analyzing a corrupted jar file
logger.warn("Byte code of '" + className + "' is corrupt", e);
}
}