EMMA Coverage Report (generated Fri Feb 14 08:28:31 UTC 2014)
[all classes][org.qedeq.kernel.xml.handler.common]

COVERAGE SUMMARY FOR SOURCE FILE [SimpleHandler.java]

nameclass, %method, %block, %line, %
SimpleHandler.java100% (1/1)88%  (7/8)92%  (59/64)89%  (17.9/20)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class SimpleHandler100% (1/1)88%  (7/8)92%  (59/64)89%  (17.9/20)
getEncoding (): String 0%   (0/1)0%   (0/3)0%   (0/1)
<static initializer> 100% (1/1)90%  (9/10)90%  (0.9/1)
getEncoding (Locator): String 100% (1/1)96%  (22/23)88%  (7/8)
SimpleHandler (): void 100% (1/1)100% (3/3)100% (2/2)
getLocator (): Locator 100% (1/1)100% (3/3)100% (1/1)
getUrl (): String 100% (1/1)100% (3/3)100% (1/1)
setDocumentLocator (Locator): void 100% (1/1)100% (15/15)100% (4/4)
setUrl (String): void 100% (1/1)100% (4/4)100% (2/2)

1/* This file is part of the project "Hilbert II" - http://www.qedeq.org
2 *
3 * Copyright 2000-2014,  Michael Meyling <mime@qedeq.org>.
4 *
5 * "Hilbert II" is free software; you can redistribute
6 * it and/or modify it under the terms of the GNU General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15package org.qedeq.kernel.xml.handler.common;
16 
17import java.lang.reflect.Method;
18 
19import org.qedeq.base.trace.Trace;
20import org.xml.sax.Locator;
21import org.xml.sax.helpers.DefaultHandler;
22 
23 
24/**
25 * SAX handler that remembers {@link org.xml.sax.Locator} and possibly
26 * encoding of XML document.
27 *
28 * @author  Michael Meyling
29 */
30public class SimpleHandler extends DefaultHandler {
31 
32    /** This class. */
33    private static final Class CLASS = SimpleHandler.class;
34 
35    /** Locator for current row and column information. */
36    private Locator locator;
37 
38    /** Which encoding was used to parse the document? */
39    private String encoding;
40 
41    /** File that is parsed. */
42    private String url;
43 
44    /**
45     * Constructor.
46     */
47    public SimpleHandler() {
48        super();
49    }
50 
51    /**
52     * Receive a Locator object for document events.
53     * Store the locator for use with other document events.
54     *
55     * @param   locator A locator for all SAX document events.
56     * @see     org.xml.sax.ContentHandler#setDocumentLocator
57     * @see     org.xml.sax.Locator
58     */
59    public void setDocumentLocator(final Locator locator) {
60        this.locator = locator;
61        this.encoding = getEncoding(locator);
62        Trace.paramInfo(CLASS, this, "setDocumentLocator(locator)", "encoding", encoding);
63    }
64 
65    /**
66     * Which encoding was used to parse the document?
67     *
68     * @return  Encoding for parsed document. Maybe <code>null</code>.
69     */
70    public String getEncoding() {
71        return this.encoding;
72    }
73 
74    /**
75     * There is no way in SAX 2.0.0 or 2.0.1 to get information about the encoding; the SAX
76     * Locator2 interface from the 1.1 extensions does provide methods to accomplish this,
77     * Assuming <code>Locator</code> is an instance of the SAX Locator interface that supports
78     * <code>Locator2</code> call we can get the information.
79     *
80     * @param   locator Locator.
81     * @return  Encoding. Maybe <code>null</code>.
82     */
83    private static String getEncoding(final Locator locator) {
84        String encoding = null;
85        Method getEncoding = null;
86        try {
87            getEncoding = locator.getClass().getMethod("getEncoding", new Class[]{});
88            if (getEncoding != null) {
89                encoding = (String) getEncoding.invoke(locator, null);
90            }
91        } catch (Exception e) {
92            // either this locator object doesn't have this
93            // method, or we're on an old JDK
94        }
95        return encoding;
96    }
97 
98    /**
99     * Get document locator. This value set is set during parsing.
100     *
101     * @return  Locator. Maybe <code>null</code>.
102     */
103    protected Locator getLocator() {
104        return locator;
105    }
106 
107    /**
108     * Set original file URL.
109     *
110     * @param   url     Data from this source is parsed. This URL is only for information. The
111     *                  actual parsed data might be a local copy.
112     */
113    public final void setUrl(final String url) {
114        this.url = url;
115    }
116 
117    /**
118     * Get original file URL.
119     *
120     * @return  Data from this source is parsed. This URL is only for information. The
121     *          actual parsed data might be a local copy.
122     */
123    public final String getUrl() {
124        return url;
125    }
126 
127}

[all classes][org.qedeq.kernel.xml.handler.common]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov