1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
package org.apache.maven.plugin.tools.model.io.xpp3; |
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
import java.io.ByteArrayInputStream; |
12 |
|
import java.io.IOException; |
13 |
|
import java.io.InputStreamReader; |
14 |
|
import java.io.Reader; |
15 |
|
import java.io.StringReader; |
16 |
|
import java.io.StringWriter; |
17 |
|
import java.text.DateFormat; |
18 |
|
import java.text.ParsePosition; |
19 |
|
import java.util.Locale; |
20 |
|
import java.util.regex.Matcher; |
21 |
|
import java.util.regex.Pattern; |
22 |
|
import org.apache.maven.plugin.tools.model.Component; |
23 |
|
import org.apache.maven.plugin.tools.model.LifecycleExecution; |
24 |
|
import org.apache.maven.plugin.tools.model.Mojo; |
25 |
|
import org.apache.maven.plugin.tools.model.Parameter; |
26 |
|
import org.apache.maven.plugin.tools.model.PluginMetadata; |
27 |
|
import org.codehaus.plexus.util.IOUtil; |
28 |
|
import org.codehaus.plexus.util.xml.pull.MXParser; |
29 |
|
import org.codehaus.plexus.util.xml.pull.XmlPullParser; |
30 |
|
import org.codehaus.plexus.util.xml.pull.XmlPullParserException; |
31 |
|
|
32 |
|
|
33 |
|
|
34 |
|
|
35 |
|
|
36 |
|
|
37 |
0 |
public class PluginMetadataXpp3Reader { |
38 |
|
|
39 |
|
|
40 |
|
|
41 |
|
|
42 |
|
|
43 |
|
|
44 |
|
|
45 |
|
|
46 |
|
|
47 |
|
|
48 |
|
|
49 |
|
|
50 |
|
|
51 |
|
|
52 |
|
|
53 |
|
|
54 |
0 |
private boolean addDefaultEntities = true; |
55 |
|
|
56 |
|
|
57 |
|
|
58 |
|
|
59 |
|
|
60 |
|
|
61 |
|
|
62 |
|
|
63 |
|
|
64 |
|
public boolean getAddDefaultEntities() |
65 |
|
{ |
66 |
0 |
return addDefaultEntities; |
67 |
|
} |
68 |
|
|
69 |
|
|
70 |
|
|
71 |
|
|
72 |
|
|
73 |
|
|
74 |
|
|
75 |
|
|
76 |
|
public boolean getBooleanValue(String s, String attribute, XmlPullParser parser) |
77 |
|
throws XmlPullParserException |
78 |
|
{ |
79 |
0 |
if ( s != null ) |
80 |
|
{ |
81 |
0 |
return Boolean.valueOf( s ).booleanValue(); |
82 |
|
} |
83 |
0 |
return false; |
84 |
|
} |
85 |
|
|
86 |
|
|
87 |
|
|
88 |
|
|
89 |
|
|
90 |
|
|
91 |
|
|
92 |
|
|
93 |
|
public char getCharacterValue(String s, String attribute, XmlPullParser parser) |
94 |
|
throws XmlPullParserException |
95 |
|
{ |
96 |
0 |
if ( s != null ) |
97 |
|
{ |
98 |
0 |
return s.charAt( 0 ); |
99 |
|
} |
100 |
0 |
return 0; |
101 |
|
} |
102 |
|
|
103 |
|
|
104 |
|
|
105 |
|
|
106 |
|
|
107 |
|
|
108 |
|
|
109 |
|
|
110 |
|
|
111 |
|
public java.util.Date getDateValue(String s, String attribute, String dateFormat, XmlPullParser parser) |
112 |
|
throws XmlPullParserException |
113 |
|
{ |
114 |
0 |
if ( s != null ) |
115 |
|
{ |
116 |
0 |
if ( dateFormat == null ) |
117 |
|
{ |
118 |
0 |
return new java.util.Date( Long.valueOf( s ).longValue() ); |
119 |
|
} |
120 |
|
else |
121 |
|
{ |
122 |
0 |
DateFormat dateParser = new java.text.SimpleDateFormat( dateFormat, Locale.US ); |
123 |
|
try |
124 |
|
{ |
125 |
0 |
return dateParser.parse( s ); |
126 |
|
} |
127 |
0 |
catch ( java.text.ParseException e ) |
128 |
|
{ |
129 |
0 |
throw new XmlPullParserException( e.getMessage() ); |
130 |
|
} |
131 |
|
} |
132 |
|
} |
133 |
0 |
return null; |
134 |
|
} |
135 |
|
|
136 |
|
|
137 |
|
|
138 |
|
|
139 |
|
|
140 |
|
|
141 |
|
|
142 |
|
|
143 |
|
|
144 |
|
public double getDoubleValue(String s, String attribute, XmlPullParser parser, boolean strict) |
145 |
|
throws XmlPullParserException |
146 |
|
{ |
147 |
0 |
if ( s != null ) |
148 |
|
{ |
149 |
|
try |
150 |
|
{ |
151 |
0 |
return Double.valueOf( s ).doubleValue(); |
152 |
|
} |
153 |
0 |
catch ( NumberFormatException e ) |
154 |
|
{ |
155 |
0 |
if ( strict ) |
156 |
|
{ |
157 |
0 |
throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, null ); |
158 |
|
} |
159 |
|
} |
160 |
|
} |
161 |
0 |
return 0; |
162 |
|
} |
163 |
|
|
164 |
|
|
165 |
|
|
166 |
|
|
167 |
|
|
168 |
|
|
169 |
|
|
170 |
|
|
171 |
|
|
172 |
|
public float getFloatValue(String s, String attribute, XmlPullParser parser, boolean strict) |
173 |
|
throws XmlPullParserException |
174 |
|
{ |
175 |
0 |
if ( s != null ) |
176 |
|
{ |
177 |
|
try |
178 |
|
{ |
179 |
0 |
return Float.valueOf( s ).floatValue(); |
180 |
|
} |
181 |
0 |
catch ( NumberFormatException e ) |
182 |
|
{ |
183 |
0 |
if ( strict ) |
184 |
|
{ |
185 |
0 |
throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, null ); |
186 |
|
} |
187 |
|
} |
188 |
|
} |
189 |
0 |
return 0; |
190 |
|
} |
191 |
|
|
192 |
|
|
193 |
|
|
194 |
|
|
195 |
|
|
196 |
|
|
197 |
|
|
198 |
|
|
199 |
|
|
200 |
|
public int getIntegerValue(String s, String attribute, XmlPullParser parser, boolean strict) |
201 |
|
throws XmlPullParserException |
202 |
|
{ |
203 |
0 |
if ( s != null ) |
204 |
|
{ |
205 |
|
try |
206 |
|
{ |
207 |
0 |
return Integer.valueOf( s ).intValue(); |
208 |
|
} |
209 |
0 |
catch ( NumberFormatException e ) |
210 |
|
{ |
211 |
0 |
if ( strict ) |
212 |
|
{ |
213 |
0 |
throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be an integer", parser, null ); |
214 |
|
} |
215 |
|
} |
216 |
|
} |
217 |
0 |
return 0; |
218 |
|
} |
219 |
|
|
220 |
|
|
221 |
|
|
222 |
|
|
223 |
|
|
224 |
|
|
225 |
|
|
226 |
|
|
227 |
|
|
228 |
|
public long getLongValue(String s, String attribute, XmlPullParser parser, boolean strict) |
229 |
|
throws XmlPullParserException |
230 |
|
{ |
231 |
0 |
if ( s != null ) |
232 |
|
{ |
233 |
|
try |
234 |
|
{ |
235 |
0 |
return Long.valueOf( s ).longValue(); |
236 |
|
} |
237 |
0 |
catch ( NumberFormatException e ) |
238 |
|
{ |
239 |
0 |
if ( strict ) |
240 |
|
{ |
241 |
0 |
throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a long integer", parser, null ); |
242 |
|
} |
243 |
|
} |
244 |
|
} |
245 |
0 |
return 0; |
246 |
|
} |
247 |
|
|
248 |
|
|
249 |
|
|
250 |
|
|
251 |
|
|
252 |
|
|
253 |
|
|
254 |
|
|
255 |
|
|
256 |
|
public String getRequiredAttributeValue(String s, String attribute, XmlPullParser parser, boolean strict) |
257 |
|
throws XmlPullParserException |
258 |
|
{ |
259 |
0 |
if ( s == null ) |
260 |
|
{ |
261 |
0 |
if ( strict ) |
262 |
|
{ |
263 |
0 |
throw new XmlPullParserException( "Missing required value for attribute '" + attribute + "'", parser, null ); |
264 |
|
} |
265 |
|
} |
266 |
0 |
return s; |
267 |
|
} |
268 |
|
|
269 |
|
|
270 |
|
|
271 |
|
|
272 |
|
|
273 |
|
|
274 |
|
|
275 |
|
|
276 |
|
|
277 |
|
public short getShortValue(String s, String attribute, XmlPullParser parser, boolean strict) |
278 |
|
throws XmlPullParserException |
279 |
|
{ |
280 |
0 |
if ( s != null ) |
281 |
|
{ |
282 |
|
try |
283 |
|
{ |
284 |
0 |
return Short.valueOf( s ).shortValue(); |
285 |
|
} |
286 |
0 |
catch ( NumberFormatException e ) |
287 |
|
{ |
288 |
0 |
if ( strict ) |
289 |
|
{ |
290 |
0 |
throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a short integer", parser, null ); |
291 |
|
} |
292 |
|
} |
293 |
|
} |
294 |
0 |
return 0; |
295 |
|
} |
296 |
|
|
297 |
|
|
298 |
|
|
299 |
|
|
300 |
|
|
301 |
|
|
302 |
|
public String getTrimmedValue(String s) |
303 |
|
{ |
304 |
0 |
if ( s != null ) |
305 |
|
{ |
306 |
0 |
s = s.trim(); |
307 |
|
} |
308 |
0 |
return s; |
309 |
|
} |
310 |
|
|
311 |
|
|
312 |
|
|
313 |
|
|
314 |
|
|
315 |
|
|
316 |
|
|
317 |
|
|
318 |
|
|
319 |
|
private Component parseComponent(String tagName, XmlPullParser parser, boolean strict, String encoding) |
320 |
|
throws IOException, XmlPullParserException |
321 |
|
{ |
322 |
0 |
Component component = new Component(); |
323 |
0 |
component.setModelEncoding( encoding ); |
324 |
0 |
java.util.Set parsed = new java.util.HashSet(); |
325 |
0 |
while ( parser.nextTag() == XmlPullParser.START_TAG ) |
326 |
|
{ |
327 |
0 |
if ( parser.getName().equals( "role" ) ) |
328 |
|
{ |
329 |
0 |
if ( parsed.contains( "role" ) ) |
330 |
|
{ |
331 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
332 |
|
} |
333 |
0 |
parsed.add( "role" ); |
334 |
0 |
component.setRole( getTrimmedValue( parser.nextText()) ); |
335 |
0 |
} |
336 |
0 |
else if ( parser.getName().equals( "hint" ) ) |
337 |
|
{ |
338 |
0 |
if ( parsed.contains( "hint" ) ) |
339 |
|
{ |
340 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
341 |
|
} |
342 |
0 |
parsed.add( "hint" ); |
343 |
0 |
component.setHint( getTrimmedValue( parser.nextText()) ); |
344 |
0 |
} |
345 |
|
else |
346 |
|
{ |
347 |
0 |
if ( strict ) |
348 |
|
{ |
349 |
0 |
throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null); |
350 |
|
} |
351 |
|
} |
352 |
|
} |
353 |
0 |
return component; |
354 |
|
} |
355 |
|
|
356 |
|
|
357 |
|
|
358 |
|
|
359 |
|
|
360 |
|
|
361 |
|
|
362 |
|
|
363 |
|
|
364 |
|
private LifecycleExecution parseLifecycleExecution(String tagName, XmlPullParser parser, boolean strict, String encoding) |
365 |
|
throws IOException, XmlPullParserException |
366 |
|
{ |
367 |
0 |
LifecycleExecution lifecycleExecution = new LifecycleExecution(); |
368 |
0 |
lifecycleExecution.setModelEncoding( encoding ); |
369 |
0 |
java.util.Set parsed = new java.util.HashSet(); |
370 |
0 |
while ( parser.nextTag() == XmlPullParser.START_TAG ) |
371 |
|
{ |
372 |
0 |
if ( parser.getName().equals( "lifecycle" ) ) |
373 |
|
{ |
374 |
0 |
if ( parsed.contains( "lifecycle" ) ) |
375 |
|
{ |
376 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
377 |
|
} |
378 |
0 |
parsed.add( "lifecycle" ); |
379 |
0 |
lifecycleExecution.setLifecycle( getTrimmedValue( parser.nextText()) ); |
380 |
0 |
} |
381 |
0 |
else if ( parser.getName().equals( "phase" ) ) |
382 |
|
{ |
383 |
0 |
if ( parsed.contains( "phase" ) ) |
384 |
|
{ |
385 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
386 |
|
} |
387 |
0 |
parsed.add( "phase" ); |
388 |
0 |
lifecycleExecution.setPhase( getTrimmedValue( parser.nextText()) ); |
389 |
0 |
} |
390 |
0 |
else if ( parser.getName().equals( "goal" ) ) |
391 |
|
{ |
392 |
0 |
if ( parsed.contains( "goal" ) ) |
393 |
|
{ |
394 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
395 |
|
} |
396 |
0 |
parsed.add( "goal" ); |
397 |
0 |
lifecycleExecution.setGoal( getTrimmedValue( parser.nextText()) ); |
398 |
0 |
} |
399 |
|
else |
400 |
|
{ |
401 |
0 |
if ( strict ) |
402 |
|
{ |
403 |
0 |
throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null); |
404 |
|
} |
405 |
|
} |
406 |
|
} |
407 |
0 |
return lifecycleExecution; |
408 |
|
} |
409 |
|
|
410 |
|
|
411 |
|
|
412 |
|
|
413 |
|
|
414 |
|
|
415 |
|
|
416 |
|
|
417 |
|
|
418 |
|
private Mojo parseMojo(String tagName, XmlPullParser parser, boolean strict, String encoding) |
419 |
|
throws IOException, XmlPullParserException |
420 |
|
{ |
421 |
0 |
Mojo mojo = new Mojo(); |
422 |
0 |
mojo.setModelEncoding( encoding ); |
423 |
0 |
java.util.Set parsed = new java.util.HashSet(); |
424 |
0 |
while ( parser.nextTag() == XmlPullParser.START_TAG ) |
425 |
|
{ |
426 |
0 |
if ( parser.getName().equals( "goal" ) ) |
427 |
|
{ |
428 |
0 |
if ( parsed.contains( "goal" ) ) |
429 |
|
{ |
430 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
431 |
|
} |
432 |
0 |
parsed.add( "goal" ); |
433 |
0 |
mojo.setGoal( getTrimmedValue( parser.nextText()) ); |
434 |
0 |
} |
435 |
0 |
else if ( parser.getName().equals( "phase" ) ) |
436 |
|
{ |
437 |
0 |
if ( parsed.contains( "phase" ) ) |
438 |
|
{ |
439 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
440 |
|
} |
441 |
0 |
parsed.add( "phase" ); |
442 |
0 |
mojo.setPhase( getTrimmedValue( parser.nextText()) ); |
443 |
0 |
} |
444 |
0 |
else if ( parser.getName().equals( "aggregator" ) ) |
445 |
|
{ |
446 |
0 |
if ( parsed.contains( "aggregator" ) ) |
447 |
|
{ |
448 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
449 |
|
} |
450 |
0 |
parsed.add( "aggregator" ); |
451 |
0 |
mojo.setAggregator( getBooleanValue( getTrimmedValue( parser.nextText()), "aggregator", parser ) ); |
452 |
0 |
} |
453 |
0 |
else if ( parser.getName().equals( "requiresDependencyResolution" ) ) |
454 |
|
{ |
455 |
0 |
if ( parsed.contains( "requiresDependencyResolution" ) ) |
456 |
|
{ |
457 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
458 |
|
} |
459 |
0 |
parsed.add( "requiresDependencyResolution" ); |
460 |
0 |
mojo.setRequiresDependencyResolution( getTrimmedValue( parser.nextText()) ); |
461 |
0 |
} |
462 |
0 |
else if ( parser.getName().equals( "requiresProject" ) ) |
463 |
|
{ |
464 |
0 |
if ( parsed.contains( "requiresProject" ) ) |
465 |
|
{ |
466 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
467 |
|
} |
468 |
0 |
parsed.add( "requiresProject" ); |
469 |
0 |
mojo.setRequiresProject( getBooleanValue( getTrimmedValue( parser.nextText()), "requiresProject", parser ) ); |
470 |
0 |
} |
471 |
0 |
else if ( parser.getName().equals( "requiresReports" ) ) |
472 |
|
{ |
473 |
0 |
if ( parsed.contains( "requiresReports" ) ) |
474 |
|
{ |
475 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
476 |
|
} |
477 |
0 |
parsed.add( "requiresReports" ); |
478 |
0 |
mojo.setRequiresReports( getBooleanValue( getTrimmedValue( parser.nextText()), "requiresReports", parser ) ); |
479 |
0 |
} |
480 |
0 |
else if ( parser.getName().equals( "requiresOnline" ) ) |
481 |
|
{ |
482 |
0 |
if ( parsed.contains( "requiresOnline" ) ) |
483 |
|
{ |
484 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
485 |
|
} |
486 |
0 |
parsed.add( "requiresOnline" ); |
487 |
0 |
mojo.setRequiresOnline( getBooleanValue( getTrimmedValue( parser.nextText()), "requiresOnline", parser ) ); |
488 |
0 |
} |
489 |
0 |
else if ( parser.getName().equals( "inheritByDefault" ) ) |
490 |
|
{ |
491 |
0 |
if ( parsed.contains( "inheritByDefault" ) ) |
492 |
|
{ |
493 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
494 |
|
} |
495 |
0 |
parsed.add( "inheritByDefault" ); |
496 |
0 |
mojo.setInheritByDefault( getBooleanValue( getTrimmedValue( parser.nextText()), "inheritByDefault", parser ) ); |
497 |
0 |
} |
498 |
0 |
else if ( parser.getName().equals( "requiresDirectInvocation" ) ) |
499 |
|
{ |
500 |
0 |
if ( parsed.contains( "requiresDirectInvocation" ) ) |
501 |
|
{ |
502 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
503 |
|
} |
504 |
0 |
parsed.add( "requiresDirectInvocation" ); |
505 |
0 |
mojo.setRequiresDirectInvocation( getBooleanValue( getTrimmedValue( parser.nextText()), "requiresDirectInvocation", parser ) ); |
506 |
0 |
} |
507 |
0 |
else if ( parser.getName().equals( "execution" ) ) |
508 |
|
{ |
509 |
0 |
if ( parsed.contains( "execution" ) ) |
510 |
|
{ |
511 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
512 |
|
} |
513 |
0 |
parsed.add( "execution" ); |
514 |
0 |
mojo.setExecution( parseLifecycleExecution( "execution", parser, strict, encoding ) ); |
515 |
0 |
} |
516 |
0 |
else if ( parser.getName().equals( "components" ) ) |
517 |
|
{ |
518 |
0 |
if ( parsed.contains( "components" ) ) |
519 |
|
{ |
520 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
521 |
|
} |
522 |
0 |
parsed.add( "components" ); |
523 |
0 |
java.util.List components = new java.util.ArrayList(); |
524 |
0 |
mojo.setComponents( components ); |
525 |
0 |
while ( parser.nextTag() == XmlPullParser.START_TAG ) |
526 |
|
{ |
527 |
0 |
if ( parser.getName().equals( "component" ) ) |
528 |
|
{ |
529 |
0 |
components.add( parseComponent( "component", parser, strict, encoding ) ); |
530 |
0 |
} |
531 |
|
else |
532 |
|
{ |
533 |
0 |
parser.nextText(); |
534 |
|
} |
535 |
0 |
} |
536 |
0 |
} |
537 |
0 |
else if ( parser.getName().equals( "parameters" ) ) |
538 |
|
{ |
539 |
0 |
if ( parsed.contains( "parameters" ) ) |
540 |
|
{ |
541 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
542 |
|
} |
543 |
0 |
parsed.add( "parameters" ); |
544 |
0 |
java.util.List parameters = new java.util.ArrayList(); |
545 |
0 |
mojo.setParameters( parameters ); |
546 |
0 |
while ( parser.nextTag() == XmlPullParser.START_TAG ) |
547 |
|
{ |
548 |
0 |
if ( parser.getName().equals( "parameter" ) ) |
549 |
|
{ |
550 |
0 |
parameters.add( parseParameter( "parameter", parser, strict, encoding ) ); |
551 |
0 |
} |
552 |
|
else |
553 |
|
{ |
554 |
0 |
parser.nextText(); |
555 |
|
} |
556 |
0 |
} |
557 |
0 |
} |
558 |
0 |
else if ( parser.getName().equals( "description" ) ) |
559 |
|
{ |
560 |
0 |
if ( parsed.contains( "description" ) ) |
561 |
|
{ |
562 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
563 |
|
} |
564 |
0 |
parsed.add( "description" ); |
565 |
0 |
mojo.setDescription( getTrimmedValue( parser.nextText()) ); |
566 |
0 |
} |
567 |
0 |
else if ( parser.getName().equals( "deprecated" ) ) |
568 |
|
{ |
569 |
0 |
if ( parsed.contains( "deprecated" ) ) |
570 |
|
{ |
571 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
572 |
|
} |
573 |
0 |
parsed.add( "deprecated" ); |
574 |
0 |
mojo.setDeprecation( getTrimmedValue( parser.nextText()) ); |
575 |
0 |
} |
576 |
0 |
else if ( parser.getName().equals( "call" ) ) |
577 |
|
{ |
578 |
0 |
if ( parsed.contains( "call" ) ) |
579 |
|
{ |
580 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
581 |
|
} |
582 |
0 |
parsed.add( "call" ); |
583 |
0 |
mojo.setCall( getTrimmedValue( parser.nextText()) ); |
584 |
0 |
} |
585 |
|
else |
586 |
|
{ |
587 |
0 |
if ( strict ) |
588 |
|
{ |
589 |
0 |
throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null); |
590 |
|
} |
591 |
|
} |
592 |
|
} |
593 |
0 |
return mojo; |
594 |
|
} |
595 |
|
|
596 |
|
|
597 |
|
|
598 |
|
|
599 |
|
|
600 |
|
|
601 |
|
|
602 |
|
|
603 |
|
|
604 |
|
private Parameter parseParameter(String tagName, XmlPullParser parser, boolean strict, String encoding) |
605 |
|
throws IOException, XmlPullParserException |
606 |
|
{ |
607 |
0 |
Parameter parameter = new Parameter(); |
608 |
0 |
parameter.setModelEncoding( encoding ); |
609 |
0 |
java.util.Set parsed = new java.util.HashSet(); |
610 |
0 |
while ( parser.nextTag() == XmlPullParser.START_TAG ) |
611 |
|
{ |
612 |
0 |
if ( parser.getName().equals( "name" ) ) |
613 |
|
{ |
614 |
0 |
if ( parsed.contains( "name" ) ) |
615 |
|
{ |
616 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
617 |
|
} |
618 |
0 |
parsed.add( "name" ); |
619 |
0 |
parameter.setName( getTrimmedValue( parser.nextText()) ); |
620 |
0 |
} |
621 |
0 |
else if ( parser.getName().equals( "alias" ) ) |
622 |
|
{ |
623 |
0 |
if ( parsed.contains( "alias" ) ) |
624 |
|
{ |
625 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
626 |
|
} |
627 |
0 |
parsed.add( "alias" ); |
628 |
0 |
parameter.setAlias( getTrimmedValue( parser.nextText()) ); |
629 |
0 |
} |
630 |
0 |
else if ( parser.getName().equals( "property" ) ) |
631 |
|
{ |
632 |
0 |
if ( parsed.contains( "property" ) ) |
633 |
|
{ |
634 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
635 |
|
} |
636 |
0 |
parsed.add( "property" ); |
637 |
0 |
parameter.setProperty( getTrimmedValue( parser.nextText()) ); |
638 |
0 |
} |
639 |
0 |
else if ( parser.getName().equals( "required" ) ) |
640 |
|
{ |
641 |
0 |
if ( parsed.contains( "required" ) ) |
642 |
|
{ |
643 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
644 |
|
} |
645 |
0 |
parsed.add( "required" ); |
646 |
0 |
parameter.setRequired( getBooleanValue( getTrimmedValue( parser.nextText()), "required", parser ) ); |
647 |
0 |
} |
648 |
0 |
else if ( parser.getName().equals( "readonly" ) ) |
649 |
|
{ |
650 |
0 |
if ( parsed.contains( "readonly" ) ) |
651 |
|
{ |
652 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
653 |
|
} |
654 |
0 |
parsed.add( "readonly" ); |
655 |
0 |
parameter.setReadonly( getBooleanValue( getTrimmedValue( parser.nextText()), "readonly", parser ) ); |
656 |
0 |
} |
657 |
0 |
else if ( parser.getName().equals( "expression" ) ) |
658 |
|
{ |
659 |
0 |
if ( parsed.contains( "expression" ) ) |
660 |
|
{ |
661 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
662 |
|
} |
663 |
0 |
parsed.add( "expression" ); |
664 |
0 |
parameter.setExpression( getTrimmedValue( parser.nextText()) ); |
665 |
0 |
} |
666 |
0 |
else if ( parser.getName().equals( "defaultValue" ) ) |
667 |
|
{ |
668 |
0 |
if ( parsed.contains( "defaultValue" ) ) |
669 |
|
{ |
670 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
671 |
|
} |
672 |
0 |
parsed.add( "defaultValue" ); |
673 |
0 |
parameter.setDefaultValue( getTrimmedValue( parser.nextText()) ); |
674 |
0 |
} |
675 |
0 |
else if ( parser.getName().equals( "type" ) ) |
676 |
|
{ |
677 |
0 |
if ( parsed.contains( "type" ) ) |
678 |
|
{ |
679 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
680 |
|
} |
681 |
0 |
parsed.add( "type" ); |
682 |
0 |
parameter.setType( getTrimmedValue( parser.nextText()) ); |
683 |
0 |
} |
684 |
0 |
else if ( parser.getName().equals( "description" ) ) |
685 |
|
{ |
686 |
0 |
if ( parsed.contains( "description" ) ) |
687 |
|
{ |
688 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
689 |
|
} |
690 |
0 |
parsed.add( "description" ); |
691 |
0 |
parameter.setDescription( getTrimmedValue( parser.nextText()) ); |
692 |
0 |
} |
693 |
0 |
else if ( parser.getName().equals( "deprecated" ) ) |
694 |
|
{ |
695 |
0 |
if ( parsed.contains( "deprecated" ) ) |
696 |
|
{ |
697 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
698 |
|
} |
699 |
0 |
parsed.add( "deprecated" ); |
700 |
0 |
parameter.setDeprecation( getTrimmedValue( parser.nextText()) ); |
701 |
0 |
} |
702 |
|
else |
703 |
|
{ |
704 |
0 |
if ( strict ) |
705 |
|
{ |
706 |
0 |
throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null); |
707 |
|
} |
708 |
|
} |
709 |
|
} |
710 |
0 |
return parameter; |
711 |
|
} |
712 |
|
|
713 |
|
|
714 |
|
|
715 |
|
|
716 |
|
|
717 |
|
|
718 |
|
|
719 |
|
|
720 |
|
|
721 |
|
private PluginMetadata parsePluginMetadata(String tagName, XmlPullParser parser, boolean strict, String encoding) |
722 |
|
throws IOException, XmlPullParserException |
723 |
|
{ |
724 |
0 |
PluginMetadata pluginMetadata = new PluginMetadata(); |
725 |
0 |
pluginMetadata.setModelEncoding( encoding ); |
726 |
0 |
java.util.Set parsed = new java.util.HashSet(); |
727 |
0 |
int eventType = parser.getEventType(); |
728 |
0 |
boolean foundRoot = false; |
729 |
0 |
while ( eventType != XmlPullParser.END_DOCUMENT ) |
730 |
|
{ |
731 |
0 |
if ( eventType == XmlPullParser.START_TAG ) |
732 |
|
{ |
733 |
0 |
if ( parser.getName().equals( tagName ) ) |
734 |
|
{ |
735 |
0 |
foundRoot = true; |
736 |
0 |
} |
737 |
0 |
else if ( parser.getName().equals( "mojos" ) ) |
738 |
|
{ |
739 |
0 |
if ( parsed.contains( "mojos" ) ) |
740 |
|
{ |
741 |
0 |
throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null); |
742 |
|
} |
743 |
0 |
parsed.add( "mojos" ); |
744 |
0 |
java.util.List mojos = new java.util.ArrayList(); |
745 |
0 |
pluginMetadata.setMojos( mojos ); |
746 |
0 |
while ( parser.nextTag() == XmlPullParser.START_TAG ) |
747 |
|
{ |
748 |
0 |
if ( parser.getName().equals( "mojo" ) ) |
749 |
|
{ |
750 |
0 |
mojos.add( parseMojo( "mojo", parser, strict, encoding ) ); |
751 |
0 |
} |
752 |
|
else |
753 |
|
{ |
754 |
0 |
parser.nextText(); |
755 |
|
} |
756 |
0 |
} |
757 |
0 |
} |
758 |
|
else |
759 |
|
{ |
760 |
0 |
if ( foundRoot ) |
761 |
|
{ |
762 |
0 |
if ( strict ) |
763 |
|
{ |
764 |
0 |
throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null); |
765 |
|
} |
766 |
|
} |
767 |
|
} |
768 |
|
} |
769 |
0 |
eventType = parser.next(); |
770 |
0 |
} |
771 |
0 |
return pluginMetadata; |
772 |
|
} |
773 |
|
|
774 |
|
|
775 |
|
|
776 |
|
|
777 |
|
|
778 |
|
|
779 |
|
|
780 |
|
public PluginMetadata read(Reader reader, boolean strict) |
781 |
|
throws IOException, XmlPullParserException |
782 |
|
{ |
783 |
0 |
XmlPullParser parser = new MXParser(); |
784 |
|
|
785 |
0 |
parser.setInput( reader ); |
786 |
|
|
787 |
0 |
if ( addDefaultEntities ) |
788 |
|
{ |
789 |
|
|
790 |
|
|
791 |
|
|
792 |
|
|
793 |
0 |
parser.defineEntityReplacementText( "nbsp", "\u00a0" ); |
794 |
0 |
parser.defineEntityReplacementText( "iexcl", "\u00a1" ); |
795 |
0 |
parser.defineEntityReplacementText( "cent", "\u00a2" ); |
796 |
0 |
parser.defineEntityReplacementText( "pound", "\u00a3" ); |
797 |
0 |
parser.defineEntityReplacementText( "curren", "\u00a4" ); |
798 |
0 |
parser.defineEntityReplacementText( "yen", "\u00a5" ); |
799 |
0 |
parser.defineEntityReplacementText( "brvbar", "\u00a6" ); |
800 |
0 |
parser.defineEntityReplacementText( "sect", "\u00a7" ); |
801 |
0 |
parser.defineEntityReplacementText( "uml", "\u00a8" ); |
802 |
0 |
parser.defineEntityReplacementText( "copy", "\u00a9" ); |
803 |
0 |
parser.defineEntityReplacementText( "ordf", "\u00aa" ); |
804 |
0 |
parser.defineEntityReplacementText( "laquo", "\u00ab" ); |
805 |
0 |
parser.defineEntityReplacementText( "not", "\u00ac" ); |
806 |
0 |
parser.defineEntityReplacementText( "shy", "\u00ad" ); |
807 |
0 |
parser.defineEntityReplacementText( "reg", "\u00ae" ); |
808 |
0 |
parser.defineEntityReplacementText( "macr", "\u00af" ); |
809 |
0 |
parser.defineEntityReplacementText( "deg", "\u00b0" ); |
810 |
0 |
parser.defineEntityReplacementText( "plusmn", "\u00b1" ); |
811 |
0 |
parser.defineEntityReplacementText( "sup2", "\u00b2" ); |
812 |
0 |
parser.defineEntityReplacementText( "sup3", "\u00b3" ); |
813 |
0 |
parser.defineEntityReplacementText( "acute", "\u00b4" ); |
814 |
0 |
parser.defineEntityReplacementText( "micro", "\u00b5" ); |
815 |
0 |
parser.defineEntityReplacementText( "para", "\u00b6" ); |
816 |
0 |
parser.defineEntityReplacementText( "middot", "\u00b7" ); |
817 |
0 |
parser.defineEntityReplacementText( "cedil", "\u00b8" ); |
818 |
0 |
parser.defineEntityReplacementText( "sup1", "\u00b9" ); |
819 |
0 |
parser.defineEntityReplacementText( "ordm", "\u00ba" ); |
820 |
0 |
parser.defineEntityReplacementText( "raquo", "\u00bb" ); |
821 |
0 |
parser.defineEntityReplacementText( "frac14", "\u00bc" ); |
822 |
0 |
parser.defineEntityReplacementText( "frac12", "\u00bd" ); |
823 |
0 |
parser.defineEntityReplacementText( "frac34", "\u00be" ); |
824 |
0 |
parser.defineEntityReplacementText( "iquest", "\u00bf" ); |
825 |
0 |
parser.defineEntityReplacementText( "Agrave", "\u00c0" ); |
826 |
0 |
parser.defineEntityReplacementText( "Aacute", "\u00c1" ); |
827 |
0 |
parser.defineEntityReplacementText( "Acirc", "\u00c2" ); |
828 |
0 |
parser.defineEntityReplacementText( "Atilde", "\u00c3" ); |
829 |
0 |
parser.defineEntityReplacementText( "Auml", "\u00c4" ); |
830 |
0 |
parser.defineEntityReplacementText( "Aring", "\u00c5" ); |
831 |
0 |
parser.defineEntityReplacementText( "AElig", "\u00c6" ); |
832 |
0 |
parser.defineEntityReplacementText( "Ccedil", "\u00c7" ); |
833 |
0 |
parser.defineEntityReplacementText( "Egrave", "\u00c8" ); |
834 |
0 |
parser.defineEntityReplacementText( "Eacute", "\u00c9" ); |
835 |
0 |
parser.defineEntityReplacementText( "Ecirc", "\u00ca" ); |
836 |
0 |
parser.defineEntityReplacementText( "Euml", "\u00cb" ); |
837 |
0 |
parser.defineEntityReplacementText( "Igrave", "\u00cc" ); |
838 |
0 |
parser.defineEntityReplacementText( "Iacute", "\u00cd" ); |
839 |
0 |
parser.defineEntityReplacementText( "Icirc", "\u00ce" ); |
840 |
0 |
parser.defineEntityReplacementText( "Iuml", "\u00cf" ); |
841 |
0 |
parser.defineEntityReplacementText( "ETH", "\u00d0" ); |
842 |
0 |
parser.defineEntityReplacementText( "Ntilde", "\u00d1" ); |
843 |
0 |
parser.defineEntityReplacementText( "Ograve", "\u00d2" ); |
844 |
0 |
parser.defineEntityReplacementText( "Oacute", "\u00d3" ); |
845 |
0 |
parser.defineEntityReplacementText( "Ocirc", "\u00d4" ); |
846 |
0 |
parser.defineEntityReplacementText( "Otilde", "\u00d5" ); |
847 |
0 |
parser.defineEntityReplacementText( "Ouml", "\u00d6" ); |
848 |
0 |
parser.defineEntityReplacementText( "times", "\u00d7" ); |
849 |
0 |
parser.defineEntityReplacementText( "Oslash", "\u00d8" ); |
850 |
0 |
parser.defineEntityReplacementText( "Ugrave", "\u00d9" ); |
851 |
0 |
parser.defineEntityReplacementText( "Uacute", "\u00da" ); |
852 |
0 |
parser.defineEntityReplacementText( "Ucirc", "\u00db" ); |
853 |
0 |
parser.defineEntityReplacementText( "Uuml", "\u00dc" ); |
854 |
0 |
parser.defineEntityReplacementText( "Yacute", "\u00dd" ); |
855 |
0 |
parser.defineEntityReplacementText( "THORN", "\u00de" ); |
856 |
0 |
parser.defineEntityReplacementText( "szlig", "\u00df" ); |
857 |
0 |
parser.defineEntityReplacementText( "agrave", "\u00e0" ); |
858 |
0 |
parser.defineEntityReplacementText( "aacute", "\u00e1" ); |
859 |
0 |
parser.defineEntityReplacementText( "acirc", "\u00e2" ); |
860 |
0 |
parser.defineEntityReplacementText( "atilde", "\u00e3" ); |
861 |
0 |
parser.defineEntityReplacementText( "auml", "\u00e4" ); |
862 |
0 |
parser.defineEntityReplacementText( "aring", "\u00e5" ); |
863 |
0 |
parser.defineEntityReplacementText( "aelig", "\u00e6" ); |
864 |
0 |
parser.defineEntityReplacementText( "ccedil", "\u00e7" ); |
865 |
0 |
parser.defineEntityReplacementText( "egrave", "\u00e8" ); |
866 |
0 |
parser.defineEntityReplacementText( "eacute", "\u00e9" ); |
867 |
0 |
parser.defineEntityReplacementText( "ecirc", "\u00ea" ); |
868 |
0 |
parser.defineEntityReplacementText( "euml", "\u00eb" ); |
869 |
0 |
parser.defineEntityReplacementText( "igrave", "\u00ec" ); |
870 |
0 |
parser.defineEntityReplacementText( "iacute", "\u00ed" ); |
871 |
0 |
parser.defineEntityReplacementText( "icirc", "\u00ee" ); |
872 |
0 |
parser.defineEntityReplacementText( "iuml", "\u00ef" ); |
873 |
0 |
parser.defineEntityReplacementText( "eth", "\u00f0" ); |
874 |
0 |
parser.defineEntityReplacementText( "ntilde", "\u00f1" ); |
875 |
0 |
parser.defineEntityReplacementText( "ograve", "\u00f2" ); |
876 |
0 |
parser.defineEntityReplacementText( "oacute", "\u00f3" ); |
877 |
0 |
parser.defineEntityReplacementText( "ocirc", "\u00f4" ); |
878 |
0 |
parser.defineEntityReplacementText( "otilde", "\u00f5" ); |
879 |
0 |
parser.defineEntityReplacementText( "ouml", "\u00f6" ); |
880 |
0 |
parser.defineEntityReplacementText( "divide", "\u00f7" ); |
881 |
0 |
parser.defineEntityReplacementText( "oslash", "\u00f8" ); |
882 |
0 |
parser.defineEntityReplacementText( "ugrave", "\u00f9" ); |
883 |
0 |
parser.defineEntityReplacementText( "uacute", "\u00fa" ); |
884 |
0 |
parser.defineEntityReplacementText( "ucirc", "\u00fb" ); |
885 |
0 |
parser.defineEntityReplacementText( "uuml", "\u00fc" ); |
886 |
0 |
parser.defineEntityReplacementText( "yacute", "\u00fd" ); |
887 |
0 |
parser.defineEntityReplacementText( "thorn", "\u00fe" ); |
888 |
0 |
parser.defineEntityReplacementText( "yuml", "\u00ff" ); |
889 |
|
|
890 |
|
|
891 |
|
|
892 |
|
|
893 |
|
|
894 |
0 |
parser.defineEntityReplacementText( "OElig", "\u0152" ); |
895 |
0 |
parser.defineEntityReplacementText( "oelig", "\u0153" ); |
896 |
0 |
parser.defineEntityReplacementText( "Scaron", "\u0160" ); |
897 |
0 |
parser.defineEntityReplacementText( "scaron", "\u0161" ); |
898 |
0 |
parser.defineEntityReplacementText( "Yuml", "\u0178" ); |
899 |
0 |
parser.defineEntityReplacementText( "circ", "\u02c6" ); |
900 |
0 |
parser.defineEntityReplacementText( "tilde", "\u02dc" ); |
901 |
0 |
parser.defineEntityReplacementText( "ensp", "\u2002" ); |
902 |
0 |
parser.defineEntityReplacementText( "emsp", "\u2003" ); |
903 |
0 |
parser.defineEntityReplacementText( "thinsp", "\u2009" ); |
904 |
0 |
parser.defineEntityReplacementText( "zwnj", "\u200c" ); |
905 |
0 |
parser.defineEntityReplacementText( "zwj", "\u200d" ); |
906 |
0 |
parser.defineEntityReplacementText( "lrm", "\u200e" ); |
907 |
0 |
parser.defineEntityReplacementText( "rlm", "\u200f" ); |
908 |
0 |
parser.defineEntityReplacementText( "ndash", "\u2013" ); |
909 |
0 |
parser.defineEntityReplacementText( "mdash", "\u2014" ); |
910 |
0 |
parser.defineEntityReplacementText( "lsquo", "\u2018" ); |
911 |
0 |
parser.defineEntityReplacementText( "rsquo", "\u2019" ); |
912 |
0 |
parser.defineEntityReplacementText( "sbquo", "\u201a" ); |
913 |
0 |
parser.defineEntityReplacementText( "ldquo", "\u201c" ); |
914 |
0 |
parser.defineEntityReplacementText( "rdquo", "\u201d" ); |
915 |
0 |
parser.defineEntityReplacementText( "bdquo", "\u201e" ); |
916 |
0 |
parser.defineEntityReplacementText( "dagger", "\u2020" ); |
917 |
0 |
parser.defineEntityReplacementText( "Dagger", "\u2021" ); |
918 |
0 |
parser.defineEntityReplacementText( "permil", "\u2030" ); |
919 |
0 |
parser.defineEntityReplacementText( "lsaquo", "\u2039" ); |
920 |
0 |
parser.defineEntityReplacementText( "rsaquo", "\u203a" ); |
921 |
0 |
parser.defineEntityReplacementText( "euro", "\u20ac" ); |
922 |
|
|
923 |
|
|
924 |
|
|
925 |
|
|
926 |
|
|
927 |
0 |
parser.defineEntityReplacementText( "fnof", "\u0192" ); |
928 |
0 |
parser.defineEntityReplacementText( "Alpha", "\u0391" ); |
929 |
0 |
parser.defineEntityReplacementText( "Beta", "\u0392" ); |
930 |
0 |
parser.defineEntityReplacementText( "Gamma", "\u0393" ); |
931 |
0 |
parser.defineEntityReplacementText( "Delta", "\u0394" ); |
932 |
0 |
parser.defineEntityReplacementText( "Epsilon", "\u0395" ); |
933 |
0 |
parser.defineEntityReplacementText( "Zeta", "\u0396" ); |
934 |
0 |
parser.defineEntityReplacementText( "Eta", "\u0397" ); |
935 |
0 |
parser.defineEntityReplacementText( "Theta", "\u0398" ); |
936 |
0 |
parser.defineEntityReplacementText( "Iota", "\u0399" ); |
937 |
0 |
parser.defineEntityReplacementText( "Kappa", "\u039a" ); |
938 |
0 |
parser.defineEntityReplacementText( "Lambda", "\u039b" ); |
939 |
0 |
parser.defineEntityReplacementText( "Mu", "\u039c" ); |
940 |
0 |
parser.defineEntityReplacementText( "Nu", "\u039d" ); |
941 |
0 |
parser.defineEntityReplacementText( "Xi", "\u039e" ); |
942 |
0 |
parser.defineEntityReplacementText( "Omicron", "\u039f" ); |
943 |
0 |
parser.defineEntityReplacementText( "Pi", "\u03a0" ); |
944 |
0 |
parser.defineEntityReplacementText( "Rho", "\u03a1" ); |
945 |
0 |
parser.defineEntityReplacementText( "Sigma", "\u03a3" ); |
946 |
0 |
parser.defineEntityReplacementText( "Tau", "\u03a4" ); |
947 |
0 |
parser.defineEntityReplacementText( "Upsilon", "\u03a5" ); |
948 |
0 |
parser.defineEntityReplacementText( "Phi", "\u03a6" ); |
949 |
0 |
parser.defineEntityReplacementText( "Chi", "\u03a7" ); |
950 |
0 |
parser.defineEntityReplacementText( "Psi", "\u03a8" ); |
951 |
0 |
parser.defineEntityReplacementText( "Omega", "\u03a9" ); |
952 |
0 |
parser.defineEntityReplacementText( "alpha", "\u03b1" ); |
953 |
0 |
parser.defineEntityReplacementText( "beta", "\u03b2" ); |
954 |
0 |
parser.defineEntityReplacementText( "gamma", "\u03b3" ); |
955 |
0 |
parser.defineEntityReplacementText( "delta", "\u03b4" ); |
956 |
0 |
parser.defineEntityReplacementText( "epsilon", "\u03b5" ); |
957 |
0 |
parser.defineEntityReplacementText( "zeta", "\u03b6" ); |
958 |
0 |
parser.defineEntityReplacementText( "eta", "\u03b7" ); |
959 |
0 |
parser.defineEntityReplacementText( "theta", "\u03b8" ); |
960 |
0 |
parser.defineEntityReplacementText( "iota", "\u03b9" ); |
961 |
0 |
parser.defineEntityReplacementText( "kappa", "\u03ba" ); |
962 |
0 |
parser.defineEntityReplacementText( "lambda", "\u03bb" ); |
963 |
0 |
parser.defineEntityReplacementText( "mu", "\u03bc" ); |
964 |
0 |
parser.defineEntityReplacementText( "nu", "\u03bd" ); |
965 |
0 |
parser.defineEntityReplacementText( "xi", "\u03be" ); |
966 |
0 |
parser.defineEntityReplacementText( "omicron", "\u03bf" ); |
967 |
0 |
parser.defineEntityReplacementText( "pi", "\u03c0" ); |
968 |
0 |
parser.defineEntityReplacementText( "rho", "\u03c1" ); |
969 |
0 |
parser.defineEntityReplacementText( "sigmaf", "\u03c2" ); |
970 |
0 |
parser.defineEntityReplacementText( "sigma", "\u03c3" ); |
971 |
0 |
parser.defineEntityReplacementText( "tau", "\u03c4" ); |
972 |
0 |
parser.defineEntityReplacementText( "upsilon", "\u03c5" ); |
973 |
0 |
parser.defineEntityReplacementText( "phi", "\u03c6" ); |
974 |
0 |
parser.defineEntityReplacementText( "chi", "\u03c7" ); |
975 |
0 |
parser.defineEntityReplacementText( "psi", "\u03c8" ); |
976 |
0 |
parser.defineEntityReplacementText( "omega", "\u03c9" ); |
977 |
0 |
parser.defineEntityReplacementText( "thetasym", "\u03d1" ); |
978 |
0 |
parser.defineEntityReplacementText( "upsih", "\u03d2" ); |
979 |
0 |
parser.defineEntityReplacementText( "piv", "\u03d6" ); |
980 |
0 |
parser.defineEntityReplacementText( "bull", "\u2022" ); |
981 |
0 |
parser.defineEntityReplacementText( "hellip", "\u2026" ); |
982 |
0 |
parser.defineEntityReplacementText( "prime", "\u2032" ); |
983 |
0 |
parser.defineEntityReplacementText( "Prime", "\u2033" ); |
984 |
0 |
parser.defineEntityReplacementText( "oline", "\u203e" ); |
985 |
0 |
parser.defineEntityReplacementText( "frasl", "\u2044" ); |
986 |
0 |
parser.defineEntityReplacementText( "weierp", "\u2118" ); |
987 |
0 |
parser.defineEntityReplacementText( "image", "\u2111" ); |
988 |
0 |
parser.defineEntityReplacementText( "real", "\u211c" ); |
989 |
0 |
parser.defineEntityReplacementText( "trade", "\u2122" ); |
990 |
0 |
parser.defineEntityReplacementText( "alefsym", "\u2135" ); |
991 |
0 |
parser.defineEntityReplacementText( "larr", "\u2190" ); |
992 |
0 |
parser.defineEntityReplacementText( "uarr", "\u2191" ); |
993 |
0 |
parser.defineEntityReplacementText( "rarr", "\u2192" ); |
994 |
0 |
parser.defineEntityReplacementText( "darr", "\u2193" ); |
995 |
0 |
parser.defineEntityReplacementText( "harr", "\u2194" ); |
996 |
0 |
parser.defineEntityReplacementText( "crarr", "\u21b5" ); |
997 |
0 |
parser.defineEntityReplacementText( "lArr", "\u21d0" ); |
998 |
0 |
parser.defineEntityReplacementText( "uArr", "\u21d1" ); |
999 |
0 |
parser.defineEntityReplacementText( "rArr", "\u21d2" ); |
1000 |
0 |
parser.defineEntityReplacementText( "dArr", "\u21d3" ); |
1001 |
0 |
parser.defineEntityReplacementText( "hArr", "\u21d4" ); |
1002 |
0 |
parser.defineEntityReplacementText( "forall", "\u2200" ); |
1003 |
0 |
parser.defineEntityReplacementText( "part", "\u2202" ); |
1004 |
0 |
parser.defineEntityReplacementText( "exist", "\u2203" ); |
1005 |
0 |
parser.defineEntityReplacementText( "empty", "\u2205" ); |
1006 |
0 |
parser.defineEntityReplacementText( "nabla", "\u2207" ); |
1007 |
0 |
parser.defineEntityReplacementText( "isin", "\u2208" ); |
1008 |
0 |
parser.defineEntityReplacementText( "notin", "\u2209" ); |
1009 |
0 |
parser.defineEntityReplacementText( "ni", "\u220b" ); |
1010 |
0 |
parser.defineEntityReplacementText( "prod", "\u220f" ); |
1011 |
0 |
parser.defineEntityReplacementText( "sum", "\u2211" ); |
1012 |
0 |
parser.defineEntityReplacementText( "minus", "\u2212" ); |
1013 |
0 |
parser.defineEntityReplacementText( "lowast", "\u2217" ); |
1014 |
0 |
parser.defineEntityReplacementText( "radic", "\u221a" ); |
1015 |
0 |
parser.defineEntityReplacementText( "prop", "\u221d" ); |
1016 |
0 |
parser.defineEntityReplacementText( "infin", "\u221e" ); |
1017 |
0 |
parser.defineEntityReplacementText( "ang", "\u2220" ); |
1018 |
0 |
parser.defineEntityReplacementText( "and", "\u2227" ); |
1019 |
0 |
parser.defineEntityReplacementText( "or", "\u2228" ); |
1020 |
0 |
parser.defineEntityReplacementText( "cap", "\u2229" ); |
1021 |
0 |
parser.defineEntityReplacementText( "cup", "\u222a" ); |
1022 |
0 |
parser.defineEntityReplacementText( "int", "\u222b" ); |
1023 |
0 |
parser.defineEntityReplacementText( "there4", "\u2234" ); |
1024 |
0 |
parser.defineEntityReplacementText( "sim", "\u223c" ); |
1025 |
0 |
parser.defineEntityReplacementText( "cong", "\u2245" ); |
1026 |
0 |
parser.defineEntityReplacementText( "asymp", "\u2248" ); |
1027 |
0 |
parser.defineEntityReplacementText( "ne", "\u2260" ); |
1028 |
0 |
parser.defineEntityReplacementText( "equiv", "\u2261" ); |
1029 |
0 |
parser.defineEntityReplacementText( "le", "\u2264" ); |
1030 |
0 |
parser.defineEntityReplacementText( "ge", "\u2265" ); |
1031 |
0 |
parser.defineEntityReplacementText( "sub", "\u2282" ); |
1032 |
0 |
parser.defineEntityReplacementText( "sup", "\u2283" ); |
1033 |
0 |
parser.defineEntityReplacementText( "nsub", "\u2284" ); |
1034 |
0 |
parser.defineEntityReplacementText( "sube", "\u2286" ); |
1035 |
0 |
parser.defineEntityReplacementText( "supe", "\u2287" ); |
1036 |
0 |
parser.defineEntityReplacementText( "oplus", "\u2295" ); |
1037 |
0 |
parser.defineEntityReplacementText( "otimes", "\u2297" ); |
1038 |
0 |
parser.defineEntityReplacementText( "perp", "\u22a5" ); |
1039 |
0 |
parser.defineEntityReplacementText( "sdot", "\u22c5" ); |
1040 |
0 |
parser.defineEntityReplacementText( "lceil", "\u2308" ); |
1041 |
0 |
parser.defineEntityReplacementText( "rceil", "\u2309" ); |
1042 |
0 |
parser.defineEntityReplacementText( "lfloor", "\u230a" ); |
1043 |
0 |
parser.defineEntityReplacementText( "rfloor", "\u230b" ); |
1044 |
0 |
parser.defineEntityReplacementText( "lang", "\u2329" ); |
1045 |
0 |
parser.defineEntityReplacementText( "rang", "\u232a" ); |
1046 |
0 |
parser.defineEntityReplacementText( "loz", "\u25ca" ); |
1047 |
0 |
parser.defineEntityReplacementText( "spades", "\u2660" ); |
1048 |
0 |
parser.defineEntityReplacementText( "clubs", "\u2663" ); |
1049 |
0 |
parser.defineEntityReplacementText( "hearts", "\u2665" ); |
1050 |
0 |
parser.defineEntityReplacementText( "diams", "\u2666" ); |
1051 |
|
|
1052 |
|
} |
1053 |
|
|
1054 |
0 |
parser.next(); |
1055 |
0 |
String encoding = parser.getInputEncoding(); |
1056 |
|
|
1057 |
0 |
return parsePluginMetadata( "pluginMetadata", parser, strict, encoding ); |
1058 |
|
} |
1059 |
|
|
1060 |
|
|
1061 |
|
|
1062 |
|
|
1063 |
|
|
1064 |
|
|
1065 |
|
public PluginMetadata read(Reader reader) |
1066 |
|
throws IOException, XmlPullParserException |
1067 |
|
{ |
1068 |
0 |
return read( reader, true ); |
1069 |
|
} |
1070 |
|
|
1071 |
|
|
1072 |
|
|
1073 |
|
|
1074 |
|
|
1075 |
|
|
1076 |
|
public void setAddDefaultEntities(boolean addDefaultEntities) |
1077 |
|
{ |
1078 |
0 |
this.addDefaultEntities = addDefaultEntities; |
1079 |
0 |
} |
1080 |
|
|
1081 |
|
} |