Refactor ConfigXmlParser to allow subclasses

This commit is contained in:
Ian Clelland 2014-10-22 16:26:41 -04:00
parent c8f44ab460
commit 18e5e9dcc5

View File

@ -74,11 +74,12 @@ public class ConfigXmlParser {
parse(action.getResources().getXml(id));
}
public void parse(XmlResourceParser xml) {
int eventType = -1;
boolean insideFeature = false;
String service = "", pluginClass = "", paramType = "";
boolean onload = false;
boolean insideFeature = false;
public void parse(XmlResourceParser xml) {
int eventType = -1;
// Add implicitly allowed URLs
internalWhitelist.addWhiteListEntry("file:///*", false);
@ -87,6 +88,23 @@ public class ConfigXmlParser {
while (eventType != XmlResourceParser.END_DOCUMENT) {
if (eventType == XmlResourceParser.START_TAG) {
handleStartTag(xml);
}
else if (eventType == XmlResourceParser.END_TAG)
{
handleEndTag(xml);
}
try {
eventType = xml.next();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void handleStartTag(XmlResourceParser xml) {
String strNode = xml.getName();
if (strNode.equals("feature")) {
//Check for supported feature sets aka. plugins (Accelerometer, Geolocation, etc)
@ -135,8 +153,8 @@ public class ConfigXmlParser {
}
}
}
else if (eventType == XmlResourceParser.END_TAG)
{
public void handleEndTag(XmlResourceParser xml) {
String strNode = xml.getName();
if (strNode.equals("feature")) {
pluginEntries.add(new PluginEntry(service, pluginClass, onload));
@ -147,15 +165,6 @@ public class ConfigXmlParser {
onload = false;
}
}
try {
eventType = xml.next();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void setStartUrl(String src) {
Pattern schemeRegex = Pattern.compile("^[a-z-]+://");