private static void writePluginElement()

in log4j-docgen/src/main/java/org/apache/logging/log4j/docgen/generator/SchemaGenerator.java [246:286]


    private static void writePluginElement(
            final TypeLookup lookup, final PluginElement element, final XMLStreamWriter writer)
            throws XMLStreamException {
        final String type = element.getType();
        @Nullable final String xmlType = getXmlType(lookup, type);
        if (xmlType == null) {
            return;
        }
        final ArtifactSourcedType sourcedType = lookup.get(type);
        if (sourcedType == null) {
            return;
        }
        final Type rawType = sourcedType.type;
        if (!(rawType instanceof AbstractType)) {
            return;
        }
        final AbstractType abstractType = (AbstractType) rawType;
        final PluginType pluginType = abstractType instanceof PluginType ? (PluginType) abstractType : null;
        /*
         * If a plugin extends another plugin or has multiple aliases
         * we use a <group> element.
         */
        if (pluginType == null
                || !pluginType.getAliases().isEmpty()
                || !pluginType.getImplementations().isEmpty()) {
            writer.writeStartElement(XSD_NAMESPACE, "group");
            writer.writeAttribute("ref", xmlType);
            writeMultiplicity(element.isRequired(), element.getMultiplicity(), writer);
            writeDocumentation(element.getDescription(), writer);
            writer.writeEndElement();
        } else {
            for (final String key : getKeyAndAliases(pluginType)) {
                writer.writeStartElement(XSD_NAMESPACE, "element");
                writer.writeAttribute("name", key);
                writer.writeAttribute("type", xmlType);
                writeMultiplicity(element.isRequired(), element.getMultiplicity(), writer);
                writeDocumentation(element.getDescription(), writer);
                writer.writeEndElement();
            }
        }
    }