private void addBytecode()

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