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.StringTokenizer;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport javax.xml.bind.Element;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport javax.xml.bind.ParseConversionEvent;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport javax.xml.bind.ValidationEvent;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport javax.xml.bind.helpers.ParseConversionEventImpl;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport javax.xml.bind.helpers.ValidationEventImpl;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport javax.xml.bind.helpers.ValidationEventLocatorImpl;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport org.xml.sax.Attributes;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport org.xml.sax.SAXException;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport com.sun.xml.bind.JAXBAssertionError;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport com.sun.xml.bind.unmarshaller.Messages;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk/**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Convenient default implementation of
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * {@link UnmarshallingEventHandler}
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * to minimize code generation.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk *
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * <p>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * For historical reasons, sometimes this type is used where
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * {@link UnmarshallingEventHandler} should be used.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk *
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Once an exception is in the form of UnmarshalException, we consider
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * it to be already reported to the client app.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkpublic abstract class AbstractUnmarshallingEventHandlerImpl implements UnmarshallingEventHandler
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk{
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public AbstractUnmarshallingEventHandlerImpl(UnmarshallingContext _ctxt,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk String _stateTextTypes ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk this.context = _ctxt;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk this.stateTextTypes = _stateTextTypes;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public final UnmarshallingContext context;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Text type of states encoded into a string.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * 'L' means a list state.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private final String stateTextTypes;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// methods that will be provided by the generated code.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // internal events
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void enterElement(String uri, String local, String qname, Attributes atts) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unexpectedEnterElement(uri,local,qname,atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void leaveElement(String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unexpectedLeaveElement(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public final void text(String text) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(isListState()) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // in list state, we don't need to care about whitespaces.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // if the text is all whitespace, this won't generate a text event,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // so it would be just fine.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk StringTokenizer tokens = new StringTokenizer(text);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( tokens.countTokens()==1 ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk handleText(text);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk } else {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk while(tokens.hasMoreTokens())
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // the handler can be switched during the text processing,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // so the current handler has to be obtained inside the loop
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.getCurrentHandler().text(tokens.nextToken());
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk } else {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // otherwise process this token
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk handleText(text);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected void handleText(String s) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unexpectedText(s);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void enterAttribute(String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unexpectedEnterAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void leaveAttribute(String uri, String local, String qname) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unexpectedLeaveAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public void leaveChild(int nextState) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk this.state = nextState;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Checks if the current state is marked as a list state.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final boolean isListState() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return stateTextTypes.charAt(state)=='L';
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /** Current state of this automaton. */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk public int state;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// utility methods
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /** Called when a RuntimeException is thrown during unmarshalling a text. */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected void handleUnexpectedTextException( String text, RuntimeException e ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // report this as an error
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk reportError( Messages.format(Messages.UNEXPECTED_TEXT,text), e, true );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * Last resort when something goes terribly wrong within the unmarshaller.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected void handleGenericException( Exception e ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk reportError( e.getMessage(), e, false );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void dump() {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk System.err.println("state is :"+state);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private void reportError( String msg, boolean canRecover ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk reportError( msg, null, canRecover );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private void reportError( String msg, Exception nested, boolean canRecover ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.handleEvent( new ValidationEventImpl(
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk canRecover? ValidationEvent.ERROR : ValidationEvent.FATAL_ERROR,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk msg,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk new ValidationEventLocatorImpl(context.getLocator()),
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk nested ), canRecover );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void unexpectedEnterElement( String uri, String local, String qname, Attributes atts ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // notify the error
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk reportError( Messages.format(Messages.UNEXPECTED_ENTER_ELEMENT, uri, local ), true );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // then recover by ignoring the whole element.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler(new Discarder(context),state);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.getCurrentHandler().enterElement(uri,local,qname,atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void unexpectedLeaveElement( String uri, String local, String qname ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk reportError( Messages.format(Messages.UNEXPECTED_LEAVE_ELEMENT, uri, local ), false );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void unexpectedEnterAttribute( String uri, String local, String qname ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk reportError( Messages.format(Messages.UNEXPECTED_ENTER_ATTRIBUTE, uri, local ), false );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void unexpectedLeaveAttribute( String uri, String local, String qname ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk reportError( Messages.format(Messages.UNEXPECTED_LEAVE_ATTRIBUTE, uri, local ), false );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void unexpectedText( String str ) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // make str printable
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk str = str.replace('\r',' ').replace('\n',' ').replace('\t',' ').trim();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk reportError( Messages.format(Messages.UNEXPECTED_TEXT, str ), true );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void unexpectedLeaveChild() throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // I believe this is really a bug of the compiler,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // since when an object spawns a child object, it must be "prepared"
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // to receive this event.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk dump();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throw new JAXBAssertionError(
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk Messages.format( Messages.UNEXPECTED_LEAVE_CHILD ) );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /**
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * This method is called by the generated derived class
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk * when a datatype parse method throws an exception.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected void handleParseConversionException(Exception e) throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if( e instanceof RuntimeException )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throw (RuntimeException)e; // don't catch the runtime exception. just let it go.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // wrap it into a ParseConversionEvent and report it
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ParseConversionEvent pce = new ParseConversionEventImpl(
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ValidationEvent.ERROR, e.getMessage(),
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk new ValidationEventLocatorImpl(context.getLocator()), e );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.handleEvent(pce,true);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// spawn a new child object
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk private UnmarshallingEventHandler spawnChild( Class clazz, int memento ) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallableObject child;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk try {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk child = (UnmarshallableObject)clazz.newInstance();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk } catch (InstantiationException e) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throw new InstantiationError(e.getMessage());
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk } catch (IllegalAccessException e) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throw new IllegalAccessError(e.getMessage());
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler handler = child.createUnmarshaller(context);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler(handler,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return handler;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final Object spawnChildFromEnterElement(Class clazz, int memento, String uri, String local, String qname, Attributes atts)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler ueh = spawnChild(clazz,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ueh.enterElement(uri,local,qname,atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return ueh.owner();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final Object spawnChildFromEnterAttribute(Class clazz, int memento, String uri, String local, String qname)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler ueh = spawnChild(clazz,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ueh.enterAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return ueh.owner();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final Object spawnChildFromText(Class clazz, int memento, String value)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler ueh = spawnChild(clazz,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ueh.text(value);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return ueh.owner();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // these methods can be used if a child object can be nullable
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final Object spawnChildFromLeaveElement(Class clazz, int memento, String uri, String local, String qname)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler ueh = spawnChild(clazz,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ueh.leaveElement(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return ueh.owner();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final Object spawnChildFromLeaveAttribute(Class clazz, int memento, String uri, String local, String qname)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler ueh = spawnChild(clazz,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ueh.leaveAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return ueh.owner();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final Element spawnWildcard( int memento, String uri, String local, String qname, Attributes atts )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler ueh = context.getGrammarInfo().createUnmarshaller(uri,local,context);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk if(ueh!=null) {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler(ueh,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ueh.enterElement(uri,local,qname,atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return (Element)ueh.owner();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk } else {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // if no class is available to unmarshal this element, discard
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk // the sub-tree by feeding events to discarder.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler( new Discarder(context), memento );
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.getCurrentHandler().enterElement(uri,local,qname,atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk return null; // return null so that the discarder will be ignored
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// spawn a new child handler.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// used for super class and RELAXNG interleave handling.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void spawnHandlerFromEnterElement(
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler unm, int memento, String uri, String local, String qname, Attributes atts )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler(unm,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unm.enterElement(uri,local,qname,atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void spawnHandlerFromEnterAttribute(
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler unm, int memento, String uri, String local, String qname)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler(unm,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unm.enterAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void spawnHandlerFromFromText(
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler unm, int memento, String value)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler(unm,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unm.text(value);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void spawnHandlerFromLeaveElement(
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler unm, int memento, String uri, String local, String qname)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler(unm,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unm.leaveElement(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void spawnHandlerFromLeaveAttribute(
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler unm, int memento, String uri, String local, String qname)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler(unm,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unm.leaveAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void spawnHandlerFromText(
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk UnmarshallingEventHandler unm, int memento, String text )
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.pushContentHandler(unm,memento);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk unm.text(text);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk// revert to parent
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk//
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void revertToParentFromEnterElement(String uri,String local, String qname,Attributes atts)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.getCurrentHandler().enterElement(uri,local,qname,atts);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void revertToParentFromLeaveElement(String uri,String local, String qname)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.getCurrentHandler().leaveElement(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void revertToParentFromEnterAttribute(String uri,String local, String qname)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.getCurrentHandler().enterAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void revertToParentFromLeaveAttribute(String uri,String local, String qname)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.getCurrentHandler().leaveAttribute(uri,local,qname);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk protected final void revertToParentFromText(String value)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk throws SAXException {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.popContentHandler();
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk context.getCurrentHandler().text(value);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk }
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk}