in archiva-jarinfo/archiva-jarinfo-lib/src/main/java/org/apache/archiva/jarinfo/analysis/visitors/EntryClassAnalyzer.java [65:136]
public void visitJarEntry( EntryDetail entry, JarEntry jarEntry )
throws IOException
{
if ( !jarEntry.getName().endsWith( ".class" ) )
{
return;
}
ClassParser classParser = new ClassParser( jar.getName(), entry.getName() );
JavaClass javaClass = null;
try
{
javaClass = classParser.parse();
}
catch ( ClassFormatException e )
{
System.out.println( "Failure on entry: " + jarEntry.getName() );
e.printStackTrace();
return;
}
ClassDetail classDetail = new ClassDetail();
classHasher.reset();
classHasher.update( jar.getInputStream( jarEntry ) );
classDetail.setHash( classHasher.getAlgorithm(), classHasher.getHash() );
classDetail.setName( javaClass.getClassName() );
classDetail.setDebug( hasDebugSymbols( javaClass ) );
if ( classDetail.hasDebug() )
{
overallDebugPresent = true;
}
double classVersion = javaClass.getMajor();
if ( javaClass.getMinor() > 0 )
{
classVersion = classVersion + ( 1 / (double) javaClass.getMinor() );
}
if ( classVersion > overallClassVersion )
{
overallClassVersion = classVersion;
}
classDetail.setClassVersion( javaClass.getMajor() + "." + javaClass.getMinor() );
Method[] methods = javaClass.getMethods();
for ( Method method : methods )
{
classDetail.addMethod( method.getName() + method.getSignature() );
}
BCELImportVisitor importVisitor = new BCELImportVisitor( javaClass );
DescendingVisitor descVisitor = new DescendingVisitor( javaClass, importVisitor );
javaClass.accept( descVisitor );
classDetail.getImports().addAll( importVisitor.getImports() );
classDetail.setTargetJdk( toJDK( classVersion ) );
details.getBytecode().addClass( classDetail );
// Package to GroupId InspectedIds
if(this.performInspection)
{
String packageName = javaClass.getPackageName();
packages.add( packageName );
int weight = IdentificationWeights.getInstance().getWeight( "packages.groupId" );
details.getInspectedIds().addGroupId( packageName, weight, "class.packages" );
}
}