xmlschemaloader.java

来自「JAVA 所有包」· Java 代码 · 共 1,324 行 · 第 1/4 页

JAVA
1,324
字号
        }        // set full validation to false                try {            fIsCheckedFully = componentManager.getFeature(SCHEMA_FULL_CHECKING);        }        catch (XMLConfigurationException e){            fIsCheckedFully = false;        }        // get generate-synthetic-annotations feature        try {            fSchemaHandler.setGenerateSyntheticAnnotations(componentManager.getFeature(GENERATE_SYNTHETIC_ANNOTATIONS));        }        catch (XMLConfigurationException e) {            fSchemaHandler.setGenerateSyntheticAnnotations(false);        }        fSchemaHandler.reset(componentManager);		     }        private void initGrammarBucket(){        if(fGrammarPool != null) {            Grammar [] initialGrammars = fGrammarPool.retrieveInitialGrammarSet(XMLGrammarDescription.XML_SCHEMA);            for (int i = 0; i < initialGrammars.length; i++) {                // put this grammar into the bucket, along with grammars                // imported by it (directly or indirectly)                if (!fGrammarBucket.putGrammar((SchemaGrammar)(initialGrammars[i]), true)) {                    // REVISIT: a conflict between new grammar(s) and grammars                    // in the bucket. What to do? A warning? An exception?                    fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,                            "GrammarConflict", null,                            XMLErrorReporter.SEVERITY_WARNING);                }            }        }    }            /* (non-Javadoc)     * @see com.sun.org.apache.xerces.internal.xs.XSLoader#getConfig()     */    public DOMConfiguration getConfig() {        return this;    }        /* (non-Javadoc)     * @see com.sun.org.apache.xerces.internal.xs.XSLoader#load(org.w3c.dom.ls.LSInput)     */    public XSModel load(LSInput is) {        try {            Grammar g = loadGrammar(dom2xmlInputSource(is));            return ((XSGrammar) g).toXSModel();        } catch (Exception e) {            reportDOMFatalError(e);            return null;        }    }        /* (non-Javadoc)     * @see com.sun.org.apache.xerces.internal.xs.XSLoader#loadInputList(com.sun.org.apache.xerces.internal.xs.DOMInputList)     */    public XSModel loadInputList(LSInputList is) {        int length = is.getLength();        if (length == 0) {            return null;        }        SchemaGrammar[] gs = new SchemaGrammar[length];        for (int i = 0; i < length; i++) {            try {                gs[i] = (SchemaGrammar) loadGrammar(dom2xmlInputSource(is.item(i)));            } catch (Exception e) {                reportDOMFatalError(e);                return null;            }        }        return new XSModelImpl(gs);    }        /* (non-Javadoc)     * @see com.sun.org.apache.xerces.internal.xs.XSLoader#loadURI(java.lang.String)     */    public XSModel loadURI(String uri) {        try {            Grammar g = loadGrammar(new XMLInputSource(null, uri, null));            return ((XSGrammar)g).toXSModel();        }        catch (Exception e){            reportDOMFatalError(e);            return null;        }    }        /* (non-Javadoc)     * @see com.sun.org.apache.xerces.internal.xs.XSLoader#loadURIList(com.sun.org.apache.xerces.internal.xs.StringList)     */    public XSModel loadURIList(StringList uriList) {        int length = uriList.getLength();        if (length == 0) {            return null;        }        SchemaGrammar[] gs = new SchemaGrammar[length];        for (int i = 0; i < length; i++) {            try {                gs[i] =                    (SchemaGrammar) loadGrammar(new XMLInputSource(null, uriList.item(i), null));            } catch (Exception e) {                reportDOMFatalError(e);                return null;            }        }        return new XSModelImpl(gs);    }        void reportDOMFatalError(Exception e) {                if (fErrorHandler != null) {                    DOMErrorImpl error = new DOMErrorImpl();                    error.fException = e;                    error.fMessage = e.getMessage();                    error.fSeverity = DOMError.SEVERITY_FATAL_ERROR;                    fErrorHandler.getErrorHandler().handleError(error);                }            }        /* (non-Javadoc)     * @see DOMConfiguration#canSetParameter(String, Object)     */    public boolean canSetParameter(String name, Object value) {        if(value instanceof Boolean){            if (name.equals(Constants.DOM_VALIDATE) ||                name.equals(SCHEMA_FULL_CHECKING) ||                name.equals(VALIDATE_ANNOTATIONS) ||                name.equals(CONTINUE_AFTER_FATAL_ERROR) ||                name.equals(ALLOW_JAVA_ENCODINGS) ||                name.equals(STANDARD_URI_CONFORMANT_FEATURE) ||                name.equals(GENERATE_SYNTHETIC_ANNOTATIONS) ||                name.equals(HONOUR_ALL_SCHEMALOCATIONS)) {                return true;                            }            return false;			        }        if (name.equals(Constants.DOM_ERROR_HANDLER) ||            name.equals(Constants.DOM_RESOURCE_RESOLVER) ||            name.equals(SYMBOL_TABLE) ||            name.equals(ERROR_REPORTER) ||            name.equals(ERROR_HANDLER) ||            name.equals(ENTITY_RESOLVER) ||            name.equals(XMLGRAMMAR_POOL) ||            name.equals(SCHEMA_LOCATION) ||            name.equals(SCHEMA_NONS_LOCATION) ||            name.equals(JAXP_SCHEMA_SOURCE)) {            return true;        }        return false;    }        /* (non-Javadoc)     * @see DOMConfiguration#getParameter(String)     */    public Object getParameter(String name) throws DOMException {                if (name.equals(Constants.DOM_ERROR_HANDLER)){            return (fErrorHandler != null) ? fErrorHandler.getErrorHandler() : null;        }        else if (name.equals(Constants.DOM_RESOURCE_RESOLVER)) {            return (fResourceResolver != null) ? fResourceResolver.getEntityResolver() : null;        }                try {            boolean feature = getFeature(name);            return (feature) ? Boolean.TRUE : Boolean.FALSE;        } catch (Exception e) {            Object property;            try {                property = getProperty(name);                return property;            } catch (Exception ex) {                String msg =                    DOMMessageFormatter.formatMessage(                            DOMMessageFormatter.DOM_DOMAIN,                            "FEATURE_NOT_SUPPORTED",                            new Object[] { name });                throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);            }        }    }        /* (non-Javadoc)     * @see DOMConfiguration#getParameterNames()     */    public DOMStringList getParameterNames() {        if (fRecognizedParameters == null){            Vector v = new Vector();            v.add(Constants.DOM_VALIDATE);            v.add(Constants.DOM_ERROR_HANDLER);            v.add(Constants.DOM_RESOURCE_RESOLVER);            v.add(SYMBOL_TABLE);            v.add(ERROR_REPORTER);            v.add(ERROR_HANDLER);            v.add(ENTITY_RESOLVER);            v.add(XMLGRAMMAR_POOL);            v.add(SCHEMA_LOCATION);            v.add(SCHEMA_NONS_LOCATION);            v.add(JAXP_SCHEMA_SOURCE);            v.add(SCHEMA_FULL_CHECKING);            v.add(CONTINUE_AFTER_FATAL_ERROR);            v.add(ALLOW_JAVA_ENCODINGS);            v.add(STANDARD_URI_CONFORMANT_FEATURE);            v.add(VALIDATE_ANNOTATIONS);            v.add(GENERATE_SYNTHETIC_ANNOTATIONS);            v.add(HONOUR_ALL_SCHEMALOCATIONS);            fRecognizedParameters = new DOMStringListImpl(v);      	        }        return fRecognizedParameters;    }        /* (non-Javadoc)     * @see DOMConfiguration#setParameter(String, Object)     */    public void setParameter(String name, Object value) throws DOMException {        if (value instanceof Boolean) {            boolean state = ((Boolean) value).booleanValue();            if (name.equals("validate") && state) {                return;            }            try {                setFeature(name, state);            } catch (Exception e) {                String msg =                    DOMMessageFormatter.formatMessage(                            DOMMessageFormatter.DOM_DOMAIN,                            "FEATURE_NOT_SUPPORTED",                            new Object[] { name });                throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);            }            return;        }        if (name.equals(Constants.DOM_ERROR_HANDLER)) {            if (value instanceof DOMErrorHandler) {                try {                    fErrorHandler = new DOMErrorHandlerWrapper((DOMErrorHandler) value);                    setErrorHandler(fErrorHandler);                } catch (XMLConfigurationException e) {                }            } else {                // REVISIT: type mismatch                String msg =                    DOMMessageFormatter.formatMessage(                            DOMMessageFormatter.DOM_DOMAIN,                            "FEATURE_NOT_SUPPORTED",                            new Object[] { name });                throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);            }            return;                    }        if (name.equals(Constants.DOM_RESOURCE_RESOLVER)) {            if (value instanceof LSResourceResolver) {                try {                    fResourceResolver = new DOMEntityResolverWrapper((LSResourceResolver) value);                    setEntityResolver(fResourceResolver);                }                 catch (XMLConfigurationException e) {}            } else {                // REVISIT: type mismatch                String msg =                    DOMMessageFormatter.formatMessage(                            DOMMessageFormatter.DOM_DOMAIN,                            "FEATURE_NOT_SUPPORTED",                            new Object[] { name });                throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);            }            return;        }                try {            setProperty(name, value);        } catch (Exception ex) {                        String msg =                DOMMessageFormatter.formatMessage(                        DOMMessageFormatter.DOM_DOMAIN,                        "FEATURE_NOT_SUPPORTED",                        new Object[] { name });            throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);                    }            }    	XMLInputSource dom2xmlInputSource(LSInput is) {        // need to wrap the LSInput with an XMLInputSource        XMLInputSource xis = null;                /**         * An LSParser looks at inputs specified in LSInput in         * the following order: characterStream, byteStream,         * stringData, systemId, publicId. For consistency         * have the same behaviour for XSLoader.         */                // check whether there is a Reader        // according to DOM, we need to treat such reader as "UTF-16".        if (is.getCharacterStream() != null) {            xis = new XMLInputSource(is.getPublicId(), is.getSystemId(),                    is.getBaseURI(), is.getCharacterStream(),            "UTF-16");        }        // check whether there is an InputStream        else if (is.getByteStream() != null) {            xis = new XMLInputSource(is.getPublicId(), is.getSystemId(),                    is.getBaseURI(), is.getByteStream(),                    is.getEncoding());        }        // if there is a string data, use a StringReader        // according to DOM, we need to treat such data as "UTF-16".        else if (is.getStringData() != null && is.getStringData().length() != 0) {            xis = new XMLInputSource(is.getPublicId(), is.getSystemId(),                    is.getBaseURI(), new StringReader(is.getStringData()),            "UTF-16");        }        // otherwise, just use the public/system/base Ids        else {            xis = new XMLInputSource(is.getPublicId(), is.getSystemId(),                    is.getBaseURI());        }                return xis;    }    } // XMLGrammarLoader

⌨️ 快捷键说明

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