1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-22 14:22:05 +01:00

Better parser init.

git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@1954 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Matt Tucker 2003-05-28 18:15:33 +00:00 committed by mtucker
parent 0ac19c6996
commit a608313589
2 changed files with 12 additions and 69 deletions

View file

@ -114,7 +114,9 @@ class PacketReader {
listenerThread.setDaemon(true); listenerThread.setDaemon(true);
try { try {
parser = getParserInstance(); XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
parser = factory.newPullParser();
parser.setInput(connection.reader); parser.setInput(connection.reader);
} }
catch (XmlPullParserException xppe) { catch (XmlPullParserException xppe) {
@ -742,8 +744,11 @@ class PacketReader {
int eventType = parser.next(); int eventType = parser.next();
if (eventType == XmlPullParser.START_TAG) { if (eventType == XmlPullParser.START_TAG) {
String name = parser.getName(); String name = parser.getName();
String value = parser.nextText(); parser.next();
extension.setValue(name, value); if (eventType == XmlPullParser.TEXT) {
String value = parser.getText();
extension.setValue(name, value);
}
} }
else if (eventType == XmlPullParser.END_TAG) { else if (eventType == XmlPullParser.END_TAG) {
if (parser.getName().equals(elementName)) { if (parser.getName().equals(elementName)) {
@ -797,7 +802,7 @@ class PacketReader {
} }
else if ("java-object".equals(type)) { else if ("java-object".equals(type)) {
try { try {
byte [] bytes = StringUtils.decodeBase64(valueText).getBytes("ISO-8859-1"); byte [] bytes = StringUtils.decodeBase64(valueText);
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes)); ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes));
value = in.readObject(); value = in.readObject();
} }
@ -818,38 +823,6 @@ class PacketReader {
return properties; return properties;
} }
/**
* Returns an XML parser instance.
*
* @return an XML parser instance.
*/
private static XmlPullParser getParserInstance() {
XmlPullParser parser = null;
try {
final String defaultProviderName = "org.xmlpull.mxp1.MXParserFactory";
XmlPullParserFactory factory = null;
try {
// Attempt to load a factory implementation using a system property
// and a classloader context.
factory = XmlPullParserFactory.newInstance(
System.getProperty(XmlPullParserFactory.PROPERTY_NAME),
Thread.currentThread().getContextClassLoader().getClass());
}
catch (Exception e) {
if (factory == null) {
// Loading failed. Therefore, use the hardcoded default.
factory = XmlPullParserFactory.newInstance(defaultProviderName, null);
}
}
factory.setNamespaceAware(true);
parser = factory.newPullParser();
}
catch (XmlPullParserException xppe) {
xppe.printStackTrace();
}
return parser;
}
/** /**
* A wrapper class to associate a packet collector with a listener. * A wrapper class to associate a packet collector with a listener.
*/ */

View file

@ -153,7 +153,9 @@ public class ProviderManager {
java.io.InputStream providerStream = null; java.io.InputStream providerStream = null;
try { try {
providerStream = url.openStream(); providerStream = url.openStream();
XmlPullParser parser = getParserInstance(); XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
parser.setInput(providerStream, "UTF-8"); parser.setInput(providerStream, "UTF-8");
int eventType = parser.getEventType(); int eventType = parser.getEventType();
do { do {
@ -299,36 +301,4 @@ public class ProviderManager {
buf.append("<").append(elementName).append("/><").append(namespace).append("/>"); buf.append("<").append(elementName).append("/><").append(namespace).append("/>");
return buf.toString(); return buf.toString();
} }
/**
* Returns an XML parser instance.
*
* @return an XML parser instance.
*/
private static XmlPullParser getParserInstance() {
XmlPullParser parser = null;
try {
final String defaultProviderName = "org.xmlpull.mxp1.MXParserFactory";
XmlPullParserFactory factory = null;
try {
// Attempt to load a factory implementation using a system property
// and a classloader context.
factory = XmlPullParserFactory.newInstance(
System.getProperty(XmlPullParserFactory.PROPERTY_NAME),
Thread.currentThread().getContextClassLoader().getClass());
}
catch (Exception e) {
if (factory == null) {
// Loading failed. Therefore, use the hardcoded default.
factory = XmlPullParserFactory.newInstance(defaultProviderName, null);
}
}
factory.setNamespaceAware(true);
parser = factory.newPullParser();
}
catch (XmlPullParserException xppe) {
xppe.printStackTrace();
}
return parser;
}
} }