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