/* * eXist Open Source Native XML Database * Copyright (C) 2012 The eXist Project * http://exist-db.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * $Id$ */ package org.exist.contentextraction; import org.apache.tika.sax.XHTMLContentHandler; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; /** * @author Dulip Withanage <dulip.withanage@gmail.com> * @version 1.0 */ public class AbortAfterMetadataContentHandler implements ContentHandler { private final ContentHandler contentHandler; public AbortAfterMetadataContentHandler(ContentHandler contentHandler) { this.contentHandler = contentHandler; } @Override public void setDocumentLocator(Locator locator) { contentHandler.setDocumentLocator(locator); } @Override public void startDocument() throws SAXException { contentHandler.startDocument(); } @Override public void endDocument() throws SAXException { contentHandler.endDocument(); } @Override public void startPrefixMapping(String prefix, String uri) throws SAXException { contentHandler.startPrefixMapping(prefix, uri); } @Override public void endPrefixMapping(String prefix) throws SAXException { contentHandler.endPrefixMapping(prefix); } @Override public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { contentHandler.startElement(uri, localName, qName, atts); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { contentHandler.endElement(uri, localName, qName); if (uri != null && uri.equals(XHTMLContentHandler.XHTML) && localName.equals("head")) { endElement(XHTMLContentHandler.XHTML, "html", "html"); endDocument(); throw new AbortedAfterMetadataException(); } } @Override public void characters(char[] ch, int start, int length) throws SAXException { contentHandler.characters(ch, start, length); } @Override public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { contentHandler.ignorableWhitespace(ch, start, length); } @Override public void processingInstruction(String target, String data) throws SAXException { contentHandler.processingInstruction(target, data); } @Override public void skippedEntity(String name) throws SAXException { contentHandler.skippedEntity(name); } }