public static JarDetails deserialize()

in archiva-jarinfo/archiva-jarinfo-lib/src/main/java/org/apache/archiva/jarinfo/model/xml/JarDetailsXmlDeserializer.java [41:169]


    public static JarDetails deserialize( Document doc )
    {
        JarDetails details = new JarDetails();
        Element root = doc.getRootElement();

        // Assigned Id
        if ( elemExists( root, ASSIGNED_ID ) )
        {
            Element elemId = root.element( ASSIGNED_ID );
            details.getAssignedId().setGroupId( get( elemId, GROUP_ID ) );
            details.getAssignedId().setArtifactId( get( elemId, ARTIFACT_ID ) );
            details.getAssignedId().setVersion( get( elemId, VERSION ) );
            details.getAssignedId().setName( get( elemId, NAME ) );
            details.getAssignedId().setVendor( get( elemId, VENDOR ) );
        }

        // Basics
        details.setFilename( get( root, FILENAME ) );
        details.setTimestamp( Timestamp.convert( get( root, TIMESTAMP ) ) );
        details.setSize( toLong( get( root, SIZE ) ) );
        details.setHashes( getHashes( root ) );
        details.setSealed( toBool( get( root, SEALED ) ) );

        // Generator
        if ( elemExists( root, GENERATOR ) )
        {
            Element elemGen = root.element( GENERATOR );
            details.getGenerator().setName( get( elemGen, NAME ) );
            details.getGenerator().setVersion( get( elemGen, VERSION ) );
            details.getGenerator().setTimestamp( Timestamp.convert( get( elemGen, TIMESTAMP ) ) );
        }

        // Jar Entries
        if ( elemExists( root, ENTRIES ) )
        {
            Element elemEntries = root.element( ENTRIES );

            Iterator<?> entryIter = elemEntries.elementIterator();
            while ( entryIter.hasNext() )
            {
                Node node = (Node) entryIter.next();
                if ( node.getNodeType() != Node.ELEMENT_NODE )
                {
                    // Skip non-element nodes.
                    continue;
                }

                Element elemEntry = (Element) node;
                EntryDetail entry = new EntryDetail();

                entry.setDirectory( elemEntry.getName().equals( DIRECTORY ) );
                entry.setName( get( elemEntry, NAME ) );
                entry.setSize( toLong( get( elemEntry, SIZE ) ) );
                entry.setTimestamp( Timestamp.convert( get( elemEntry, TIMESTAMP ) ) );
                entry.setHashes( getHashes( elemEntry ) );

                details.addEntry( entry );
            }
        }

        // Bytecode
        if ( elemExists( root, BYTECODE ) )
        {
            Element elemBytecode = root.element( BYTECODE );

            details.getBytecode().setDebug( toBool( get( elemBytecode, DEBUG ) ) );
            details.getBytecode().setRequiredJdk( get( elemBytecode, JDK ) );
            details.getBytecode().setHashes( getHashes( elemBytecode ) );

            Iterator<?> classIter = elemBytecode.elementIterator( CLASS );
            while ( classIter.hasNext() )
            {
                Node node = (Node) classIter.next();
                if ( node.getNodeType() != Node.ELEMENT_NODE )
                {
                    // Skip non-element nodes.
                    continue;
                }

                Element elemClass = (Element) node;
                ClassDetail cdetail = new ClassDetail();

                cdetail.setName( get( elemClass, NAME ) );
                cdetail.setClassVersion( get( elemClass, VERSION ) );
                cdetail.setTargetJdk( get( elemClass, JDK ) );
                cdetail.setDebug( toBool( get( elemClass, DEBUG ) ) );

                cdetail.setHashes( getHashes( elemClass ) );

                cdetail.setImports( getStringList( elemClass, IMPORT ) );
                cdetail.setMethods( getStringList( elemClass, METHOD ) );

                details.getBytecode().addClass( cdetail );
            }
        }

        // Inspected Ids
        if ( elemExists( root, INSPECTED ) )
        {
            Element elemInspected = root.element( INSPECTED );

            for ( IdValue idvalue : getIdValues( elemInspected, GROUP_IDS, GROUP_ID ) )
            {
                details.getInspectedIds().addGroupId( idvalue );
            }

            for ( IdValue idvalue : getIdValues( elemInspected, ARTIFACT_IDS, ARTIFACT_ID ) )
            {
                details.getInspectedIds().addArtifactId( idvalue );
            }

            for ( IdValue idvalue : getIdValues( elemInspected, VERSIONS, VERSION ) )
            {
                details.getInspectedIds().addVersion( idvalue );
            }

            for ( IdValue idvalue : getIdValues( elemInspected, NAMES, NAME ) )
            {
                details.getInspectedIds().addName( idvalue );
            }

            for ( IdValue idvalue : getIdValues( elemInspected, VENDORS, VENDOR ) )
            {
                details.getInspectedIds().addVendor( idvalue );
            }
        }

        return details;
    }