⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saxunmarshallerhandlerimpl.java

📁 这是一个基于计算网格的web service。它用java编写。一旦安装完成
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v1.0.4-b18-fcs // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. // Generated on: 2005.07.17 at 02:32:55 EDT //package jwsgrid.xsd.jobhostdynamicinfo.impl.runtime;import java.util.ArrayList;import java.util.Collections;import java.util.Hashtable;import java.util.Iterator;import java.util.List;import javax.xml.XMLConstants;import javax.xml.bind.JAXBException;import javax.xml.bind.UnmarshalException;import javax.xml.bind.ValidationEvent;import javax.xml.bind.ValidationEventHandler;import org.xml.sax.Attributes;import org.xml.sax.Locator;import org.xml.sax.SAXException;import org.xml.sax.SAXParseException;import com.sun.xml.bind.JAXBAssertionError;import com.sun.xml.bind.unmarshaller.Messages;import com.sun.xml.bind.unmarshaller.Tracer;import com.sun.xml.bind.util.AttributesImpl;/** * Implementation of {@link UnmarshallerHandler}. *  * This object converts SAX events into unmarshaller events and * cooridnates the entire unmarshalling process. * * @author *  <a href="mailto:kohsuke.kawaguchi@sun.com">Kohsuke KAWAGUCHI</a> */public class SAXUnmarshallerHandlerImpl    implements SAXUnmarshallerHandler, UnmarshallingContext{    /**     * This flag is set to true at the startDocument event     * and false at the endDocument event.     *      * Until the first document is unmarshalled, we don't     * want to return an object. So this variable is initialized     * to true.     */    private boolean isUnmarshalInProgress = true;                public SAXUnmarshallerHandlerImpl( UnmarshallerImpl _parent, GrammarInfo _gi ) {        this.parent = _parent;        grammarInfo = _gi;        startPrefixMapping("",""); // by default, the default ns is bound to "".     }        private final GrammarInfo grammarInfo;    public GrammarInfo getGrammarInfo() { return grammarInfo; }        /**     * Returns true if we should be collecting characters in the current element.     */    private final boolean shouldCollectText() {        return collectText[stackTop];    }        public void startDocument() throws SAXException {        // reset the object        result = null;        handlerLen=0;        patchers=null;        patchersLen=0;        aborted = false;        isUnmarshalInProgress = true;                stackTop=0;        elementDepth=1;    }        public void endDocument() throws SAXException {        runPatchers();        isUnmarshalInProgress = false;    }        public void startElement( String uri, String local, String qname, Attributes atts )            throws SAXException {                // work gracefully with misconfigured parsers that don't support namespaces        if( uri==null )            uri="";        if( local==null || local.length()==0 )            local=qname;        if( qname==null || qname.length()==0 )            qname=local;                if(result==null) {            // this is the root element.            // create a root object and start unmarshalling            UnmarshallingEventHandler unmarshaller =                grammarInfo.createUnmarshaller(uri,local,this);            if(unmarshaller==null) {                // the registry doesn't know about this element.                //                // the no.1 cause of this problem is that your application is configuring                // an XML parser by your self and you forgot to call                // the SAXParserFactory.setNamespaceAware(true). When this happens, you see                // the namespace URI is reported as empty whereas you expect something else.                throw new SAXParseException(                    Messages.format( Messages.UNEXPECTED_ROOT_ELEMENT2,                        uri, local, computeExpectedRootElements() ),                    getLocator() );            }            result = unmarshaller.owner();            pushContentHandler(unmarshaller,0);        }            processText(true);            getCurrentHandler().enterElement(uri,local,qname,atts);    }    public final void endElement( String uri, String local, String qname )            throws SAXException {                // work gracefully with misconfigured parsers that don't support namespaces        if( uri==null )            uri="";        if( local==null || local.length()==0 )            local=qname;        if( qname==null || qname.length()==0 )            qname=local;                processText(false);        getCurrentHandler().leaveElement(uri,local,qname);    }                        /** Root object that is being unmarshalled. */    private Object result;    public Object getResult() throws UnmarshalException {        if(isUnmarshalInProgress)            throw new IllegalStateException();                if(!aborted)       return result;                // there was an error.        throw new UnmarshalException((String)null);    }        ////// handler stack maintainance////    private UnmarshallingEventHandler[] handlers = new UnmarshallingEventHandler[16];    private int[] mementos = new int[16];    private int handlerLen=0;        public void pushContentHandler( UnmarshallingEventHandler handler, int memento ) {        if(handlerLen==handlers.length) {            // expand buffer            UnmarshallingEventHandler[] h = new UnmarshallingEventHandler[handlerLen*2];            int[] m = new int[handlerLen*2];            System.arraycopy(handlers,0,h,0,handlerLen);            System.arraycopy(mementos,0,m,0,handlerLen);            handlers = h;            mementos = m;        }        handlers[handlerLen] = handler;        mementos[handlerLen] = memento;        handlerLen++;    }        public void popContentHandler() throws SAXException {        handlerLen--;        handlers[handlerLen]=null;  // this handler is removed        getCurrentHandler().leaveChild(mementos[handlerLen]);    }    public UnmarshallingEventHandler getCurrentHandler() {        return handlers[handlerLen-1];    }////// text handling////        private StringBuffer buffer = new StringBuffer();        protected void consumeText( String str, boolean ignorable ) throws SAXException {         if(ignorable && str.trim().length()==0)            // if we are allowed to ignore text and            // the text is ignorable, ignore.            return;                // otherwise perform a transition by this token.        getCurrentHandler().text(str);    }    private void processText( boolean ignorable ) throws SAXException {        if( shouldCollectText() )            consumeText(buffer.toString(),ignorable);                // avoid excessive object allocation, but also avoid        // keeping a huge array inside StringBuffer.        if(buffer.length()<1024)    buffer.setLength(0);        else                        buffer = new StringBuffer();    }        public final void characters( char[] buf, int start, int len ) {        if( shouldCollectText() )            buffer.append(buf,start,len);    }    public final void ignorableWhitespace( char[] buf, int start, int len ) {        characters(buf,start,len);    }    ////// namespace binding maintainance////    private String[] nsBind = new String[16];    private int nsLen=0;        // in the current scope, nsBind[0] - nsBind[idxStack[idxStackTop]-1]    // are active.    // use {@link #elementDepth} and {@link stackTop} to access.    private int[] idxStack = new int[16];        public void startPrefixMapping( String prefix, String uri ) {        if(nsBind.length==nsLen) {            // expand the buffer            String[] n = new String[nsLen*2];            System.arraycopy(nsBind,0,n,0,nsLen);            nsBind=n;        }        nsBind[nsLen++] = prefix;        nsBind[nsLen++] = uri;    }    public void endPrefixMapping( String prefix ) {        nsLen-=2;    }    public String resolveNamespacePrefix( String prefix ) {        if(prefix.equals("xml"))            return "http://www.w3.org/XML/1998/namespace";                for( int i=idxStack[stackTop]-2; i>=0; i-=2 ) {            if(prefix.equals(nsBind[i]))                return nsBind[i+1];        }        return null;    }    public String[] getNewlyDeclaredPrefixes() {        return getPrefixList( idxStack[stackTop-1] );    }    public String[] getAllDeclaredPrefixes() {        return getPrefixList( 2 );  // skip the default ""->"" mapping    }        private String[] getPrefixList( int startIndex ) {        int size = (idxStack[stackTop]-startIndex)/2;        String[] r = new String[size];        for( int i=0; i<r.length; i++ )            r[i] = nsBind[startIndex+i*2];        return r;    }        //    //  NamespaceContext2 implementation     //    public Iterator getPrefixes(String uri) {        // wrap it into unmodifiable list so that the remove method        // will throw UnsupportedOperationException.        return Collections.unmodifiableList(            getAllPrefixesInList(uri)).iterator();    }        private List getAllPrefixesInList(String uri) {        List a = new ArrayList();                if( uri.equals(XMLConstants.XML_NS_URI) ) {            a.add(XMLConstants.XML_NS_PREFIX);            return a;        }        if( uri.equals(XMLConstants.XMLNS_ATTRIBUTE_NS_URI) ) {            a.add(XMLConstants.XMLNS_ATTRIBUTE);            return a;        }        if( uri==null )            throw new IllegalArgumentException();                  for( int i=nsLen-2; i>=0; i-=2 )            if(uri.equals(nsBind[i+1]))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -