private void writeASFext()

in src/main/java/org/apache/maven/plugin/doap/DoapMojo.java [1701:1780]


    private void writeASFext(XMLWriter writer, MavenProject project) {
        if (!asfExtOptions.isIncluded()) {
            return;
        }

        DoapUtil.writeComment(writer, "ASF extension.");

        // asfext:pmc
        String pmc = DoapUtil.interpolate(asfExtOptions.getPmc(), project, settings);
        if (pmc != null && !pmc.isEmpty()) {
            DoapUtil.writeRdfResourceElement(writer, asfExtOptions.getXmlnsPrefix(), "pmc", pmc);
        } else {
            messages.addMessage(new String[] {"asfExtOptions", "pmc"}, null, UserMessages.REQUIRED_BY_ASF);
        }

        // asfext:name
        String name = DoapUtil.interpolate(asfExtOptions.getName(), project, settings);
        if (name != null && !name.isEmpty()) {
            if (!name.toLowerCase(Locale.ENGLISH).trim().startsWith("apache")) {
                name = "Apache " + name;
            }
            DoapUtil.writeElement(writer, asfExtOptions.getXmlnsPrefix(), "name", name);
        } else {
            messages.addMessage(new String[] {"asfExtOptions", "name"}, null, UserMessages.REQUIRED_BY_ASF);
        }

        String homepage = DoapUtil.interpolate(doapOptions.getHomepage(), project, settings);
        if (homepage != null && !homepage.isEmpty()) {
            try {
                new URL(homepage);

                DoapUtil.writeRdfResourceElement(writer, "foaf", "homepage", homepage);
            } catch (MalformedURLException e) {
                messages.addMessage(new String[] {"doapOptions", "homepage"}, homepage, UserMessages.INVALID_URL);
            }
        }

        // asfext:charter
        if (StringUtils.isEmpty(asfExtOptions.getCharter())) {
            messages.addMessage(new String[] {"asfExtOptions", "charter"}, null, UserMessages.REQUIRED_BY_ASF);
        } else {
            DoapUtil.writeElement(writer, asfExtOptions.getXmlnsPrefix(), "charter", asfExtOptions.getCharter());
        }

        // asfext:chair
        @SuppressWarnings("unchecked")
        List<Developer> developers = new ArrayList<Developer>(project.getDevelopers());
        sortContributors(developers);

        if (StringUtils.isNotEmpty(asfExtOptions.getChair())) {
            DoapUtil.writeStartElement(writer, asfExtOptions.getXmlnsPrefix(), "chair");
            DoapUtil.writeStartElement(writer, "foaf", "Person");
            DoapUtil.writeStartElement(writer, "foaf", "name");
            writer.writeText(asfExtOptions.getChair());
            writer.endElement(); // foaf:name
            writer.endElement(); // foaf:Person
            writer.endElement(); // asfext:chair
        } else {
            Developer chair = ASFExtOptionsUtil.findChair(developers);
            if (chair != null) {
                writeContributor(writer, chair, asfExtOptions.getXmlnsPrefix(), "chair");
                developers.remove(chair);
            } else {
                messages.addMessage(new String[] {"asfExtOptions", "chair"}, null, UserMessages.REQUIRED_BY_ASF);
            }
        }

        // asfext:member
        if (developers != null && developers.size() > 0) {
            List<Developer> pmcMembers = ASFExtOptionsUtil.findPMCMembers(developers);
            for (Developer pmcMember : pmcMembers) {
                writeContributor(writer, pmcMember, asfExtOptions.getXmlnsPrefix(), "member");
            }
        }

        writeASFImplements(writer);

        Map<Object, String> map = asfExtOptions.getExtra();
        writeExtra(writer, project, "Extra ASFExt vocabulary.", map, asfExtOptions.getXmlnsPrefix());
    }