in archiva-jarinfo/archiva-jarinfo-lib/src/main/java/org/apache/archiva/jarinfo/analysis/JarAnalysis.java [166:214]
private void processEntries( JarDetails details, JarFile jar )
throws IOException
{
// Entry names
List<String> entryNames = new ArrayList<String>();
// Gather up entry names, and sort.
Enumeration<JarEntry> en = jar.entries();
while ( en.hasMoreElements() )
{
JarEntry entry = en.nextElement();
entryNames.add( entry.getName() );
}
Collections.sort( entryNames, new NaturalLanguageComparator() );
// Process entries.
for ( JarEntryVisitor visitor : visitors )
{
visitor.visitStart( details, jar );
}
for ( String name : entryNames )
{
JarEntry jarEntry = jar.getJarEntry( name );
EntryDetail entry = new EntryDetail();
entry.setName( jarEntry.getName() );
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis( jarEntry.getTime() );
entry.setTimestamp( cal );
entry.setDirectory( jarEntry.isDirectory() );
for ( JarEntryVisitor visitor : visitors )
{
visitor.visitJarEntry( entry, jarEntry );
}
// Add entry.
details.addEntry( entry );
}
Collections.sort( details.getEntries(), new EntryDetailComparator() );
for ( JarEntryVisitor visitor : visitors )
{
visitor.visitFinished( details, jar );
}
}