in archiva-jarinfo/archiva-jarinfo-lib/src/main/java/org/apache/archiva/jarinfo/model/io/JarDetailsWriter.java [75:130]
private void addBytecode(SimpleXmlWriter xml, BytecodeDetails bytecode) throws IOException {
if (bytecode == null) {
return;
}
if (EmptyUtils.isEmpty(bytecode.getClasses())) {
return;
}
// Collect packages (used for count at start of bytecode element)
Set<String> packages = new TreeSet<String>();
int countClasses = 0;
int countPackages = 0;
for (ClassDetail cdetail : bytecode.getClasses()) {
countClasses++;
packages.add(cdetail.getPackage());
}
countPackages = packages.size();
// Write bytecode element
xml.elemOpen(BYTECODE, new String[][] { {COUNT_CLASSES, String.valueOf(countClasses) },
{COUNT_PACKAGES, String.valueOf(countPackages) } });
addHashes(xml, bytecode.getHashes());
xml.elemSimple(JDK, bytecode.getRequiredJdk());
xml.elemSimple(DEBUG, bytecode.hasDebug());
// Write classes
for (ClassDetail cdetail : bytecode.getClasses()) {
xml.elemOpen(CLASS, new String[][] { {NAME, cdetail.getName() }, {VERSION, cdetail.getClassVersion() },
{JDK, cdetail.getTargetJdk() }, {DEBUG, Boolean.toString(cdetail.hasDebug()) } });
addHashes(xml, cdetail.getHashes());
// Write imports
for (String mport : cdetail.getImports()) {
xml.elemSimple(IMPORT, mport);
}
// Write methods
for (String method : cdetail.getMethods()) {
xml.elemSimple(METHOD, method);
}
xml.elemClose();
}
// Write packages
for (String pcage : packages) {
xml.elemSimple(PACKAGE, pcage);
}
xml.elemClose();
}