CryptoMessage v1.3.2版本的 MD5 值为:66c611ce56a11450659dc23697562928
以下内容为反编译后的 MoodProvider.java 源代码,内容仅作参考
package org.jivesoftware.smackx.mood.provider;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.parsing.SmackParsingException;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smack.provider.ProviderManager;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smack.xml.XmlPullParserException;
import org.jivesoftware.smackx.mood.Mood;
import org.jivesoftware.smackx.mood.element.MoodConcretisation;
import org.jivesoftware.smackx.mood.element.MoodElement;
public class MoodProvider extends ExtensionElementProvider<MoodElement> {
private static final Logger LOGGER = Logger.getLogger(MoodProvider.class.getName());
public static final MoodProvider INSTANCE = new MoodProvider();
@Override
public MoodElement parse(XmlPullParser xmlPullParser, int i, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException {
Mood mood = null;
MoodConcretisation moodConcretisation = null;
String str = null;
while (true) {
XmlPullParser.Event next = xmlPullParser.next();
String name = xmlPullParser.getName();
String namespace = xmlPullParser.getNamespace();
int i2 = AnonymousClass1.$SwitchMap$org$jivesoftware$smack$xml$XmlPullParser$Event[next.ordinal()];
if (i2 == 1) {
if ("text".equals(name)) {
str = xmlPullParser.nextText();
} else if (!"http://jabber.org/protocol/mood".equals(namespace)) {
Logger logger = LOGGER;
Level level = Level.FINE;
logger.log(level, "Foreign namespace " + namespace + " detected. Try to find suitable MoodConcretisationProvider.");
MoodConcretisationProvider moodConcretisationProvider = (MoodConcretisationProvider) ProviderManager.getExtensionProvider(name, namespace);
if (moodConcretisationProvider != null) {
moodConcretisation = (MoodConcretisation) moodConcretisationProvider.parse(xmlPullParser);
} else {
logger.log(level, "No provider for <" + name + " xmlns:'" + namespace + "'/> found. Ignore.");
}
} else {
try {
mood = Mood.valueOf(name);
} catch (IllegalArgumentException unused) {
throw new XmlPullParserException("Unknown mood value: " + name + " encountered.");
}
}
} else if (i2 == 2 && MoodElement.ELEMENT.equals(name)) {
break;
}
}
return new MoodElement((mood == null && moodConcretisation == null) ? null : new MoodElement.MoodSubjectElement(mood, moodConcretisation), str);
}
public static class AnonymousClass1 {
static final int[] $SwitchMap$org$jivesoftware$smack$xml$XmlPullParser$Event;
static {
int[] iArr = new int[XmlPullParser.Event.values().length];
$SwitchMap$org$jivesoftware$smack$xml$XmlPullParser$Event = iArr;
try {
iArr[XmlPullParser.Event.START_ELEMENT.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$org$jivesoftware$smack$xml$XmlPullParser$Event[XmlPullParser.Event.END_ELEMENT.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
}
}
}