1/***
2 * ASM XML Adapter
3 * Copyright (c) 2004, Eugene Kuleshov
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of the copyright holders nor the names of its
15 *    contributors may be used to endorse or promote products derived from
16 *    this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28 * THE POSSIBILITY OF SUCH DAMAGE.
29 */
30package org.objectweb.asm.xml;
31
32import org.xml.sax.Attributes;
33import org.xml.sax.ContentHandler;
34import org.xml.sax.SAXException;
35
36/**
37 * SAXAdapter
38 *
39 * @author Eugene Kuleshov
40 */
41public abstract class SAXAdapter {
42    private final ContentHandler h;
43
44    public SAXAdapter(ContentHandler h) {
45        this.h = h;
46    }
47
48    protected ContentHandler getContentHandler() {
49        return h;
50    }
51
52    protected final void addEnd(String name) {
53        try {
54            h.endElement("", name, name);
55        } catch (SAXException ex) {
56            throw new RuntimeException(ex.toString());
57        }
58    }
59
60    protected final void addStart(String name, Attributes attrs) {
61        try {
62            h.startElement("", name, name, attrs);
63        } catch (SAXException ex) {
64            throw new RuntimeException(ex.toString());
65        }
66    }
67
68    protected final void addElement(String name, Attributes attrs) {
69        addStart(name, attrs);
70        addEnd(name);
71    }
72
73    protected void addDocumentStart() {
74        try {
75            h.startDocument();
76        } catch (SAXException ex) {
77            throw new RuntimeException(ex.getException());
78        }
79    }
80
81    protected void addDocumentEnd() {
82        try {
83            h.endDocument();
84        } catch (SAXException ex) {
85            // ex.getException().printStackTrace();
86            // ex.printStackTrace();
87            throw new RuntimeException(ex.toString());
88        }
89    }
90
91}
92