/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ package org.apache.vysper.xml.sax.impl; import java.util.ArrayList; import java.util.List; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.ErrorHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; /** * @author The Apache MINA Project (dev@mina.apache.org) */ public class TestHandler implements ContentHandler, ErrorHandler { public static interface TestEvent { } public static class StartDocumentEvent implements TestEvent { } public static class EndDocumentEvent implements TestEvent { } public static class StartElementEvent implements TestEvent { private String uri; private String localName; private String qName; private Attributes atts; public StartElementEvent(String uri, String localName, String qName, Attributes atts) { this.uri = uri; this.localName = localName; this.qName = qName; this.atts = atts; } public String getURI() { return uri; } public String getLocalName() { return localName; } public String getQName() { return qName; } public Attributes getAtts() { return atts; } } public static class EndElementEvent implements TestEvent { private String uri; private String localName; private String qName; public EndElementEvent(String uri, String localName, String qName) { this.uri = uri; this.localName = localName; this.qName = qName; } public String getURI() { return uri; } public String getLocalName() { return localName; } public String getQName() { return qName; } } public static class CharacterEvent implements TestEvent { private String characters; public CharacterEvent(char[] ch, int start, int length) { char[] trimmed = new char[length]; System.arraycopy(ch, start, trimmed, 0, length); this.characters = new String(trimmed); } public String getCharacters() { return characters; } } public static class FatalErrorEvent implements TestEvent { private Exception exception; public FatalErrorEvent(Exception exception) { this.exception = exception; } public Exception getException() { return exception; } } public static class ErrorEvent implements TestEvent { private Exception exception; public ErrorEvent(Exception exception) { this.exception = exception; } public Exception getException() { return exception; } } public static class WarningEvent implements TestEvent { private Exception exception; public WarningEvent(Exception exception) { this.exception = exception; } public Exception getException() { return exception; } } private List<TestEvent> events = new ArrayList<TestEvent>(); public List<TestEvent> getEvents() { return events; } public void characters(char[] ch, int start, int length) throws SAXException { System.out.println("sax characters: " + new String(ch)); events.add(new CharacterEvent(ch, start, length)); } public void endDocument() throws SAXException { System.out.println("sax end document"); events.add(new EndDocumentEvent()); } public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println("sax end element: " + qName); events.add(new EndElementEvent(uri, localName, qName)); } public void endPrefixMapping(String prefix) throws SAXException { // TODO Auto-generated method stub } public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub } public void processingInstruction(String target, String data) throws SAXException { // TODO Auto-generated method stub } public void setDocumentLocator(Locator locator) { // TODO Auto-generated method stub } public void skippedEntity(String name) throws SAXException { // TODO Auto-generated method stub } public void startDocument() throws SAXException { System.out.println("sax start document"); events.add(new StartDocumentEvent()); } public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { System.out.println("sax start element " + qName); events.add(new StartElementEvent(uri, localName, qName, atts)); } public void startPrefixMapping(String prefix, String uri) throws SAXException { // TODO Auto-generated method stub } public void error(SAXParseException exception) throws SAXException { events.add(new ErrorEvent(exception)); } public void fatalError(SAXParseException exception) throws SAXException { events.add(new FatalErrorEvent(exception)); } public void warning(SAXParseException exception) throws SAXException { events.add(new WarningEvent(exception)); } }