1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
package org.qedeq.kernel.xml.parser; |
17 |
|
|
18 |
|
import java.io.BufferedReader; |
19 |
|
import java.io.IOException; |
20 |
|
import java.io.Reader; |
21 |
|
|
22 |
|
import javax.xml.parsers.ParserConfigurationException; |
23 |
|
import javax.xml.parsers.SAXParser; |
24 |
|
import javax.xml.parsers.SAXParserFactory; |
25 |
|
|
26 |
|
import org.qedeq.base.io.IoUtility; |
27 |
|
import org.qedeq.base.trace.Trace; |
28 |
|
import org.qedeq.kernel.se.base.list.Element; |
29 |
|
import org.qedeq.kernel.se.common.ModuleService; |
30 |
|
import org.qedeq.kernel.se.common.SourceFileExceptionList; |
31 |
|
import org.qedeq.kernel.xml.handler.common.SaxDefaultHandler; |
32 |
|
import org.qedeq.kernel.xml.handler.list.BasicHandler; |
33 |
|
import org.xml.sax.InputSource; |
34 |
|
import org.xml.sax.SAXException; |
35 |
|
import org.xml.sax.XMLReader; |
36 |
|
|
37 |
|
|
38 |
|
@link |
39 |
|
|
40 |
|
@author |
41 |
|
|
42 |
|
|
|
|
| 74.6% |
Uncovered Elements: 15 (59) |
Complexity: 14 |
Complexity Density: 0.3 |
|
43 |
|
public final class BasicParser { |
44 |
|
|
45 |
|
|
46 |
|
private static final Class CLASS = BasicParser.class; |
47 |
|
|
48 |
|
|
49 |
|
private SaxDefaultHandler handler; |
50 |
|
|
51 |
|
|
52 |
|
private XMLReader reader; |
53 |
|
|
54 |
|
|
55 |
|
private static ModuleService plugin = new ModuleService() { |
|
|
| 0% |
Uncovered Elements: 1 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
56 |
0
|
public String getServiceDescription() {... |
57 |
0
|
return "parses element lists and atoms"; |
58 |
|
} |
|
|
| 0% |
Uncovered Elements: 1 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
59 |
0
|
public String getServiceId() {... |
60 |
0
|
return BasicParser.class.getName(); |
61 |
|
} |
|
|
| 0% |
Uncovered Elements: 1 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
62 |
0
|
public String getServiceAction() {... |
63 |
0
|
return "element parser"; |
64 |
|
} |
65 |
|
}; |
66 |
|
|
67 |
|
|
68 |
|
|
69 |
|
|
70 |
|
|
71 |
|
@param |
72 |
|
@throws |
73 |
|
@throws |
74 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (12) |
Complexity: 2 |
Complexity Density: 0.2 |
|
75 |
452
|
private BasicParser(final SaxDefaultHandler handler)... |
76 |
|
throws ParserConfigurationException, SAXException { |
77 |
452
|
super(); |
78 |
452
|
this.handler = handler; |
79 |
452
|
final String factoryImpl = System.getProperty("javax.xml.parsers.SAXParserFactory"); |
80 |
452
|
if (factoryImpl == null) { |
81 |
15
|
System.setProperty("javax.xml.parsers.SAXParserFactory", |
82 |
|
"org.apache.xerces.jaxp.SAXParserFactoryImpl"); |
83 |
|
} |
84 |
452
|
SAXParserFactory factory = SAXParserFactory.newInstance(); |
85 |
452
|
factory.setNamespaceAware(false); |
86 |
452
|
factory.setValidating(false); |
87 |
|
|
88 |
452
|
final SAXParser parser = factory.newSAXParser(); |
89 |
452
|
reader = parser.getXMLReader(); |
90 |
|
} |
91 |
|
|
92 |
|
|
93 |
|
|
94 |
|
|
95 |
|
@param |
96 |
|
@param |
97 |
|
@throws |
98 |
|
@throws |
99 |
|
|
|
|
| 88.9% |
Uncovered Elements: 2 (18) |
Complexity: 3 |
Complexity Density: 0.19 |
|
100 |
452
|
private void parse(final String url, final Reader in)... |
101 |
|
throws IOException, SAXException { |
102 |
452
|
final String method = "parse(URL, boolean, InputStream)"; |
103 |
452
|
BufferedReader dis = null; |
104 |
452
|
SourceFileExceptionList exceptionList = new SourceFileExceptionList();; |
105 |
452
|
try { |
106 |
452
|
dis = new BufferedReader(in); |
107 |
452
|
final InputSource input = new InputSource(dis); |
108 |
452
|
reader.setErrorHandler(new SaxErrorHandler(plugin, |
109 |
|
url, exceptionList)); |
110 |
452
|
handler.setExceptionList(exceptionList); |
111 |
452
|
reader.setContentHandler(handler); |
112 |
452
|
handler.setUrl(url); |
113 |
452
|
reader.parse(input); |
114 |
|
} finally { |
115 |
452
|
if (dis != null) { |
116 |
452
|
try { |
117 |
452
|
dis.close(); |
118 |
|
} catch (Exception e) { |
119 |
0
|
Trace.trace(CLASS, this, method, e); |
120 |
|
} |
121 |
|
} |
122 |
|
} |
123 |
|
} |
124 |
|
|
125 |
|
|
126 |
|
|
127 |
|
|
128 |
|
@param |
129 |
|
@return |
130 |
|
@throws |
131 |
|
@throws |
132 |
|
|
|
|
| 61.5% |
Uncovered Elements: 5 (13) |
Complexity: 3 |
Complexity Density: 0.23 |
|
133 |
452
|
public static final Element[] createElements(final String xml)... |
134 |
|
throws ParserConfigurationException, SAXException { |
135 |
452
|
try { |
136 |
452
|
String data = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" |
137 |
|
+ "<basic>\n" |
138 |
|
+ xml + "\n" |
139 |
|
+ "</basic>\n"; |
140 |
452
|
SaxDefaultHandler handler = new SaxDefaultHandler(plugin); |
141 |
452
|
BasicHandler simple = new BasicHandler(handler); |
142 |
452
|
handler.setBasisDocumentHandler(simple); |
143 |
452
|
BasicParser parser = new BasicParser(handler); |
144 |
452
|
parser.parse("memory", IoUtility.stringToReader(data)); |
145 |
452
|
return (Element[]) simple.getElements().toArray(new Element[]{}); |
146 |
|
} catch (SAXException e) { |
147 |
0
|
Trace.trace(BasicParser.class, "createElement", e); |
148 |
0
|
Trace.trace(BasicParser.class, "createElement", e.getCause()); |
149 |
0
|
throw e; |
150 |
|
} catch (IOException e) { |
151 |
0
|
Trace.trace(BasicParser.class, "createElement", e); |
152 |
|
|
153 |
0
|
throw new RuntimeException(e); |
154 |
|
} |
155 |
|
} |
156 |
|
|
157 |
|
|
158 |
|
|
159 |
|
|
160 |
|
@param |
161 |
|
@return |
162 |
|
@throws |
163 |
|
@throws |
164 |
|
|
|
|
| 66.7% |
Uncovered Elements: 2 (6) |
Complexity: 3 |
Complexity Density: 0.75 |
|
165 |
452
|
public static final Element createElement(final String xml)... |
166 |
|
throws ParserConfigurationException, SAXException { |
167 |
452
|
final Element[] elements = createElements(xml); |
168 |
452
|
if (elements == null || elements.length == 0) { |
169 |
0
|
return null; |
170 |
|
} |
171 |
452
|
return elements[0]; |
172 |
|
} |
173 |
|
|
174 |
|
} |