Package org.odftoolkit.odfvalidator

Source Code of org.odftoolkit.odfvalidator.SchemaResourceResolver$LSInputImpl

/************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
*
* Use is subject to license terms.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also
* obtain a copy of the License at http://odftoolkit.org/docs/license.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*
************************************************************************/

package org.odftoolkit.odfvalidator;

import java.io.InputStream;
import java.io.Reader;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSInput;
import org.w3c.dom.ls.LSResourceResolver;

    class SchemaResourceResolver implements LSResourceResolver
    {
        private String m_aBaseURI = null;
        private Logger m_aLogger = null;
        private DOMImplementationLS m_aDOMImplLS = null;
        private boolean m_bGetDOMImplLSFailed = false;
       
        class LSInputImpl implements LSInput
        {
            private InputStream m_aInputStream = null;
            private String m_aSystemId = null;

            public Reader getCharacterStream() {
                return null;
            }

            public void setCharacterStream(Reader aCharacterStream) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public InputStream getByteStream() {
                return m_aInputStream;
            }

            public void setByteStream(InputStream aByteStream) {
                m_aInputStream = aByteStream;
            }

            public String getStringData() {
                return null;
            }

            public void setStringData(String stringData) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public String getSystemId() {
                return m_aSystemId;
            }

            public void setSystemId(String aSystemId) {
                m_aSystemId = aSystemId;
            }

            public String getPublicId() {
                return null;
            }

            public void setPublicId(String publicId) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public String getBaseURI() {
                return null;
            }

            public void setBaseURI(String baseURI) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public String getEncoding() {
                return null;
            }

            public void setEncoding(String encoding) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public boolean getCertifiedText() {
                return false;
            }

            public void setCertifiedText(boolean certifiedText) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

        }
       
        public SchemaResourceResolver( Logger aLogger, String aBaseURI )
        {
            m_aBaseURI = aBaseURI;
            m_aLogger = aLogger;
        }
   
        public LSInput resolveResource(String aType, String aNamespaceURI, String aPublicId, String aSystemId, String aBaseURI)
        {
            LSInput aInput = null;
           
            if( aBaseURI == null )
                aBaseURI = m_aBaseURI;

            if( aSystemId != null && aBaseURI != null &&
                InternalResources.isInternalResourceIdentifer(aBaseURI) )
            {
                String aURI = aBaseURI.substring(0, aBaseURI.lastIndexOf('/')+1).concat(aSystemId);
                String aPath = InternalResources.getResourcePath(aURI);
                InputStream aInStream = getClass().getResourceAsStream(aPath);
                if( aInStream != null )
                {
                    aInput = createLSInput();
                    aInput.setSystemId(aURI);
                    aInput.setByteStream(aInStream);
                    String aMsg = "resolving '" + aURI + "'";
                    m_aLogger.logInfo( aMsg , false);
                }
                else
                {
                    m_aLogger.logFatalError("Missing internal schema file: ".concat(aPath));
                }
            }
       
           return aInput;
        }
       
        private LSInput createLSInput()
        {
            LSInput aLSInput = null;
           
            if( m_aDOMImplLS == null && !m_bGetDOMImplLSFailed )
            {
                DOMImplementationRegistry aDOMReg = null;

                try
                {       
                    aDOMReg = DOMImplementationRegistry.newInstance();
                }
                catch( ClassNotFoundException e )
                {
                    m_aLogger.logFatalError(e.getMessage());
                }
                catch( InstantiationException e )
                {
                    m_aLogger.logFatalError(e.getMessage());
                }
                catch( IllegalAccessException e )
                {
                    m_aLogger.logFatalError(e.getMessage());
                }
                DOMImplementation aDOMImpl = aDOMReg.getDOMImplementation( "LS 3.0");
                if( aDOMImpl != null )
                {
                    m_aDOMImplLS = (DOMImplementationLS)aDOMImpl;
                }
                else
                {
                    m_bGetDOMImplLSFailed = true;
                    m_aLogger.logInfo("Could not find DOM LS 3.0 Implementation, using own implementation", false);
                }
            }
            if( m_aDOMImplLS != null )
            {
                aLSInput = m_aDOMImplLS.createLSInput();
            }
            else
            {
                aLSInput = new LSInputImpl();
            }
           
            return aLSInput;
        }
    }
TOP

Related Classes of org.odftoolkit.odfvalidator.SchemaResourceResolver$LSInputImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.