Element serializeGroupRef()

in src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java [1274:1311]


    Element serializeGroupRef(Document doc, XmlSchemaGroupRef groupRefObj, XmlSchema schema)
        throws XmlSchemaSerializerException {

        Element groupRef = createNewElement(doc, "group", schema.getSchemaNamespacePrefix(),
                                            XmlSchema.SCHEMA_NS);

        if (groupRefObj.getRefName() != null) {
            String groupRefName = resolveQName(groupRefObj.getRefName(), schema);
            groupRef.setAttribute("ref", groupRefName);
        } else {
            throw new XmlSchemaSerializerException("Group must have name or ref");
        }

        serializeMaxMinOccurs(groupRefObj, groupRef);

        if (groupRefObj.getParticle() != null) {
            if (groupRefObj.getParticle() instanceof XmlSchemaChoice) {
                serializeChoice(doc, (XmlSchemaChoice)groupRefObj.getParticle(), schema);
            } else if (groupRefObj.getParticle() instanceof XmlSchemaSequence) {
                serializeSequence(doc, (XmlSchemaSequence)groupRefObj.getParticle(), schema);
            } else if (groupRefObj.getParticle() instanceof XmlSchemaAll) {
                serializeAll(doc, (XmlSchemaAll)groupRefObj.getParticle(), schema);
            } else {
                throw new XmlSchemaSerializerException("The content of group " + "ref particle should be"
                                                       + " sequence, choice or all reference:  "
                                                       + "www.w3.org/TR/xmlschema-1#element-group-3.7.2");
            }
        }
        if (groupRefObj.getAnnotation() != null) {
            Element annotation = serializeAnnotation(doc, groupRefObj.getAnnotation(), schema);
            groupRef.appendChild(annotation);
        }

        // process extension
        processExtensibilityComponents(groupRefObj, groupRef);

        return groupRef;
    }