c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v1.0.6-b27-fcs
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// Any modifications to this file will be lost upon recompilation of the source schema.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// Generated on: 2012.06.11 at 10:34:16 AM PDT
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkpackage com.sun.identity.wsfederation.jaxb.entityconfig.impl.runtime;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport java.util.Iterator;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport javax.xml.bind.ValidationEvent;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport org.xml.sax.Attributes;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport org.xml.sax.Locator;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport org.xml.sax.SAXException;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport com.sun.xml.bind.JAXBAssertionError;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport com.sun.xml.bind.unmarshaller.Tracer;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk/**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Splits the unmarshalling events to bracnhes to support
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * XML Schema's &lt;all> and RELAX NG's &lt;interleave>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk *
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * <p>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * This class will be extended by the generated code.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk *
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * @optionalRuntime
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk *
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * @author
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkpublic abstract class InterleaveDispatcher implements UnmarshallingEventHandler {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /** Parent context. */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private final UnmarshallingContext parent;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /** Branches of an interleave. */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final Site[] sites;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /** Set to true while all the branches are joining. */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private boolean isJoining;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /** Counts the depth of the element nesting. */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private int nestLevel = 0;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /** When nestLevel>0, all the events shall be sent to this branch. */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private Site currentSite;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected InterleaveDispatcher( UnmarshallingContext context, int size ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk this.parent = context;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sites = new Site[size];
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk for( int i=0; i<size; i++ )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sites[i] = new Site();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected void init( UnmarshallingEventHandler[] handlers ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk for( int i=0; i<handlers.length; i++ )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sites[i].pushContentHandler(handlers[i],0);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// abstract methods
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Returns the branch number that consumes the given element,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * or -1 if the name is not recognized.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected abstract int getBranchForElement( String uri, String local );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Returns the branch number that consumes the given attribute,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * or -1 if the name is not recognized.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected abstract int getBranchForAttribute( String uri, String local );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Returns the branch number that consumes the text events,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * or -1 if no branch is expected to consume it.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected abstract int getBranchForText();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public Object owner() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( nestLevel>0 )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return currentSite.getCurrentHandler().owner();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk else
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throw new JAXBAssertionError();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void enterElement(String uri, String local, String qname, Attributes atts) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( nestLevel++==0 ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk int idx = getBranchForElement(uri, local);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(idx==-1) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // unknown element. revert to parent.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByEnterElement(null, uri, local, qname, atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk currentSite = sites[idx];
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk currentSite.getCurrentHandler().enterElement(uri, local, qname, atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private void joinByEnterElement( Site source, String uri, String local, String qname, Attributes atts ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(isJoining) return; // during a join, child branches send us tokens we sent them. ignore.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk isJoining = true;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // send the token to all the other branches.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // since they don't recognize this token, it should try to move
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // to the final state (or report an error)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk for( int i=0; i<sites.length; i++ )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( sites[i]!=source )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sites[i].getCurrentHandler().enterElement(uri, local, qname, atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // revert to the parent
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.getCurrentHandler().enterElement(uri,local,qname,atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void leaveElement(String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( nestLevel==0 )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByLeaveElement(null,uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk else {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk currentSite.getCurrentHandler().leaveElement(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // leaveElement invocation might cause some unprocessed attributes
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // to be handled. Therefore, while the execution is in the leaveElement,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // we need to let the branch maintain the control.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk nestLevel--;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private void joinByLeaveElement(Site source,String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(isJoining) return; // during a join, child branches send us tokens we sent them. ignore.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk isJoining = true;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // send the token to all the other branches.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // since they don't recognize this token, it should try to move
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // to the final state (or report an error)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk for( int i=0; i<sites.length; i++ )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( sites[i]!=source )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sites[i].getCurrentHandler().leaveElement(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // revert to the parent
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.getCurrentHandler().leaveElement(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void text(String s) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( nestLevel==0 ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk int idx = getBranchForText();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(idx==-1) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( s.trim().length()==0 ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // if ignorable, just ignore.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk } else {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByText(null,s);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk currentSite = sites[idx];
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk currentSite.getCurrentHandler().text(s);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private void joinByText(Site source, String s) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(isJoining) return; // during a join, child branches send us tokens we sent them. ignore.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk isJoining = true;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // send the token to all the other branches.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // since they don't recognize this token, it should try to move
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // to the final state (or report an error)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk for( int i=0; i<sites.length; i++ )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( sites[i]!=source )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sites[i].getCurrentHandler().text(s);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // revert to the parent
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.getCurrentHandler().text(s);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void enterAttribute(String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( nestLevel++==0 ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk int idx = getBranchForAttribute(uri, local);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(idx==-1) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // unknown element. revert to parent.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByEnterAttribute(null, uri, local, qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk currentSite = sites[idx];
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk currentSite.getCurrentHandler().enterAttribute(uri, local, qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private void joinByEnterAttribute( Site source, String uri, String local, String qname ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(isJoining) return; // during a join, child branches send us tokens we sent them. ignore.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk isJoining = true;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // send the token to all the other branches.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // since they don't recognize this token, it should try to move
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // to the final state (or report an error)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk for( int i=0; i<sites.length; i++ )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( sites[i]!=source )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sites[i].getCurrentHandler().enterAttribute(uri, local, qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // revert to the parent
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.getCurrentHandler().enterAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void leaveAttribute(String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( nestLevel==0 )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByLeaveAttribute(null,uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk else {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk nestLevel--;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk currentSite.getCurrentHandler().leaveAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private void joinByLeaveAttribute(Site source,String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(isJoining) return; // during a join, child branches send us tokens we sent them. ignore.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk isJoining = true;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // send the token to all the other branches.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // since they don't recognize this token, it should try to move
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // to the final state (or report an error)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk for( int i=0; i<sites.length; i++ )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( sites[i]!=source )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sites[i].getCurrentHandler().leaveAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // revert to the parent
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.getCurrentHandler().leaveAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void leaveChild(int nextState) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // assertion failed. since we don't launch any child
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // this method shall never be called.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throw new JAXBAssertionError();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// /** triggers join. */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// private final UnmarshallingEventHandler nullHandler = new UnmarshallingEventHandler() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// public Object owner() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// return null;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// public void enterElement(String uri, String local, String qname, Attributes atts) throws UnreportedException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// join
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// public void leaveElement(String uri, String local, String qname) throws UnreportedException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// public void text(String s) throws UnreportedException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// public void enterAttribute(String uri, String local, String qname) throws UnreportedException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// public void leaveAttribute(String uri, String local, String qname) throws UnreportedException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// public void leaveChild(int nextState) throws UnreportedException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// };
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * This implementation will be passed to branches as
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * the {@link UnmarshallingContext} implementation.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk *
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Used to maintain separate handler stacks for each branch.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk *
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * As an {@link UnmarshallingEventHandler}, this object
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * triggers join.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private class Site implements UnmarshallingContext, UnmarshallingEventHandler {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // handler stack implemented as an array
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private UnmarshallingEventHandler[] handlers = new UnmarshallingEventHandler[8];
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private int[] mementos = new int[8];
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private int handlerLen=0;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private Site() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk pushContentHandler(this, 0);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void pushContentHandler( UnmarshallingEventHandler handler, int memento ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(handlerLen==handlers.length) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // expand buffer
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler[] h = new UnmarshallingEventHandler[handlerLen*2];
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk int[] m = new int[handlerLen*2];
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk System.arraycopy(handlers,0,h,0,handlerLen);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk System.arraycopy(mementos,0,m,0,handlerLen);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk handlers = h;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk mementos = m;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk handlers[handlerLen] = handler;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk mementos[handlerLen] = memento;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk handlerLen++;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void popContentHandler() throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk handlerLen--;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk handlers[handlerLen]=null; // this handler is removed
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk getCurrentHandler().leaveChild(mementos[handlerLen]);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public UnmarshallingEventHandler getCurrentHandler() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return handlers[handlerLen-1];
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // UnmarshallingEventHandler impl. triggers the join operation
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public Object owner() { return null; }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void enterElement(String uri, String local, String qname, Attributes atts) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByEnterElement(this,uri,local,qname,atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void leaveElement(String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByLeaveElement(this,uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void enterAttribute(String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByEnterAttribute(this,uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void leaveAttribute(String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByLeaveAttribute(this,uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void text(String s) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk joinByText(this,s);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void leaveChild(int nextState) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // the rest of the methods are just delegations for UnmarshallingContext
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void addPatcher(Runnable job) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.addPatcher(job);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public String addToIdTable(String id) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.addToIdTable(id);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void consumeAttribute(int idx) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.consumeAttribute(idx);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public String eatAttribute(int idx) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.eatAttribute(idx);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public int getAttribute(String uri, String name) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getAttribute(uri, name);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public String getBaseUri() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getBaseUri();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public GrammarInfo getGrammarInfo() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getGrammarInfo();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public Locator getLocator() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getLocator();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public String getNamespaceURI(String prefix) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getNamespaceURI(prefix);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public Object getObjectFromId(String id) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getObjectFromId(id);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public String getPrefix(String namespaceURI) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getPrefix(namespaceURI);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public Iterator getPrefixes(String namespaceURI) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getPrefixes(namespaceURI);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public Tracer getTracer() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getTracer();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public Attributes getUnconsumedAttributes() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getUnconsumedAttributes();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void handleEvent(ValidationEvent event, boolean canRecover) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.handleEvent(event,canRecover);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public boolean isNotation(String arg0) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.isNotation(arg0);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public boolean isUnparsedEntity(String arg0) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.isUnparsedEntity(arg0);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void popAttributes() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.popAttributes();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void pushAttributes(Attributes atts,boolean collectTextFlag) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk parent.pushAttributes(atts,collectTextFlag);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public String resolveNamespacePrefix(String prefix) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.resolveNamespacePrefix(prefix);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public String[] getNewlyDeclaredPrefixes() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getNewlyDeclaredPrefixes();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public String[] getAllDeclaredPrefixes() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return parent.getAllDeclaredPrefixes();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk}