Search in sources :

Example 6 with XSElementDecl

use of com.sun.xml.xsom.XSElementDecl in project jolie by jolie.

the class XmlUtils method _valueToDocument.

private static void _valueToDocument(Value value, Element element, Document doc, XSModelGroup modelGroup) {
    String name;
    XSModelGroup.Compositor compositor = modelGroup.getCompositor();
    if (compositor.equals(XSModelGroup.SEQUENCE)) {
        Value v;
        ValueVector vec;
        for (XSParticle particle : modelGroup.getChildren()) {
            XSTerm currTerm = particle.getTerm();
            if (currTerm.isElementDecl()) {
                XSElementDecl currElementDecl = currTerm.asElementDecl();
                name = currElementDecl.getName();
                Element childElement = null;
                if ((vec = value.children().get(name)) != null) {
                    int k = 0;
                    while (vec.isEmpty() == false && (particle.getMaxOccurs() == XSParticle.UNBOUNDED || particle.getMaxOccurs() > k)) {
                        childElement = doc.createElement(getElementNameWithPrefix(vec.get(0), name));
                        element.appendChild(childElement);
                        v = vec.remove(0);
                        _valueToDocument(v, childElement, doc, currElementDecl.getType());
                        k++;
                    }
                }
            // TODO throw an error if the following condition occurs here
            // else if( children[ i ].getMinOccurs() > 0 ) {
            // // TODO throw some error here
            // }
            } else if (currTerm.isModelGroupDecl()) {
                _valueToDocument(value, element, doc, currTerm.asModelGroupDecl().getModelGroup());
            } else if (currTerm.isModelGroup()) {
                _valueToDocument(value, element, doc, currTerm.asModelGroup());
            }
        }
    } else if (compositor.equals(XSModelGroup.CHOICE)) {
        XSParticle[] children = modelGroup.getChildren();
        XSTerm currTerm;
        XSElementDecl currElementDecl;
        Value v;
        ValueVector vec;
        boolean found = false;
        for (int i = 0; i < children.length && !found; i++) {
            currTerm = children[i].getTerm();
            if (currTerm.isElementDecl()) {
                currElementDecl = currTerm.asElementDecl();
                name = currElementDecl.getName();
                Element childElement = null;
                if ((vec = value.children().get(name)) != null) {
                    childElement = doc.createElement(getElementNameWithPrefix(vec.get(0), name));
                    element.appendChild(childElement);
                    found = true;
                    v = vec.remove(0);
                    _valueToDocument(v, childElement, doc, currElementDecl.getType());
                }
            // TODO throw error if following condition occurs
            // else if( children[ i ].getMinOccurs() > 0 ) {
            // // TODO throw some error here
            // }
            } else if (currTerm.isModelGroupDecl()) {
                _valueToDocument(value, element, doc, currTerm.asModelGroupDecl().getModelGroup());
            } else if (currTerm.isModelGroup()) {
                _valueToDocument(value, element, doc, currTerm.asModelGroup());
            }
        }
    }
}
Also used : ValueVector(jolie.runtime.ValueVector) XSParticle(com.sun.xml.xsom.XSParticle) XSTerm(com.sun.xml.xsom.XSTerm) Element(org.w3c.dom.Element) Value(jolie.runtime.Value) XSElementDecl(com.sun.xml.xsom.XSElementDecl) XSModelGroup(com.sun.xml.xsom.XSModelGroup)

Example 7 with XSElementDecl

use of com.sun.xml.xsom.XSElementDecl in project jolie by jolie.

the class SchemaWriter method schema.

public void schema(XSSchema s) {
    // QUICK HACK: don't print the built-in components
    if (s.getTargetNamespace().equals(Const.schemaNamespace))
        return;
    println(MessageFormat.format("<schema targetNamespace=\"{0}\">", new Object[] { s.getTargetNamespace() }));
    indent++;
    Iterator itr;
    itr = s.iterateAttGroupDecls();
    while (itr.hasNext()) attGroupDecl((XSAttGroupDecl) itr.next());
    itr = s.iterateAttributeDecls();
    while (itr.hasNext()) attributeDecl((XSAttributeDecl) itr.next());
    itr = s.iterateComplexTypes();
    while (itr.hasNext()) complexType((XSComplexType) itr.next());
    itr = s.iterateElementDecls();
    while (itr.hasNext()) elementDecl((XSElementDecl) itr.next());
    itr = s.iterateModelGroupDecls();
    while (itr.hasNext()) modelGroupDecl((XSModelGroupDecl) itr.next());
    itr = s.iterateSimpleTypes();
    while (itr.hasNext()) simpleType((XSSimpleType) itr.next());
    indent--;
    println("</schema>");
}
Also used : XSAttGroupDecl(com.sun.xml.xsom.XSAttGroupDecl) XSSimpleType(com.sun.xml.xsom.XSSimpleType) XSComplexType(com.sun.xml.xsom.XSComplexType) XSModelGroupDecl(com.sun.xml.xsom.XSModelGroupDecl) XSAttributeDecl(com.sun.xml.xsom.XSAttributeDecl) Iterator(java.util.Iterator) XSElementDecl(com.sun.xml.xsom.XSElementDecl)

Example 8 with XSElementDecl

use of com.sun.xml.xsom.XSElementDecl in project jolie by jolie.

the class SchemaTreeTraverser method particle.

/* (non-Javadoc)
     * @see com.sun.xml.xsom.visitor.XSContentTypeVisitor#particle(com.sun.xml.xsom.XSParticle)
     */
public void particle(XSParticle part) {
    int i;
    StringBuffer buf = new StringBuffer();
    i = part.getMaxOccurs();
    if (i == XSParticle.UNBOUNDED) {
        buf.append(" maxOccurs=\"unbounded\"");
    } else {
        if (i != 1) {
            buf.append(" maxOccurs=\"" + i + "\"");
        }
    }
    i = part.getMinOccurs();
    if (i != 1) {
        buf.append(" minOccurs=\"" + i + "\"");
    }
    final String extraAtts = buf.toString();
    part.getTerm().visit(new XSTermVisitor() {

        public void elementDecl(XSElementDecl decl) {
            if (decl.isLocal()) {
                SchemaTreeTraverser.this.elementDecl(decl, extraAtts);
            } else {
                // reference
                SchemaTreeNode newNode = new SchemaTreeNode(MessageFormat.format("Element ref=\"'{'{0}'}'{1}\"{2}", new Object[] { decl.getTargetNamespace(), decl.getName(), extraAtts }), decl.getLocator());
                currNode.add(newNode);
            }
        }

        public void modelGroupDecl(XSModelGroupDecl decl) {
            // reference
            SchemaTreeNode newNode = new SchemaTreeNode(MessageFormat.format("Group ref=\"'{'{0}'}'{1}\"{2}", new Object[] { decl.getTargetNamespace(), decl.getName(), extraAtts }), decl.getLocator());
            currNode.add(newNode);
        }

        public void modelGroup(XSModelGroup group) {
            SchemaTreeTraverser.this.modelGroup(group, extraAtts);
        }

        public void wildcard(XSWildcard wc) {
            SchemaTreeTraverser.this.wildcard(wc, extraAtts);
        }
    });
}
Also used : XSModelGroupDecl(com.sun.xml.xsom.XSModelGroupDecl) XSElementDecl(com.sun.xml.xsom.XSElementDecl) XSWildcard(com.sun.xml.xsom.XSWildcard) XSTermVisitor(com.sun.xml.xsom.visitor.XSTermVisitor) XSIdentityConstraint(com.sun.xml.xsom.XSIdentityConstraint) XSModelGroup(com.sun.xml.xsom.XSModelGroup)

Example 9 with XSElementDecl

use of com.sun.xml.xsom.XSElementDecl in project jaxb-ri by eclipse-ee4j.

the class SchemaTreeTraverser method particle.

/* (non-Javadoc)
     * @see com.sun.xml.xsom.visitor.XSContentTypeVisitor#particle(com.sun.xml.xsom.XSParticle)
     */
public void particle(XSParticle part) {
    BigInteger i;
    StringBuilder buf = new StringBuilder();
    i = part.getMaxOccurs();
    if (i.equals(BigInteger.valueOf(XSParticle.UNBOUNDED))) {
        buf.append(" maxOccurs=\"unbounded\"");
    } else {
        if (!i.equals(BigInteger.ONE)) {
            buf.append(" maxOccurs=\"").append(i).append("\"");
        }
    }
    i = part.getMinOccurs();
    if (!i.equals(BigInteger.ONE)) {
        buf.append(" minOccurs=\"").append(i).append("\"");
    }
    final String extraAtts = buf.toString();
    part.getTerm().visit(new XSTermVisitor() {

        public void elementDecl(XSElementDecl decl) {
            if (decl.isLocal()) {
                SchemaTreeTraverser.this.elementDecl(decl, extraAtts);
            } else {
                // reference
                SchemaTreeNode newNode = new SchemaTreeNode(MessageFormat.format("Element ref=\"'{'{0}'}'{1}\"{2}", decl.getTargetNamespace(), decl.getName(), extraAtts), decl.getLocator());
                currNode.add(newNode);
            }
        }

        public void modelGroupDecl(XSModelGroupDecl decl) {
            // reference
            SchemaTreeNode newNode = new SchemaTreeNode(MessageFormat.format("Group ref=\"'{'{0}'}'{1}\"{2}", decl.getTargetNamespace(), decl.getName(), extraAtts), decl.getLocator());
            currNode.add(newNode);
        }

        public void modelGroup(XSModelGroup group) {
            SchemaTreeTraverser.this.modelGroup(group, extraAtts);
        }

        public void wildcard(XSWildcard wc) {
            SchemaTreeTraverser.this.wildcard(wc, extraAtts);
        }
    });
}
Also used : XSModelGroupDecl(com.sun.xml.xsom.XSModelGroupDecl) BigInteger(java.math.BigInteger) XSElementDecl(com.sun.xml.xsom.XSElementDecl) XSWildcard(com.sun.xml.xsom.XSWildcard) XSTermVisitor(com.sun.xml.xsom.visitor.XSTermVisitor) XSModelGroup(com.sun.xml.xsom.XSModelGroup)

Example 10 with XSElementDecl

use of com.sun.xml.xsom.XSElementDecl in project jaxb-ri by eclipse-ee4j.

the class SchemaWriter method schema.

public void schema(XSSchema s) {
    // QUICK HACK: don't print the built-in components
    if (s.getTargetNamespace().equals(Const.schemaNamespace))
        return;
    println(MessageFormat.format("<schema targetNamespace=\"{0}\">", s.getTargetNamespace()));
    indent++;
    Iterator itr;
    itr = s.iterateAttGroupDecls();
    while (itr.hasNext()) attGroupDecl((XSAttGroupDecl) itr.next());
    itr = s.iterateAttributeDecls();
    while (itr.hasNext()) attributeDecl((XSAttributeDecl) itr.next());
    itr = s.iterateComplexTypes();
    while (itr.hasNext()) complexType((XSComplexType) itr.next());
    itr = s.iterateElementDecls();
    while (itr.hasNext()) elementDecl((XSElementDecl) itr.next());
    itr = s.iterateModelGroupDecls();
    while (itr.hasNext()) modelGroupDecl((XSModelGroupDecl) itr.next());
    itr = s.iterateSimpleTypes();
    while (itr.hasNext()) simpleType((XSSimpleType) itr.next());
    indent--;
    println("</schema>");
}
Also used : XSAttGroupDecl(com.sun.xml.xsom.XSAttGroupDecl) XSSimpleType(com.sun.xml.xsom.XSSimpleType) XSComplexType(com.sun.xml.xsom.XSComplexType) XSModelGroupDecl(com.sun.xml.xsom.XSModelGroupDecl) XSAttributeDecl(com.sun.xml.xsom.XSAttributeDecl) Iterator(java.util.Iterator) XSElementDecl(com.sun.xml.xsom.XSElementDecl)

Aggregations

XSElementDecl (com.sun.xml.xsom.XSElementDecl)48 XSModelGroupDecl (com.sun.xml.xsom.XSModelGroupDecl)18 XSComplexType (com.sun.xml.xsom.XSComplexType)16 XSModelGroup (com.sun.xml.xsom.XSModelGroup)16 XSSchema (com.sun.xml.xsom.XSSchema)12 XSSimpleType (com.sun.xml.xsom.XSSimpleType)11 XSAttributeDecl (com.sun.xml.xsom.XSAttributeDecl)10 XSType (com.sun.xml.xsom.XSType)10 XSWildcard (com.sun.xml.xsom.XSWildcard)10 XSTermVisitor (com.sun.xml.xsom.visitor.XSTermVisitor)10 XSAttGroupDecl (com.sun.xml.xsom.XSAttGroupDecl)9 XSSchemaSet (com.sun.xml.xsom.XSSchemaSet)8 XSParticle (com.sun.xml.xsom.XSParticle)7 XSTerm (com.sun.xml.xsom.XSTerm)7 ArrayList (java.util.ArrayList)7 BigInteger (java.math.BigInteger)6 QName (javax.xml.namespace.QName)6 XSContentType (com.sun.xml.xsom.XSContentType)4 Iterator (java.util.Iterator)4 CClassInfo (com.sun.tools.xjc.model.CClassInfo)3