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) {
            }
        }
    }
}