曹妃甸核酸检测平台.apk(点击下载) / PacketParserUtils.java


package asmack.org.jivesoftware.smack.util;

import asmack.org.jivesoftware.smack.Connection;
import asmack.org.jivesoftware.smack.packet.Authentication;
import asmack.org.jivesoftware.smack.packet.Bind;
import asmack.org.jivesoftware.smack.packet.DefaultPacketExtension;
import asmack.org.jivesoftware.smack.packet.IQ;
import asmack.org.jivesoftware.smack.packet.Message;
import asmack.org.jivesoftware.smack.packet.Packet;
import asmack.org.jivesoftware.smack.packet.PacketExtension;
import asmack.org.jivesoftware.smack.packet.Ping;
import asmack.org.jivesoftware.smack.packet.Presence;
import asmack.org.jivesoftware.smack.packet.PrivacyItem;
import asmack.org.jivesoftware.smack.packet.Registration;
import asmack.org.jivesoftware.smack.packet.RosterPacket;
import asmack.org.jivesoftware.smack.packet.StreamError;
import asmack.org.jivesoftware.smack.packet.XMPPError;
import asmack.org.jivesoftware.smack.provider.IQProvider;
import asmack.org.jivesoftware.smack.provider.PacketExtensionProvider;
import asmack.org.jivesoftware.smack.provider.ProviderManager;
import asmack.org.jivesoftware.smack.sasl.SASLMechanism;
import asmack.org.jivesoftware.smackx.FormField;
import com.health.im.chat.domain.GroupChatMember;
import com.igexin.getuiext.data.Consts;
import com.toogoo.appbase.bean.PrescriptionPatientInfo;
import com.umeng.analytics.pro.c;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

public class PacketParserUtils {
    private static final String PROPERTIES_NAMESPACE = "http://www.jivesoftware.com/xmlns/xmpp/properties";

    private static Object decode(Class cls, String str) throws Exception {
        if (cls.getName().equals("java.lang.String")) {
            return str;
        }
        if (cls.getName().equals(FormField.TYPE_BOOLEAN)) {
            return Boolean.valueOf(str);
        }
        if (cls.getName().equals("int")) {
            return Integer.valueOf(str);
        }
        if (cls.getName().equals("long")) {
            return Long.valueOf(str);
        }
        if (cls.getName().equals("float")) {
            return Float.valueOf(str);
        }
        if (cls.getName().equals("double")) {
            return Double.valueOf(str);
        }
        if (cls.getName().equals("java.lang.Class")) {
            return Class.forName(str);
        }
        return null;
    }

    private static String getLanguageAttribute(XmlPullParser xmlPullParser) {
        for (int i = 0; i < xmlPullParser.getAttributeCount(); i++) {
            String attributeName = xmlPullParser.getAttributeName(i);
            if ("xml:lang".equals(attributeName) || ("lang".equals(attributeName) && "xml".equals(xmlPullParser.getAttributePrefix(i)))) {
                return xmlPullParser.getAttributeValue(i);
            }
        }
        return null;
    }

    private static Authentication parseAuthentication(XmlPullParser xmlPullParser) throws Exception {
        Authentication authentication = new Authentication();
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                if (xmlPullParser.getName().equals("username")) {
                    authentication.setUsername(xmlPullParser.nextText());
                } else if (xmlPullParser.getName().equals("password")) {
                    authentication.setPassword(xmlPullParser.nextText());
                } else if (xmlPullParser.getName().equals("digest")) {
                    authentication.setDigest(xmlPullParser.nextText());
                } else if (xmlPullParser.getName().equals("resource")) {
                    authentication.setResource(xmlPullParser.nextText());
                }
            } else if (next == 3 && xmlPullParser.getName().equals("query")) {
                z = true;
            }
        }
        return authentication;
    }

    public static Collection<String> parseCompressionMethods(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException {
        ArrayList arrayList = new ArrayList();
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                if (xmlPullParser.getName().equals("method")) {
                    arrayList.add(xmlPullParser.nextText());
                }
            } else if (next == 3 && xmlPullParser.getName().equals("compression")) {
                z = true;
            }
        }
        return arrayList;
    }

    private static String parseContent(XmlPullParser xmlPullParser) throws XmlPullParserException, IOException {
        int depth = xmlPullParser.getDepth();
        String str = "";
        while (true) {
            if (xmlPullParser.next() == 3 && xmlPullParser.getDepth() == depth) {
                return str;
            }
            str = String.valueOf(str) + xmlPullParser.getText();
        }
    }

    public static XMPPError parseError(XmlPullParser xmlPullParser) throws Exception {
        ArrayList arrayList = new ArrayList();
        boolean z = false;
        String str = null;
        String str2 = GroupChatMember.GROUP_ROLE_ADD;
        for (int i = 0; i < xmlPullParser.getAttributeCount(); i++) {
            if (xmlPullParser.getAttributeName(i).equals("code")) {
                str2 = xmlPullParser.getAttributeValue("", "code");
            }
            if (xmlPullParser.getAttributeName(i).equals("type")) {
                str = xmlPullParser.getAttributeValue("", "type");
            }
        }
        String str3 = null;
        String str4 = null;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                if (xmlPullParser.getName().equals(Consts.PROMOTION_TYPE_TEXT)) {
                    str3 = xmlPullParser.nextText();
                } else {
                    String name = xmlPullParser.getName();
                    String namespace = xmlPullParser.getNamespace();
                    if ("urn:ietf:params:xml:ns:xmpp-stanzas".equals(namespace)) {
                        str4 = name;
                    } else {
                        arrayList.add(parsePacketExtension(name, namespace, xmlPullParser));
                    }
                }
            } else if (next == 3 && xmlPullParser.getName().equals(c.O)) {
                z = true;
            }
        }
        XMPPError.Type type = XMPPError.Type.CANCEL;
        if (str != null) {
            try {
                type = XMPPError.Type.valueOf(str.toUpperCase());
            } catch (IllegalArgumentException e2) {
                e2.printStackTrace();
            }
        }
        return new XMPPError(Integer.parseInt(str2), type, str4, str3, arrayList);
    }

    public static IQ parseIQ(XmlPullParser xmlPullParser, Connection connection) throws Exception {
        String attributeValue = xmlPullParser.getAttributeValue("", "id");
        String attributeValue2 = xmlPullParser.getAttributeValue("", "to");
        String attributeValue3 = xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM);
        IQ.Type fromString = IQ.Type.fromString(xmlPullParser.getAttributeValue("", "type"));
        boolean z = false;
        IQ iq = null;
        XMPPError xMPPError = null;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                String name = xmlPullParser.getName();
                String namespace = xmlPullParser.getNamespace();
                if (name.equals(c.O)) {
                    xMPPError = parseError(xmlPullParser);
                } else if (name.equals("query") && namespace.equals("jabber:iq:auth")) {
                    iq = parseAuthentication(xmlPullParser);
                } else if (name.equals("query") && namespace.equals("jabber:iq:roster")) {
                    iq = parseRoster(xmlPullParser);
                } else if (name.equals("query") && namespace.equals("jabber:iq:register")) {
                    iq = parseRegistration(xmlPullParser);
                } else if (name.equals("bind") && namespace.equals("urn:ietf:params:xml:ns:xmpp-bind")) {
                    iq = parseResourceBinding(xmlPullParser);
                } else if (name.equals("ping")) {
                    iq = new Ping();
                    AnonymousClass1 r8 = new IQ() {
                        /* class asmack.org.jivesoftware.smack.util.PacketParserUtils.AnonymousClass1 */

                        @Override // asmack.org.jivesoftware.smack.packet.IQ
                        public String getChildElementXML() {
                            return null;
                        }
                    };
                    r8.setPacketID(attributeValue);
                    r8.setTo(attributeValue3);
                    r8.setFrom(attributeValue2);
                    r8.setType(IQ.Type.RESULT);
                    connection.sendPacket(r8);
                } else {
                    Object iQProvider = ProviderManager.getInstance().getIQProvider(name, namespace);
                    if (iQProvider != null) {
                        if (iQProvider instanceof IQProvider) {
                            iq = ((IQProvider) iQProvider).parseIQ(xmlPullParser);
                        } else if (iQProvider instanceof Class) {
                            iq = (IQ) parseWithIntrospection(name, (Class) iQProvider, xmlPullParser);
                        }
                    }
                }
            } else if (next == 3 && xmlPullParser.getName().equals("iq")) {
                z = true;
            }
        }
        if (iq == null) {
            if (IQ.Type.GET == fromString || IQ.Type.SET == fromString) {
                AnonymousClass2 r12 = new IQ() {
                    /* class asmack.org.jivesoftware.smack.util.PacketParserUtils.AnonymousClass2 */

                    @Override // asmack.org.jivesoftware.smack.packet.IQ
                    public String getChildElementXML() {
                        return null;
                    }
                };
                r12.setPacketID(attributeValue);
                r12.setTo(attributeValue3);
                r12.setFrom(attributeValue2);
                r12.setType(IQ.Type.ERROR);
                r12.setError(new XMPPError(XMPPError.Condition.feature_not_implemented));
                connection.sendPacket(r12);
                return null;
            }
            iq = new IQ() {
                /* class asmack.org.jivesoftware.smack.util.PacketParserUtils.AnonymousClass3 */

                @Override // asmack.org.jivesoftware.smack.packet.IQ
                public String getChildElementXML() {
                    return null;
                }
            };
        }
        iq.setPacketID(attributeValue);
        iq.setTo(attributeValue2);
        iq.setFrom(attributeValue3);
        iq.setType(fromString);
        iq.setError(xMPPError);
        return iq;
    }

    public static Collection<String> parseMechanisms(XmlPullParser xmlPullParser) throws Exception {
        ArrayList arrayList = new ArrayList();
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                if (xmlPullParser.getName().equals("mechanism")) {
                    arrayList.add(xmlPullParser.nextText());
                }
            } else if (next == 3 && xmlPullParser.getName().equals("mechanisms")) {
                z = true;
            }
        }
        return arrayList;
    }

    public static Packet parseMessage(XmlPullParser xmlPullParser) throws Exception {
        HashMap hashMap;
        Message message = new Message();
        String attributeValue = xmlPullParser.getAttributeValue("", "id");
        if (attributeValue == null) {
            attributeValue = Packet.ID_NOT_AVAILABLE;
        }
        message.setPacketID(attributeValue);
        message.setTo(xmlPullParser.getAttributeValue("", "to"));
        message.setFrom(xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM));
        message.setType(Message.Type.fromString(xmlPullParser.getAttributeValue("", "type")));
        message.attributes.parserAttribute(xmlPullParser);
        message.attributes.removeAttribute("id");
        message.attributes.removeAttribute("to");
        message.attributes.removeAttribute(PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM);
        message.attributes.removeAttribute("type");
        String languageAttribute = getLanguageAttribute(xmlPullParser);
        if (languageAttribute == null || "".equals(languageAttribute.trim())) {
            languageAttribute = Packet.getDefaultLanguage();
        } else {
            message.setLanguage(languageAttribute);
        }
        String str = null;
        Map<String, Object> map = null;
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                String name = xmlPullParser.getName();
                String namespace = xmlPullParser.getNamespace();
                if (name.equals("subject")) {
                    String languageAttribute2 = getLanguageAttribute(xmlPullParser);
                    if (languageAttribute2 == null) {
                        languageAttribute2 = languageAttribute;
                    }
                    String parseContent = parseContent(xmlPullParser);
                    if (message.getSubject(languageAttribute2) == null) {
                        message.addSubject(languageAttribute2, parseContent);
                    }
                } else if (name.equals("body")) {
                    String languageAttribute3 = getLanguageAttribute(xmlPullParser);
                    if (languageAttribute3 == null) {
                        languageAttribute3 = languageAttribute;
                    }
                    int attributeCount = xmlPullParser.getAttributeCount();
                    if (attributeCount > 0) {
                        hashMap = new HashMap();
                        for (int i = 0; i < attributeCount; i++) {
                            hashMap.put(xmlPullParser.getAttributeName(i), xmlPullParser.getAttributeValue(i));
                        }
                    } else {
                        hashMap = null;
                    }
                    String parseContent2 = parseContent(xmlPullParser);
                    if (message.getBody(languageAttribute3) == null) {
                        Message.Body addBody = message.addBody(languageAttribute3, parseContent2);
                        if (attributeCount > 0) {
                            addBody.attributes.addAttributes(hashMap);
                        }
                    }
                } else if (name.equals("thread")) {
                    if (str == null) {
                        str = xmlPullParser.nextText();
                    }
                } else if (name.equals(c.O)) {
                    message.setError(parseError(xmlPullParser));
                } else if (!name.equals("properties") || !namespace.equals(PROPERTIES_NAMESPACE)) {
                    message.addExtension(parsePacketExtension(name, namespace, xmlPullParser));
                } else {
                    map = parseProperties(xmlPullParser);
                }
            } else if (next == 3 && xmlPullParser.getName().equals("message")) {
                z = true;
            }
        }
        message.setThread(str);
        if (map != null) {
            for (String str2 : map.keySet()) {
                message.setProperty(str2, map.get(str2));
            }
        }
        return message;
    }

    public static PacketExtension parsePacketExtension(String str, String str2, XmlPullParser xmlPullParser) throws Exception {
        String text;
        Object extensionProvider = ProviderManager.getInstance().getExtensionProvider(str, str2);
        if (extensionProvider != null) {
            if (extensionProvider instanceof PacketExtensionProvider) {
                return ((PacketExtensionProvider) extensionProvider).parseExtension(xmlPullParser);
            }
            if (extensionProvider instanceof Class) {
                return (PacketExtension) parseWithIntrospection(str, (Class) extensionProvider, xmlPullParser);
            }
        }
        DefaultPacketExtension defaultPacketExtension = new DefaultPacketExtension(str, str2);
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                String name = xmlPullParser.getName();
                if (xmlPullParser.isEmptyElementTag()) {
                    text = "";
                } else if (xmlPullParser.next() == 4) {
                    text = xmlPullParser.getText();
                }
                defaultPacketExtension.setValue(name, text);
            } else if (next == 3 && xmlPullParser.getName().equals(str)) {
                z = true;
            }
        }
        return defaultPacketExtension;
    }

    public static Presence parsePresence(XmlPullParser xmlPullParser) throws Exception {
        Presence.Type type = Presence.Type.available;
        String attributeValue = xmlPullParser.getAttributeValue("", "type");
        if (attributeValue != null && !attributeValue.equals("")) {
            try {
                type = Presence.Type.valueOf(attributeValue);
            } catch (IllegalArgumentException unused) {
                PrintStream printStream = System.err;
                printStream.println("Found invalid presence type " + attributeValue);
            }
        }
        Presence presence = new Presence(type);
        presence.setTo(xmlPullParser.getAttributeValue("", "to"));
        presence.setFrom(xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM));
        String attributeValue2 = xmlPullParser.getAttributeValue("", "id");
        presence.setPacketID(attributeValue2 == null ? Packet.ID_NOT_AVAILABLE : attributeValue2);
        String languageAttribute = getLanguageAttribute(xmlPullParser);
        if (languageAttribute != null && !"".equals(languageAttribute.trim())) {
            presence.setLanguage(languageAttribute);
        }
        if (attributeValue2 == null) {
            attributeValue2 = Packet.ID_NOT_AVAILABLE;
        }
        presence.setPacketID(attributeValue2);
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                String name = xmlPullParser.getName();
                String namespace = xmlPullParser.getNamespace();
                if (name.equals("status")) {
                    presence.setStatus(xmlPullParser.nextText());
                } else if (name.equals("priority")) {
                    try {
                        presence.setPriority(Integer.parseInt(xmlPullParser.nextText()));
                    } catch (NumberFormatException unused2) {
                    } catch (IllegalArgumentException unused3) {
                        presence.setPriority(0);
                    }
                } else if (name.equals("show")) {
                    String nextText = xmlPullParser.nextText();
                    try {
                        presence.setMode(Presence.Mode.valueOf(nextText));
                    } catch (IllegalArgumentException unused4) {
                        PrintStream printStream2 = System.err;
                        printStream2.println("Found invalid presence mode " + nextText);
                    }
                } else if (name.equals(c.O)) {
                    presence.setError(parseError(xmlPullParser));
                } else if (!name.equals("properties") || !namespace.equals(PROPERTIES_NAMESPACE)) {
                    presence.addExtension(parsePacketExtension(name, namespace, xmlPullParser));
                } else {
                    Map<String, Object> parseProperties = parseProperties(xmlPullParser);
                    for (String str : parseProperties.keySet()) {
                        presence.setProperty(str, parseProperties.get(str));
                    }
                }
            } else if (next == 3 && xmlPullParser.getName().equals("presence")) {
                z = true;
            }
        }
        return presence;
    }

    /* JADX WARN: Multi-variable type inference failed */
    /* JADX WARN: Type inference failed for: r1v24, types: [java.lang.Boolean] */
    /* JADX WARN: Type inference failed for: r1v25, types: [java.lang.Double] */
    /* JADX WARN: Type inference failed for: r1v26, types: [java.lang.Float] */
    /* JADX WARN: Type inference failed for: r1v27, types: [java.lang.Long] */
    /* JADX WARN: Type inference failed for: r1v29, types: [java.lang.Integer] */
    /* JADX WARNING: Unknown variable types count: 5 */
    public static Map<String, Object> parseProperties(XmlPullParser xmlPullParser) throws Exception {
        String str;
        HashMap hashMap = new HashMap();
        while (true) {
            int next = xmlPullParser.next();
            if (next == 2 && xmlPullParser.getName().equals("property")) {
                boolean z = false;
                String str2 = null;
                String str3 = null;
                String str4 = null;
                String str5 = null;
                while (!z) {
                    int next2 = xmlPullParser.next();
                    if (next2 == 2) {
                        String name = xmlPullParser.getName();
                        if (name.equals("name")) {
                            str4 = xmlPullParser.nextText();
                        } else if (name.equals("value")) {
                            str2 = xmlPullParser.getAttributeValue("", "type");
                            str3 = xmlPullParser.nextText();
                        }
                    } else if (next2 == 3 && xmlPullParser.getName().equals("property")) {
                        if ("integer".equals(str2)) {
                            str = Integer.valueOf(str3);
                        } else if ("long".equals(str2)) {
                            str = Long.valueOf(str3);
                        } else if ("float".equals(str2)) {
                            str = Float.valueOf(str3);
                        } else if ("double".equals(str2)) {
                            str = Double.valueOf(str3);
                        } else if (FormField.TYPE_BOOLEAN.equals(str2)) {
                            str = Boolean.valueOf(str3);
                        } else {
                            if ("string".equals(str2)) {
                                str5 = str3;
                            } else if ("java-object".equals(str2)) {
                                try {
                                    str = new ObjectInputStream(new ByteArrayInputStream(StringUtils.decodeBase64(str3))).readObject();
                                } catch (Exception e2) {
                                    e2.printStackTrace();
                                }
                            }
                            if (!(str4 == null || str5 == null)) {
                                hashMap.put(str4, str5);
                            }
                            z = true;
                        }
                        str5 = str;
                        hashMap.put(str4, str5);
                        z = true;
                    }
                }
            } else if (next == 3 && xmlPullParser.getName().equals("properties")) {
                return hashMap;
            }
        }
    }

    private static Registration parseRegistration(XmlPullParser xmlPullParser) throws Exception {
        Registration registration = new Registration();
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                if (xmlPullParser.getNamespace().equals("jabber:iq:register")) {
                    String name = xmlPullParser.getName();
                    if (xmlPullParser.next() == 4) {
                        String text = xmlPullParser.getText();
                        if (name.equals("instructions")) {
                            registration.setInstructions(text);
                        } else {
                            registration.addAttribute(name, text);
                        }
                    } else if (name.equals("registered")) {
                        registration.setRegistered(true);
                    } else {
                        registration.addRequiredField(name);
                    }
                } else {
                    registration.addExtension(parsePacketExtension(xmlPullParser.getName(), xmlPullParser.getNamespace(), xmlPullParser));
                }
            } else if (next == 3 && xmlPullParser.getName().equals("query")) {
                z = true;
            }
        }
        return registration;
    }

    private static Bind parseResourceBinding(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException {
        Bind bind = new Bind();
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                if (xmlPullParser.getName().equals("resource")) {
                    bind.setResource(xmlPullParser.nextText());
                } else if (xmlPullParser.getName().equals("jid")) {
                    bind.setJid(xmlPullParser.nextText());
                }
            } else if (next == 3 && xmlPullParser.getName().equals("bind")) {
                z = true;
            }
        }
        return bind;
    }

    private static RosterPacket parseRoster(XmlPullParser xmlPullParser) throws Exception {
        String nextText;
        RosterPacket rosterPacket = new RosterPacket();
        RosterPacket.Item item = null;
        boolean z = false;
        while (!z) {
            if (xmlPullParser.getEventType() == 2 && xmlPullParser.getName().equals("query")) {
                rosterPacket.setVersion(xmlPullParser.getAttributeValue(null, "ver"));
                rosterPacket.mAttris.parserAttribute(xmlPullParser);
            }
            int next = xmlPullParser.next();
            if (next == 2) {
                if (xmlPullParser.getName().equals("item")) {
                    String attributeValue = xmlPullParser.getAttributeValue("", "jid");
                    RosterPacket.Item item2 = new RosterPacket.Item(attributeValue, xmlPullParser.getAttributeValue("", "name"));
                    item2.setItemStatus(RosterPacket.ItemStatus.fromString(xmlPullParser.getAttributeValue("", "ask")));
                    String attributeValue2 = xmlPullParser.getAttributeValue("", "subscription");
                    if (attributeValue2 == null) {
                        attributeValue2 = "none";
                    }
                    item2.setItemType(RosterPacket.ItemType.valueOf(attributeValue2));
                    item2.attris.parserAttribute(xmlPullParser);
                    if (StringUtils.parseServer(attributeValue).startsWith("broadcast")) {
                        RosterPacket.Item.Member member = null;
                        boolean z2 = false;
                        while (!z2) {
                            int next2 = xmlPullParser.next();
                            String name = xmlPullParser.getName();
                            if (next2 == 2) {
                                if ("member".equals(name)) {
                                    member = new RosterPacket.Item.Member();
                                    member.mAttris.parserAttribute(xmlPullParser);
                                }
                            } else if (next2 == 3) {
                                if ("member".equals(name)) {
                                    item2.addMember(member);
                                } else if ("item".equals(name)) {
                                    z2 = true;
                                }
                            }
                        }
                    }
                    rosterPacket.addRosterItem(item2);
                    item = item2;
                }
                if (xmlPullParser.getName().equals("group") && item != null && (nextText = xmlPullParser.nextText()) != null && nextText.trim().length() > 0) {
                    item.addGroupName(nextText);
                }
            } else if (next == 3 && xmlPullParser.getName().equals("query")) {
                z = true;
            }
        }
        return rosterPacket;
    }

    public static SASLMechanism.Failure parseSASLFailure(XmlPullParser xmlPullParser) throws Exception {
        String str = null;
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                if (!xmlPullParser.getName().equals("failure")) {
                    str = xmlPullParser.getName();
                }
            } else if (next == 3 && xmlPullParser.getName().equals("failure")) {
                z = true;
            }
        }
        return new SASLMechanism.Failure(str);
    }

    public static StreamError parseStreamError(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException {
        StreamError streamError = null;
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                streamError = new StreamError(xmlPullParser.getName());
            } else if (next == 3 && xmlPullParser.getName().equals(c.O)) {
                z = true;
            }
        }
        return streamError;
    }

    public static Object parseWithIntrospection(String str, Class cls, XmlPullParser xmlPullParser) throws Exception {
        Object newInstance = cls.newInstance();
        boolean z = false;
        while (!z) {
            int next = xmlPullParser.next();
            if (next == 2) {
                String name = xmlPullParser.getName();
                String nextText = xmlPullParser.nextText();
                Class<?> cls2 = newInstance.getClass();
                Class<?> returnType = cls2.getMethod(PrescriptionPatientInfo.OPERATE_PRESCRIPTIONPATIENTINFO_GET + Character.toUpperCase(name.charAt(0)) + name.substring(1), new Class[0]).getReturnType();
                Object decode = decode(returnType, nextText);
                Class<?> cls3 = newInstance.getClass();
                cls3.getMethod(PrescriptionPatientInfo.OPERATE_PRESCRIPTIONPATIENTINFO_SET + Character.toUpperCase(name.charAt(0)) + name.substring(1), returnType).invoke(newInstance, decode);
            } else if (next == 3 && xmlPullParser.getName().equals(str)) {
                z = true;
            }
        }
        return newInstance;
    }
}