public void visitJarEntry()

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" );
        }
    }