Search in sources :

Example 26 with StringRef

use of com.sun.msv.util.StringRef in project OpenAM by OpenRock.

the class MSVValidator method endElement.

public void endElement() throws SAXException {
    writePendingText();
    if (!acceptor.isAcceptState(null)) {
        // some required elements are missing
        // report error
        StringRef ref = new StringRef();
        acceptor.isAcceptState(ref);
        context.reportEvent(target, ref.str);
    }
    // pop the acceptor
    Acceptor child = acceptor;
    acceptor = (Acceptor) stack.pop();
    if (!acceptor.stepForward(child, null)) {
        // some required elements are missing.
        // report an error
        StringRef ref = new StringRef();
        // force recovery and obtain an error message.
        acceptor.stepForward(child, ref);
        context.reportEvent(target, ref.str);
    }
    context.getNamespaceContext().endElement();
}
Also used : Acceptor(com.sun.msv.verifier.Acceptor) StringRef(com.sun.msv.util.StringRef)

Example 27 with StringRef

use of com.sun.msv.util.StringRef in project OpenAM by OpenRock.

the class MSVValidator method writePendingText.

private void writePendingText() throws SAXException {
    // assert(textBuf!=null);
    if (!acceptor.onText2(buf.toString(), this, null, null)) {
        // this text is invalid.
        // report an error
        StringRef ref = new StringRef();
        acceptor.onText2(buf.toString(), this, ref, null);
        context.reportEvent(target, ref.str);
    }
    if (buf.length() > 1024)
        buf = new StringBuffer();
    else
        buf.setLength(0);
}
Also used : StringRef(com.sun.msv.util.StringRef)

Example 28 with StringRef

use of com.sun.msv.util.StringRef in project OpenAM by OpenRock.

the class MSVValidator method endAttribute.

public void endAttribute() throws SAXException {
    insideAttribute = false;
    if (!acceptor.onAttribute2(attNamespaceUri, attLocalName, attLocalName, /* we don't have QName, so just use the local name */
    buf.toString(), this, null, null)) {
        // either the name was incorrect (which is quite unlikely),
        // or the value was wrong.
        // report an error
        StringRef ref = new StringRef();
        acceptor.onAttribute2(attNamespaceUri, attLocalName, attLocalName, buf.toString(), this, ref, null);
        context.reportEvent(target, ref.str);
    }
    buf = new StringBuffer();
}
Also used : StringRef(com.sun.msv.util.StringRef)

Example 29 with StringRef

use of com.sun.msv.util.StringRef in project OpenAM by OpenRock.

the class MSVValidator method childAsElementBody.

private void childAsElementBody(Object o, ValidatableObject vo) throws SAXException {
    String intfName = vo.getPrimaryInterface().getName();
    intfName = intfName.replace('$', '.');
    // if the object implements the RIElement interface,
    // add a marker attribute to the dummy element.
    //
    // For example, if the object is org.acme.impl.FooImpl,
    // the dummy element will look like
    // <{DUMMY_ELEMENT_NS}org.acme.Foo
    //          {<URI of this element>}:<local name of this element>="" />
    // 
    // This extra attribute is used to validate wildcards.
    //        AttributesImpl atts;
    //        if(o instanceof RIElement) {
    //            RIElement rie = (RIElement)o;
    //            atts = new AttributesImpl();
    //            atts.addAttribute(
    //                rie.____jaxb_ri____getNamespaceURI(),
    //                rie.____jaxb_ri____getLocalName(),
    //                rie.____jaxb_ri____getLocalName(),  // use local name as qname
    //                "CDATA",
    //                "");    // we don't care about the attribute value
    //        } else
    //            atts = emptyAttributes;
    // feed a dummy element to the acceptor.
    StartTagInfo sti = new StartTagInfo(DUMMY_ELEMENT_NS, intfName, intfName, /*just pass the local name as QName.*/
    emptyAttributes, this);
    Acceptor child = acceptor.createChildAcceptor(sti, null);
    if (child == null) {
        // some required elements were missing. report errors
        StringRef ref = new StringRef();
        child = acceptor.createChildAcceptor(sti, ref);
        context.reportEvent(target, ref.str);
    }
    if (o instanceof RIElement) {
        RIElement rie = (RIElement) o;
        if (!child.onAttribute2(rie.____jaxb_ri____getNamespaceURI(), rie.____jaxb_ri____getLocalName(), rie.____jaxb_ri____getLocalName(), "", null, null, null))
            // this object is not a valid member of the wildcard
            context.reportEvent(target, Messages.format(Messages.INCORRECT_CHILD_FOR_WILDCARD, rie.____jaxb_ri____getNamespaceURI(), rie.____jaxb_ri____getLocalName()));
    }
    child.onEndAttributes(sti, null);
    if (!acceptor.stepForward(child, null)) {
        // generated by XJC.
        throw new JAXBAssertionError();
    }
    // we need a separate validator instance to validate a child object
    context.validate(vo);
}
Also used : Acceptor(com.sun.msv.verifier.Acceptor) JAXBAssertionError(com.sun.xml.bind.JAXBAssertionError) RIElement(com.sun.xml.bind.RIElement) StartTagInfo(com.sun.msv.util.StartTagInfo) StringRef(com.sun.msv.util.StringRef)

Example 30 with StringRef

use of com.sun.msv.util.StringRef in project OpenAM by OpenRock.

the class MSVValidator method endAttribute.

public void endAttribute() throws SAXException {
    insideAttribute = false;
    if (!acceptor.onAttribute2(attNamespaceUri, attLocalName, attLocalName, /* we don't have QName, so just use the local name */
    buf.toString(), this, null, null)) {
        // either the name was incorrect (which is quite unlikely),
        // or the value was wrong.
        // report an error
        StringRef ref = new StringRef();
        acceptor.onAttribute2(attNamespaceUri, attLocalName, attLocalName, buf.toString(), this, ref, null);
        context.reportEvent(target, ref.str);
    }
    buf = new StringBuffer();
}
Also used : StringRef(com.sun.msv.util.StringRef)

Aggregations

StringRef (com.sun.msv.util.StringRef)35 StartTagInfo (com.sun.msv.util.StartTagInfo)15 Acceptor (com.sun.msv.verifier.Acceptor)15 JAXBAssertionError (com.sun.xml.bind.JAXBAssertionError)5 RIElement (com.sun.xml.bind.RIElement)5