/** * Copyright 2005-2014 Restlet * * The contents of this file are subject to the terms of one of the following * open source licenses: Apache 2.0 or or EPL 1.0 (the "Licenses"). You can * select the license that you prefer but you may not use this file except in * compliance with one of these Licenses. * * You can obtain a copy of the Apache 2.0 license at * http://www.opensource.org/licenses/apache-2.0 * * You can obtain a copy of the EPL 1.0 license at * http://www.opensource.org/licenses/eclipse-1.0 * * See the Licenses for the specific language governing permissions and * limitations under the Licenses. * * Alternatively, you can obtain a royalty free commercial license with less * limitations, transferable or non-transferable, directly at * http://restlet.com/products/restlet-framework * * Restlet is a registered trademark of Restlet S.A.S. */ package org.restlet.ext.xml.internal; import java.util.HashMap; import org.xml.sax.ContentHandler; import org.xml.sax.DTDHandler; import org.xml.sax.EntityResolver; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.XMLReader; /** * Abstract SAX XML Reader. * * @author Warren Janssens */ public abstract class AbstractXmlReader implements XMLReader { /** The content handler. */ private ContentHandler contentHandler; /** The entity resolver. */ private EntityResolver entityResolver; /** The error handler. */ private ErrorHandler errorHandler; /** The features map. */ private final HashMap<String, Boolean> features; /** The DTD handler. */ private DTDHandler handler; /** The properties map. */ private final HashMap<String, Object> properties; /** * Default constructor. */ public AbstractXmlReader() { this.features = new HashMap<String, Boolean>(); this.properties = new HashMap<String, Object>(); this.contentHandler = null; this.entityResolver = null; this.errorHandler = null; this.handler = null; } /** * Return the content handler. * * @return The content handler. * @see XMLReader#getContentHandler() */ public ContentHandler getContentHandler() { return contentHandler; } /** * Return the DTD handler. * * @return The DTD handler. * @see XMLReader#getDTDHandler() */ public DTDHandler getDTDHandler() { return handler; } /** * Return the entity resolver. * * @return The entity resolver. * @see XMLReader#getEntityResolver() */ public EntityResolver getEntityResolver() { return entityResolver; } /** * Return the error handler. * * @return The error handler. * @see XMLReader#getErrorHandler() */ public ErrorHandler getErrorHandler() { return errorHandler; } /** * Returns the feature by name. * * @param name * The feature name. * @return The feature. * @see XMLReader#getFeature(String) */ public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException { final Boolean result = features.get(name); return result == null ? false : result.booleanValue(); } /** * Returns the property by name. * * @param name * The property name. * @return The property. * @see XMLReader#getProperty(String) */ public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException { return properties.get(name); } /** * Sets the content handler. * * @param contentHandler * The content handler. * @see XMLReader#setContentHandler(ContentHandler) */ public void setContentHandler(ContentHandler contentHandler) { this.contentHandler = contentHandler; } /** * Sets the DTD handler. * * @param handler * The DTD handler. * @see XMLReader#setDTDHandler(DTDHandler) */ public void setDTDHandler(DTDHandler handler) { this.handler = handler; } /** * Sets the entity resolver. * * @param entityResolver * The entity resolver. * @see XMLReader#setEntityResolver(EntityResolver) */ public void setEntityResolver(EntityResolver entityResolver) { this.entityResolver = entityResolver; } /** * Sets the error handler. * * @param errorHandler * The error handler. * @see XMLReader#setErrorHandler(ErrorHandler) */ public void setErrorHandler(ErrorHandler errorHandler) { this.errorHandler = errorHandler; } /** * Sets a feature. * * @param name * The feature name. * @param value * The feature value. * @see XMLReader#setFeature(String, boolean) */ public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { this.features.put(name, value); } /** * Sets a property. * * @param name * The property name. * @param value * The property value. * @see XMLReader#setProperty(String, Object) */ public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { this.properties.put(name, value); } }