blob: 779efc8a8bb6577cab156fee2d1a4c789cb86432 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
/*
* Copyright (c) 2010-2015, 2011 Isode Limited, London, England.
* All rights reserved.
*/
package com.isode.stroke.parser;
public class GenericPayloadParserFactory<T extends PayloadParser> implements PayloadParserFactory {
private final String tag_;
private final String xmlns_;
private final Class<? extends PayloadParser> payloadClass_;
public GenericPayloadParserFactory(final String tag, final Class<? extends PayloadParser> payloadClass) {
this(tag, "", payloadClass);
}
public GenericPayloadParserFactory(final String tag, final String xmlns, final Class<? extends PayloadParser> payloadClass) {
tag_ = tag;
xmlns_ = xmlns;
payloadClass_ = payloadClass;
}
public boolean canParse(final String element, final String ns, final AttributeMap attributes) {
return (tag_.isEmpty() ? true : tag_.equals(element)) && (xmlns_.isEmpty() ? true : xmlns_.equals(ns));
}
public final PayloadParser createPayloadParser() {
try {
return (PayloadParser) payloadClass_.newInstance();
} catch (InstantiationException ex) {
/* Fatal */
throw new RuntimeException(ex);
} catch (IllegalAccessException ex) {
/* Fatal */
throw new RuntimeException(ex);
}
}
}
|