001/**
002 *
003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
004 *
005 * This library is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU Lesser General Public
007 * License as published by the Free Software Foundation; either 
008 * version 2.1 of the License, or (at your option) any later version.
009 * 
010 * This library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013 * Lesser General Public License for more details.
014 * 
015 * You should have received a copy of the GNU Lesser General Public 
016 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
017 * 
018 **/
019package lucee.transformer.library.tag;
020
021import org.xml.sax.EntityResolver;
022import org.xml.sax.InputSource;
023
024 
025
026/**
027 * Hilfsklasse fuer die TagLibFactory, diese Klasse definiert den DTDHandler fuer den Sax Parser. 
028 * Die Klasse laedt wenn moeglich die DTD, anhand der Public-id vom lokalen System.
029 * 
030 * @see  org.xml.sax.EntityResolver
031 */
032public final class TagLibEntityResolver implements EntityResolver {
033        /**
034         * Definert den DTD welche eine TLD validieren kann
035         */
036        
037
038        public final static String LUCEE_DTD_1_0 =      "/resource/dtd/web-cfmtaglibrary_1_0.dtd";
039
040        //public final static String SUN_DTD_1_0=       "/resource/dtd/web-jsptaglibrary_1_0";
041        public final static String SUN_DTD_1_1= "/resource/dtd/web-jsptaglibrary_1_1.dtd";
042        public final static String SUN_DTD_1_2= "/resource/dtd/web-jsptaglibrary_1_2.dtd";
043                
044        /**
045         * Laedt die DTD vom lokalen System.
046         * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String)
047         */
048        public InputSource resolveEntity(String publicId, String systemId) {
049
050                if ( publicId.equals( "-//Lucee//DTD CFML Tag Library 1.0//EN" ) 
051                                || publicId.equals( "-//Railo//DTD CFML Tag Library 1.0//EN" )) {
052                        return new InputSource( getClass().getResourceAsStream(LUCEE_DTD_1_0) );
053                }
054                else if ( publicId.equals( "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" ) ) {
055                        return new InputSource( getClass().getResourceAsStream(SUN_DTD_1_1) );
056                }
057                else if ( publicId.equals( "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" ) ) {
058                        return new InputSource( getClass().getResourceAsStream(SUN_DTD_1_2) );
059                }
060                return null;
061                // -//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN
062                // http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd
063        }
064
065 }