All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.topologi.diffx.xml.sax.XMLWritableReader Maven / Gradle / Ivy

There is a newer version: 11.5.0
Show newest version
/*
 * This file is part of the DiffX library.
 *
 * For licensing information please see the file license.txt included in the release.
 * A copy of this licence can also be found at
 *   http://www.opensource.org/licenses/artistic-license-2.0.php
 */
package com.topologi.diffx.xml.sax;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.xml.sax.ContentHandler;
import org.xml.sax.DTDHandler;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

import com.topologi.diffx.xml.XMLWritable;
import com.topologi.diffx.xml.XMLWriter;

/**
 * An XMLReader implementation that can be used to parse XMLWritable objects.
 *
 * 

Typically, XMLWritable objects are wrapped into an * XMLWritableInputSource so that the XMLReader API * methods are used; however, it is perfectly possible to parse directly an * XMLWritable object. * * @see org.xml.sax.XMLReader * @see com.topologi.diffx.xml.XMLWritable * @see com.topologi.diffx.xml.sax.XMLWritableInputSource * * @author Christophe Lauret * @version 27 May 2005 */ public final class XMLWritableReader implements XMLReader { /** * The URI of the namespace feature. */ private static final String NAMESPACES = "http://xml.org/sax/features/namespaces"; /** * The URI of the namespace prefixes feature. */ private static final String NS_PREFIXES = "http://xml.org/sax/features/namespace-prefixes"; /** * The features used by this XML reader implementation. */ private final Map features = new HashMap(); /** * The content reader this XMLReader will use. */ private ContentHandler handler; /** * Creates a new XML Reader. */ public XMLWritableReader() { setFeature(NAMESPACES, true); setFeature(NS_PREFIXES, false); } // XMLReader methods implementation ----------------------------------------------------- /** * {@inheritDoc} */ @Override public ContentHandler getContentHandler() { return this.handler; } /** * {@inheritDoc} */ @Override public void setContentHandler(ContentHandler chandler) { this.handler = chandler; } /** * Returns null. * * {@inheritDoc} */ @Override public ErrorHandler getErrorHandler() { return null; } /** * Does nothing. * * {@inheritDoc} */ @Override public void setErrorHandler(ErrorHandler ehandler) { } /** * Returns null. * * {@inheritDoc} */ @Override public DTDHandler getDTDHandler() { return null; } /** * Does nothing. * * {@inheritDoc} */ @Override public void setDTDHandler(DTDHandler dhandler) { } /** * Returns null. * * {@inheritDoc} */ @Override public EntityResolver getEntityResolver() { return null; } /** * Returns null. * * {@inheritDoc} */ @Override public void setEntityResolver(EntityResolver resolver) { } /** * Returns null. * * {@inheritDoc} */ @Override public Object getProperty(java.lang.String name) { return null; } /** * Does nothing. * * {@inheritDoc} */ @Override public void setProperty(java.lang.String name, java.lang.Object value) { } /** * {@inheritDoc} */ @Override public boolean getFeature(java.lang.String name) { // TODO: handling of features return this.features.get(name).booleanValue(); } /** * {@inheritDoc} */ @Override public void setFeature(java.lang.String name, boolean value) { // TODO: handling of features this.features.put(name, Boolean.valueOf(value)); } /** * {@inheritDoc} */ @Override public void parse(String systemId) throws IOException, SAXException { throw new SAXException( this.getClass().getName() + " cannot be used with system identifiers (URIs)"); } /** * {@inheritDoc} */ @Override public void parse(InputSource input) throws IOException, SAXException { if (input instanceof XMLWritableInputSource) { parse((XMLWritableInputSource)input); } else throw new SAXException("Unsupported InputSource specified. Must be a XMLWritableInputSource"); } /** * {@inheritDoc} */ public void parse(XMLWritableInputSource input) throws IOException, SAXException { parse(input.getXMLWritable()); } /** * {@inheritDoc} */ public void parse(XMLWritable xml) throws IOException, SAXException { if (xml == null) throw new NullPointerException("Parameter projectTeam must not be null"); if (this.handler == null) throw new IllegalStateException("ContentHandler not set"); // start handling the document this.handler.startDocument(); XMLWriter xw = new XMLWriterSAX(this.handler); xml.toXML(xw); this.handler.endDocument(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy