//
// @(#)FastEntityResolver.java 12/2003
//
// Copyright 2003 Zachary DelProposto. All rights reserved.
// Use is subject to license terms.
//
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// Or from http://www.gnu.org/
//
package dip.world.variant.parser;
import dip.misc.Log;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
/**
* Resolves Entity definitions to an empty InputSource, unless validation
* is enabled, in which case we actually do resolve the entities.
* <p>
* Not looking for entity resolutions improves startup time.
*/
public class FastEntityResolver implements EntityResolver
{
private final boolean isValidating;
/** Construct a FastEntityResolver */
public FastEntityResolver(boolean isValidating)
{
this.isValidating = isValidating;
}// FastEntityResolver()
/**
* Attach a FastEntityResolver to a DocumentBuilder, setting
* validation as appropriate.
*/
public static void attach(DocumentBuilder db)
{
db.setEntityResolver(new FastEntityResolver(db.isValidating()));
}// attach()
/** Resolve the Entity */
public InputSource resolveEntity(String publicID, String systemID)
{
if(!isValidating)
{
// log the request
Log.println("XML:Entity resolution ignored: ", publicID, "; ", systemID);
// return an empty InputSource
InputSource is = new InputSource(new StringReader(""));
is.setPublicId(publicID);
is.setSystemId(systemID);
return is;
}
return null; // default entity handling
}// resolveEntity()
}// class FastEntityResolver