翰林优商.apk(点击下载) / JavaBeanSerializer.java


package com.alibaba.fastjson.serializer;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.PropertyNamingStrategy;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.util.FieldInfo;
import com.alibaba.fastjson.util.TypeUtils;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Type;
import java.lang.reflect.WildcardType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class JavaBeanSerializer extends SerializeFilterable implements ObjectSerializer {
    protected SerializeBeanInfo beanInfo;
    protected final FieldSerializer[] getters;
    private volatile transient long[] hashArray;
    private volatile transient short[] hashArrayMapping;
    protected final FieldSerializer[] sortedGetters;

    public JavaBeanSerializer(Class<?> cls) {
        this(cls, (Map<String, String>) null);
    }

    public JavaBeanSerializer(Class<?> cls, String... strArr) {
        this(cls, createAliasMap(strArr));
    }

    static Map<String, String> createAliasMap(String... strArr) {
        HashMap hashMap = new HashMap();
        for (String str : strArr) {
            hashMap.put(str, str);
        }
        return hashMap;
    }

    public Class<?> getType() {
        return this.beanInfo.beanType;
    }

    public JavaBeanSerializer(Class<?> cls, Map<String, String> map) {
        this(TypeUtils.buildBeanInfo(cls, map, null));
    }

    public JavaBeanSerializer(SerializeBeanInfo serializeBeanInfo) {
        boolean z;
        this.beanInfo = serializeBeanInfo;
        this.sortedGetters = new FieldSerializer[serializeBeanInfo.sortedFields.length];
        int i = 0;
        while (true) {
            FieldSerializer[] fieldSerializerArr = this.sortedGetters;
            if (i >= fieldSerializerArr.length) {
                break;
            }
            fieldSerializerArr[i] = new FieldSerializer(serializeBeanInfo.beanType, serializeBeanInfo.sortedFields[i]);
            i++;
        }
        if (serializeBeanInfo.fields == serializeBeanInfo.sortedFields) {
            this.getters = this.sortedGetters;
        } else {
            this.getters = new FieldSerializer[serializeBeanInfo.fields.length];
            int i2 = 0;
            while (true) {
                if (i2 >= this.getters.length) {
                    z = false;
                    break;
                }
                FieldSerializer fieldSerializer = getFieldSerializer(serializeBeanInfo.fields[i2].name);
                if (fieldSerializer == null) {
                    z = true;
                    break;
                } else {
                    this.getters[i2] = fieldSerializer;
                    i2++;
                }
            }
            if (z) {
                FieldSerializer[] fieldSerializerArr2 = this.sortedGetters;
                System.arraycopy(fieldSerializerArr2, 0, this.getters, 0, fieldSerializerArr2.length);
            }
        }
        if (serializeBeanInfo.jsonType != null) {
            for (Class<? extends SerializeFilter> cls : serializeBeanInfo.jsonType.serialzeFilters()) {
                try {
                    addFilter((SerializeFilter) cls.getConstructor(new Class[0]).newInstance(new Object[0]));
                } catch (Exception unused) {
                }
            }
        }
    }

    public void writeDirectNonContext(JSONSerializer jSONSerializer, Object obj, Object obj2, Type type, int i) throws IOException {
        write(jSONSerializer, obj, obj2, type, i);
    }

    public void writeAsArray(JSONSerializer jSONSerializer, Object obj, Object obj2, Type type, int i) throws IOException {
        write(jSONSerializer, obj, obj2, type, i);
    }

    public void writeAsArrayNonContext(JSONSerializer jSONSerializer, Object obj, Object obj2, Type type, int i) throws IOException {
        write(jSONSerializer, obj, obj2, type, i);
    }

    @Override // com.alibaba.fastjson.serializer.ObjectSerializer
    public void write(JSONSerializer jSONSerializer, Object obj, Object obj2, Type type, int i) throws IOException {
        write(jSONSerializer, obj, obj2, type, i, false);
    }

    public void writeNoneASM(JSONSerializer jSONSerializer, Object obj, Object obj2, Type type, int i) throws IOException {
        write(jSONSerializer, obj, obj2, type, i, false);
    }

    /* JADX DEBUG: Failed to insert an additional move for type inference into block B:358:0x04ef */
    /* JADX DEBUG: Failed to insert an additional move for type inference into block B:405:0x05cf */
    /* JADX WARN: Multi-variable type inference failed */
    /* JADX WARN: Type inference failed for: r34v0, types: [com.alibaba.fastjson.serializer.JavaBeanSerializer] */
    /* JADX WARN: Type inference failed for: r3v1, types: [java.lang.Throwable] */
    /* JADX WARN: Type inference failed for: r3v2 */
    /* JADX WARN: Type inference failed for: r1v35, types: [java.lang.Object] */
    /* JADX WARN: Type inference failed for: r1v38 */
    /* JADX WARN: Type inference failed for: r1v49, types: [com.alibaba.fastjson.serializer.JavaBeanSerializer] */
    /* access modifiers changed from: protected */
    /* JADX WARNING: Code restructure failed: missing block: B:193:0x02bc, code lost:
        if ((r3 & com.alibaba.fastjson.serializer.SerializerFeature.WriteMapNullValue.mask) == 0) goto L_0x037b;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:25:0x005f, code lost:
        r0 = move-exception;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:26:0x0060, code lost:
        r1 = r0;
        r2 = r7;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:27:0x0064, code lost:
        r0 = move-exception;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:28:0x0065, code lost:
        r3 = r0;
        r2 = r7;
        r1 = r10;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:332:0x0494, code lost:
        if (r5 == false) goto L_0x0473;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:347:0x04ca, code lost:
        r0 = e;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:348:0x04cc, code lost:
        r0 = e;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:349:0x04cd, code lost:
        r26 = r1;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:350:0x04cf, code lost:
        r1 = r36;
        r3 = r0;
        r2 = r7;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:362:0x04fe, code lost:
        r0 = move-exception;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:363:0x04ff, code lost:
        r1 = r0;
        r2 = r33;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:364:0x0504, code lost:
        r0 = e;
        r1 = r1;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:379:0x0528, code lost:
        r0 = th;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:380:0x0529, code lost:
        r2 = r7;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:382:0x052d, code lost:
        r0 = move-exception;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:383:0x052e, code lost:
        r2 = r7;
        r1 = r10;
        r3 = r0;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:384:0x0531, code lost:
        r12 = null;
        r1 = r1;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:388:?, code lost:
        r4 = r4 + ", class " + r36.getClass().getName();
     */
    /* JADX WARNING: Code restructure failed: missing block: B:391:0x0559, code lost:
        r4 = r4 + ", fieldName : " + r37;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:395:0x0572, code lost:
        r5 = r12.fieldInfo;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:396:0x0576, code lost:
        if (r5.method != null) goto L_0x0578;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:397:0x0578, code lost:
        r4 = r4 + ", method : " + r5.method.getName();
     */
    /* JADX WARNING: Code restructure failed: missing block: B:398:0x0593, code lost:
        r4 = r4 + ", fieldName : " + r12.fieldInfo.name;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:401:0x05af, code lost:
        r4 = r4 + ", " + r3.getMessage();
     */
    /* JADX WARNING: Code restructure failed: missing block: B:404:0x05cb, code lost:
        r17 = r3.getCause();
     */
    /* JADX WARNING: Code restructure failed: missing block: B:406:0x05d2, code lost:
        r3 = r17;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:409:0x05da, code lost:
        r0 = th;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:75:0x0107, code lost:
        if (r13.fieldTransient != false) goto L_0x0114;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:76:0x010a, code lost:
        r0 = move-exception;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:77:0x010b, code lost:
        r3 = r0;
        r2 = r7;
        r1 = r10;
     */
    /* JADX WARNING: Failed to process nested try/catch */
    /* JADX WARNING: Removed duplicated region for block: B:106:0x0167  */
    /* JADX WARNING: Removed duplicated region for block: B:25:0x005f A[ExcHandler: all (r0v19 'th' java.lang.Throwable A[CUSTOM_DECLARE]), PHI: r7 
      PHI: (r7v7 com.alibaba.fastjson.serializer.SerialContext) = (r7v2 com.alibaba.fastjson.serializer.SerialContext), (r7v2 com.alibaba.fastjson.serializer.SerialContext), (r7v2 com.alibaba.fastjson.serializer.SerialContext), (r7v2 com.alibaba.fastjson.serializer.SerialContext), (r7v2 com.alibaba.fastjson.serializer.SerialContext), (r7v2 com.alibaba.fastjson.serializer.SerialContext), (r7v2 com.alibaba.fastjson.serializer.SerialContext), (r7v2 com.alibaba.fastjson.serializer.SerialContext), (r7v0 com.alibaba.fastjson.serializer.SerialContext), (r7v0 com.alibaba.fastjson.serializer.SerialContext) binds: [B:62:0x00da, B:63:?, B:65:0x00ec, B:66:?, B:100:0x0155, B:101:?, B:73:0x0105, B:74:?, B:23:0x005b, B:24:?] A[DONT_GENERATE, DONT_INLINE], Splitter:B:23:0x005b] */
    /* JADX WARNING: Removed duplicated region for block: B:285:0x03ec  */
    /* JADX WARNING: Removed duplicated region for block: B:315:0x0460  */
    /* JADX WARNING: Removed duplicated region for block: B:323:0x0475  */
    /* JADX WARNING: Removed duplicated region for block: B:335:0x049a  */
    /* JADX WARNING: Removed duplicated region for block: B:353:0x04e3  */
    /* JADX WARNING: Removed duplicated region for block: B:354:0x04e6  */
    /* JADX WARNING: Removed duplicated region for block: B:358:0x04ef A[SYNTHETIC, Splitter:B:358:0x04ef] */
    /* JADX WARNING: Removed duplicated region for block: B:362:0x04fe A[Catch:{ Exception -> 0x0504, all -> 0x04fe }, ExcHandler: all (r0v10 'th' java.lang.Throwable A[CUSTOM_DECLARE, Catch:{ Exception -> 0x0504, all -> 0x04fe }]), PHI: r33 
      PHI: (r33v4 com.alibaba.fastjson.serializer.SerialContext) = (r33v0 com.alibaba.fastjson.serializer.SerialContext), (r33v8 com.alibaba.fastjson.serializer.SerialContext), (r33v8 com.alibaba.fastjson.serializer.SerialContext), (r33v9 com.alibaba.fastjson.serializer.SerialContext), (r33v9 com.alibaba.fastjson.serializer.SerialContext) binds: [B:358:0x04ef, B:113:0x01a0, B:114:?, B:339:0x04a7, B:340:?] A[DONT_GENERATE, DONT_INLINE], Splitter:B:113:0x01a0] */
    /* JADX WARNING: Removed duplicated region for block: B:368:0x050d A[Catch:{ Exception -> 0x0504, all -> 0x04fe }] */
    /* JADX WARNING: Removed duplicated region for block: B:379:0x0528 A[ExcHandler: all (th java.lang.Throwable), PHI: r7 
      PHI: (r7v1 com.alibaba.fastjson.serializer.SerialContext) = (r7v0 com.alibaba.fastjson.serializer.SerialContext), (r7v0 com.alibaba.fastjson.serializer.SerialContext), (r7v2 com.alibaba.fastjson.serializer.SerialContext), (r7v2 com.alibaba.fastjson.serializer.SerialContext) binds: [B:29:0x006a, B:30:?, B:59:0x00d7, B:60:?] A[DONT_GENERATE, DONT_INLINE], Splitter:B:29:0x006a] */
    /* JADX WARNING: Removed duplicated region for block: B:387:0x0537 A[SYNTHETIC, Splitter:B:387:0x0537] */
    /* JADX WARNING: Removed duplicated region for block: B:391:0x0559  */
    /* JADX WARNING: Removed duplicated region for block: B:392:0x056c A[ADDED_TO_REGION] */
    /* JADX WARNING: Removed duplicated region for block: B:401:0x05af  */
    /* JADX WARNING: Removed duplicated region for block: B:404:0x05cb  */
    /* JADX WARNING: Removed duplicated region for block: B:406:0x05d2  */
    /* JADX WARNING: Removed duplicated region for block: B:52:0x00b3  */
    /* JADX WARNING: Removed duplicated region for block: B:53:0x00b6  */
    /* JADX WARNING: Removed duplicated region for block: B:56:0x00c3  */
    /* JADX WARNING: Removed duplicated region for block: B:57:0x00c5  */
    /* JADX WARNING: Removed duplicated region for block: B:62:0x00da A[SYNTHETIC, Splitter:B:62:0x00da] */
    /* JADX WARNING: Unknown variable types count: 1 */
    public void write(JSONSerializer jSONSerializer, Object obj, Object obj2, Type type, int i, boolean z) throws IOException {
        FieldSerializer[] fieldSerializerArr;
        SerialContext serialContext;
        FieldSerializer fieldSerializer;
        Exception exc;
        Object obj3;
        boolean z2;
        FieldSerializer fieldSerializer2;
        int i2;
        FieldSerializer fieldSerializer3;
        Object obj4;
        Exception e;
        SerialContext serialContext2;
        ?? r1;
        Object obj5;
        FieldSerializer fieldSerializer4;
        char c;
        boolean z3;
        Object obj6;
        boolean z4;
        Map map;
        boolean z5;
        char c2;
        Class<?> cls;
        Object obj7 = obj;
        Type type2 = type;
        SerializeWriter serializeWriter = jSONSerializer.out;
        if (obj7 == null) {
            serializeWriter.writeNull();
        } else if (!writeReference(jSONSerializer, obj7, i)) {
            if (serializeWriter.sortField) {
                fieldSerializerArr = this.sortedGetters;
            } else {
                fieldSerializerArr = this.getters;
            }
            FieldSerializer[] fieldSerializerArr2 = fieldSerializerArr;
            SerialContext serialContext3 = jSONSerializer.context;
            if (!this.beanInfo.beanType.isEnum()) {
                jSONSerializer.setContext(serialContext3, obj, obj2, this.beanInfo.features, i);
            }
            boolean isWriteAsArray = isWriteAsArray(jSONSerializer, i);
            char c3 = isWriteAsArray ? '[' : '{';
            char c4 = isWriteAsArray ? ']' : '}';
            Throwable th = null;
            if (!z) {
                try {
                    serializeWriter.append(c3);
                } catch (Exception e2) {
                    fieldSerializer = fieldSerializer4;
                    obj3 = obj;
                    exc = e2;
                    serialContext = serialContext3;
                    String str = "write javaBean error, fastjson version 1.2.73";
                    if (obj3 != null) {
                    }
                    if (obj2 != null) {
                    }
                    if (exc.getMessage() != null) {
                    }
                    if (exc instanceof InvocationTargetException) {
                    }
                    if (th != null) {
                    }
                    throw new JSONException(str, exc);
                } catch (Throwable th2) {
                }
            }
            try {
                if (fieldSerializerArr2.length > 0 && serializeWriter.isEnabled(SerializerFeature.PrettyFormat)) {
                    jSONSerializer.incrementIndent();
                    jSONSerializer.println();
                }
                if (!((this.beanInfo.features & SerializerFeature.WriteClassName.mask) == 0 && (SerializerFeature.WriteClassName.mask & i) == 0 && !jSONSerializer.isWriteClassName(type2, obj7))) {
                    Class<?> cls2 = obj.getClass();
                    if (cls2 != ((cls2 == type2 || !(type2 instanceof WildcardType)) ? type2 : TypeUtils.getClass(type))) {
                        writeClassName(jSONSerializer, this.beanInfo.typeKey, obj7);
                        z2 = true;
                        char c5 = !z2 ? ',' : 0;
                        boolean isEnabled = serializeWriter.isEnabled(SerializerFeature.WriteClassName);
                        boolean z6 = writeBefore(jSONSerializer, obj7, c5) != ',';
                        boolean isEnabled2 = serializeWriter.isEnabled(SerializerFeature.SkipTransientField);
                        boolean isEnabled3 = serializeWriter.isEnabled(SerializerFeature.IgnoreNonFieldGetter);
                        boolean z7 = z6;
                        fieldSerializer2 = null;
                        i2 = 0;
                        while (i2 < fieldSerializerArr2.length) {
                            fieldSerializer4 = fieldSerializerArr2[i2];
                            Field field = fieldSerializer4.fieldInfo.field;
                            FieldInfo fieldInfo = fieldSerializer4.fieldInfo;
                            String str2 = fieldInfo.name;
                            Class<?> cls3 = fieldInfo.fieldClass;
                            fieldSerializer3 = fieldSerializer2;
                            boolean isEnabled4 = SerializerFeature.isEnabled(serializeWriter.features, fieldInfo.serialzeFeatures, SerializerFeature.UseSingleQuotes);
                            boolean z8 = serializeWriter.quoteFieldNames && !isEnabled4;
                            if (isEnabled2 && fieldInfo != null) {
                            }
                            if (!isEnabled3 || field != null) {
                                if (applyName(jSONSerializer, obj7, str2) && applyLabel(jSONSerializer, fieldInfo.label)) {
                                    z3 = false;
                                } else if (isWriteAsArray) {
                                    z3 = true;
                                }
                                if (this.beanInfo.typeKey == null || !str2.equals(this.beanInfo.typeKey) || !jSONSerializer.isWriteClassName(type2, obj7)) {
                                    if (!z3) {
                                        try {
                                            obj6 = fieldSerializer4.getPropertyValueDirect(obj7);
                                        } catch (InvocationTargetException e3) {
                                            if (serializeWriter.isEnabled(SerializerFeature.IgnoreErrorGetter)) {
                                                fieldSerializer3 = fieldSerializer4;
                                            } else {
                                                fieldSerializer = fieldSerializer4;
                                                serialContext2 = serialContext3;
                                                throw e3;
                                            }
                                        } catch (Exception e4) {
                                            obj5 = obj;
                                            exc = e4;
                                        } catch (Throwable th3) {
                                        }
                                        if (apply(jSONSerializer, obj7, str2, obj6)) {
                                            String str3 = obj6;
                                            if (cls3 == String.class) {
                                                str3 = obj6;
                                                str3 = obj6;
                                                if ("trim".equals(fieldInfo.format) && obj6 != null) {
                                                    str3 = ((String) obj6).trim();
                                                }
                                            }
                                            String processKey = processKey(jSONSerializer, obj7, str2, str3);
                                            r1 = this;
                                            c = c4;
                                            serialContext2 = serialContext3;
                                            try {
                                                int processValue = r1.processValue(jSONSerializer, fieldSerializer4.fieldContext, obj, str2, str3, i);
                                                if (processValue == null) {
                                                    int i3 = fieldInfo.serialzeFeatures;
                                                    JSONField annotation = fieldInfo.getAnnotation();
                                                    if (this.beanInfo.jsonType != null) {
                                                        i3 |= SerializerFeature.of(this.beanInfo.jsonType.serialzeFeatures());
                                                    }
                                                    if (annotation != null && !"".equals(annotation.defaultValue())) {
                                                        processValue = annotation.defaultValue();
                                                    } else if (cls3 == Boolean.class) {
                                                        int i4 = SerializerFeature.WriteNullBooleanAsFalse.mask;
                                                        int i5 = SerializerFeature.WriteMapNullValue.mask | i4;
                                                        if (!(!isWriteAsArray && (i3 & i5) == 0 && (i5 & serializeWriter.features) == 0)) {
                                                            if ((i3 & i4) != 0) {
                                                                processValue = false;
                                                            } else if ((i4 & serializeWriter.features) != 0 && (i3 & SerializerFeature.WriteMapNullValue.mask) == 0) {
                                                                processValue = false;
                                                            }
                                                        }
                                                        fieldSerializer2 = fieldSerializer3;
                                                        i2++;
                                                        obj7 = obj;
                                                        type2 = type;
                                                        fieldSerializerArr2 = fieldSerializerArr2;
                                                        c4 = c;
                                                        serialContext3 = serialContext2;
                                                    } else if (cls3 == String.class) {
                                                        int i6 = SerializerFeature.WriteNullStringAsEmpty.mask;
                                                        int i7 = SerializerFeature.WriteMapNullValue.mask | i6;
                                                        if (!(!isWriteAsArray && (i3 & i7) == 0 && (i7 & serializeWriter.features) == 0)) {
                                                            if ((i3 & i6) != 0 || ((i6 & serializeWriter.features) != 0 && (i3 & SerializerFeature.WriteMapNullValue.mask) == 0)) {
                                                                processValue = "";
                                                            }
                                                        }
                                                        fieldSerializer2 = fieldSerializer3;
                                                        i2++;
                                                        obj7 = obj;
                                                        type2 = type;
                                                        fieldSerializerArr2 = fieldSerializerArr2;
                                                        c4 = c;
                                                        serialContext3 = serialContext2;
                                                    } else if (Number.class.isAssignableFrom(cls3)) {
                                                        int i8 = SerializerFeature.WriteNullNumberAsZero.mask;
                                                        int i9 = SerializerFeature.WriteMapNullValue.mask | i8;
                                                        if (!(!isWriteAsArray && (i3 & i9) == 0 && (i9 & serializeWriter.features) == 0)) {
                                                            if ((i3 & i8) != 0) {
                                                                processValue = 0;
                                                            } else if ((i8 & serializeWriter.features) != 0 && (i3 & SerializerFeature.WriteMapNullValue.mask) == 0) {
                                                                processValue = 0;
                                                            }
                                                        }
                                                        fieldSerializer2 = fieldSerializer3;
                                                        i2++;
                                                        obj7 = obj;
                                                        type2 = type;
                                                        fieldSerializerArr2 = fieldSerializerArr2;
                                                        c4 = c;
                                                        serialContext3 = serialContext2;
                                                    } else if (Collection.class.isAssignableFrom(cls3)) {
                                                        int i10 = SerializerFeature.WriteNullListAsEmpty.mask;
                                                        int i11 = SerializerFeature.WriteMapNullValue.mask | i10;
                                                        if (!(!isWriteAsArray && (i3 & i11) == 0 && (i11 & serializeWriter.features) == 0)) {
                                                            if ((i3 & i10) != 0) {
                                                                processValue = Collections.emptyList();
                                                            } else if ((i10 & serializeWriter.features) != 0 && (i3 & SerializerFeature.WriteMapNullValue.mask) == 0) {
                                                                processValue = Collections.emptyList();
                                                            }
                                                        }
                                                        fieldSerializer2 = fieldSerializer3;
                                                        i2++;
                                                        obj7 = obj;
                                                        type2 = type;
                                                        fieldSerializerArr2 = fieldSerializerArr2;
                                                        c4 = c;
                                                        serialContext3 = serialContext2;
                                                    } else if (!isWriteAsArray) {
                                                        if (!fieldSerializer4.writeNull) {
                                                            if (!serializeWriter.isEnabled(SerializerFeature.WriteMapNullValue.mask)) {
                                                            }
                                                        }
                                                    }
                                                }
                                                if (processValue == null || ((!serializeWriter.notWriteDefaultValue && (fieldInfo.serialzeFeatures & SerializerFeature.NotWriteDefaultValue.mask) == 0 && (this.beanInfo.features & SerializerFeature.NotWriteDefaultValue.mask) == 0) || (!((cls = fieldInfo.fieldClass) == Byte.TYPE && (processValue instanceof Byte) && ((Byte) processValue).byteValue() == 0) && (!(cls == Short.TYPE && (processValue instanceof Short) && ((Short) processValue).shortValue() == 0) && (!(cls == Integer.TYPE && (processValue instanceof Integer) && ((Integer) processValue).intValue() == 0) && (!(cls == Long.TYPE && (processValue instanceof Long) && ((Long) processValue).longValue() == 0) && (!(cls == Float.TYPE && (processValue instanceof Float) && ((Float) processValue).floatValue() == 0.0f) && (!(cls == Double.TYPE && (processValue instanceof Double) && ((Double) processValue).doubleValue() == 0.0d) && (cls != Boolean.TYPE || !(processValue instanceof Boolean) || ((Boolean) processValue).booleanValue()))))))))) {
                                                    if (z7) {
                                                        if (!fieldInfo.unwrapped || !(processValue instanceof Map) || ((Map) processValue).size() != 0) {
                                                            serializeWriter.write(44);
                                                            if (serializeWriter.isEnabled(SerializerFeature.PrettyFormat)) {
                                                                jSONSerializer.println();
                                                            }
                                                        }
                                                    }
                                                    if (processKey != str2) {
                                                        if (!isWriteAsArray) {
                                                            serializeWriter.writeFieldName(processKey, true);
                                                        }
                                                        jSONSerializer.write(processValue);
                                                    } else if (str3 != processValue) {
                                                        if (!isWriteAsArray) {
                                                            fieldSerializer4.writePrefix(jSONSerializer);
                                                        }
                                                        jSONSerializer.write(processValue);
                                                    } else {
                                                        if (!isWriteAsArray) {
                                                            boolean isAssignableFrom = Map.class.isAssignableFrom(cls3);
                                                            boolean z9 = (!cls3.isPrimitive() && !cls3.getName().startsWith("java.")) || cls3 == Object.class;
                                                            if (isEnabled || !fieldInfo.unwrapped || (!isAssignableFrom && !z9)) {
                                                                if (z8) {
                                                                    c2 = 0;
                                                                    serializeWriter.write(fieldInfo.name_chars, 0, fieldInfo.name_chars.length);
                                                                } else {
                                                                    c2 = 0;
                                                                    fieldSerializer4.writePrefix(jSONSerializer);
                                                                }
                                                                if (isWriteAsArray) {
                                                                    JSONField annotation2 = fieldInfo.getAnnotation();
                                                                    if (cls3 == String.class && (annotation2 == null || annotation2.serializeUsing() == Void.class)) {
                                                                        if (processValue == null) {
                                                                            int i12 = fieldSerializer4.features;
                                                                            if (this.beanInfo.jsonType != null) {
                                                                                i12 |= SerializerFeature.of(this.beanInfo.jsonType.serialzeFeatures());
                                                                            }
                                                                            if ((serializeWriter.features & SerializerFeature.WriteNullStringAsEmpty.mask) != 0 && (SerializerFeature.WriteMapNullValue.mask & i12) == 0) {
                                                                                serializeWriter.writeString("");
                                                                            } else if ((i12 & SerializerFeature.WriteNullStringAsEmpty.mask) != 0) {
                                                                                serializeWriter.writeString("");
                                                                            } else {
                                                                                serializeWriter.writeNull();
                                                                            }
                                                                        } else {
                                                                            String str4 = (String) processValue;
                                                                            if (isEnabled4) {
                                                                                serializeWriter.writeStringWithSingleQuote(str4);
                                                                            } else {
                                                                                serializeWriter.writeStringWithDoubleQuote(str4, c2);
                                                                            }
                                                                        }
                                                                    } else if (!fieldInfo.unwrapped || !(processValue instanceof Map) || ((Map) processValue).size() != 0) {
                                                                        fieldSerializer4.writeValue(jSONSerializer, processValue);
                                                                    } else {
                                                                        fieldSerializer2 = fieldSerializer3;
                                                                        z7 = false;
                                                                        i2++;
                                                                        obj7 = obj;
                                                                        type2 = type;
                                                                        fieldSerializerArr2 = fieldSerializerArr2;
                                                                        c4 = c;
                                                                        serialContext3 = serialContext2;
                                                                    }
                                                                } else {
                                                                    fieldSerializer4.writeValue(jSONSerializer, processValue);
                                                                }
                                                                if (fieldInfo.unwrapped && (processValue instanceof Map)) {
                                                                    map = (Map) processValue;
                                                                    if (map.size() != 0) {
                                                                        if (!jSONSerializer.isEnabled(SerializerFeature.WriteMapNullValue)) {
                                                                            Iterator it = map.values().iterator();
                                                                            while (true) {
                                                                                if (it.hasNext()) {
                                                                                    if (it.next() != null) {
                                                                                        z5 = true;
                                                                                        break;
                                                                                    }
                                                                                } else {
                                                                                    z5 = false;
                                                                                    break;
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                    z4 = true;
                                                                    if (!z4) {
                                                                        fieldSerializer2 = fieldSerializer3;
                                                                        z7 = true;
                                                                        i2++;
                                                                        obj7 = obj;
                                                                        type2 = type;
                                                                        fieldSerializerArr2 = fieldSerializerArr2;
                                                                        c4 = c;
                                                                        serialContext3 = serialContext2;
                                                                    }
                                                                    fieldSerializer2 = fieldSerializer3;
                                                                    i2++;
                                                                    obj7 = obj;
                                                                    type2 = type;
                                                                    fieldSerializerArr2 = fieldSerializerArr2;
                                                                    c4 = c;
                                                                    serialContext3 = serialContext2;
                                                                }
                                                                z4 = false;
                                                                if (!z4) {
                                                                }
                                                                fieldSerializer2 = fieldSerializer3;
                                                                i2++;
                                                                obj7 = obj;
                                                                type2 = type;
                                                                fieldSerializerArr2 = fieldSerializerArr2;
                                                                c4 = c;
                                                                serialContext3 = serialContext2;
                                                            }
                                                        }
                                                        c2 = 0;
                                                        if (isWriteAsArray) {
                                                        }
                                                        map = (Map) processValue;
                                                        if (map.size() != 0) {
                                                        }
                                                        z4 = true;
                                                        if (!z4) {
                                                        }
                                                        fieldSerializer2 = fieldSerializer3;
                                                        i2++;
                                                        obj7 = obj;
                                                        type2 = type;
                                                        fieldSerializerArr2 = fieldSerializerArr2;
                                                        c4 = c;
                                                        serialContext3 = serialContext2;
                                                    }
                                                    map = (Map) processValue;
                                                    if (map.size() != 0) {
                                                    }
                                                    z4 = true;
                                                    if (!z4) {
                                                    }
                                                    fieldSerializer2 = fieldSerializer3;
                                                    i2++;
                                                    obj7 = obj;
                                                    type2 = type;
                                                    fieldSerializerArr2 = fieldSerializerArr2;
                                                    c4 = c;
                                                    serialContext3 = serialContext2;
                                                }
                                                fieldSerializer2 = fieldSerializer3;
                                                i2++;
                                                obj7 = obj;
                                                type2 = type;
                                                fieldSerializerArr2 = fieldSerializerArr2;
                                                c4 = c;
                                                serialContext3 = serialContext2;
                                            } catch (Exception e5) {
                                                Exception e6 = e5;
                                                Object obj8 = obj;
                                                exc = e6;
                                                fieldSerializer = fieldSerializer3;
                                                obj5 = obj8;
                                                serialContext = serialContext2;
                                                obj3 = obj5;
                                                String str5 = "write javaBean error, fastjson version 1.2.73";
                                                if (obj3 != null) {
                                                }
                                                if (obj2 != null) {
                                                }
                                                if (exc.getMessage() != null) {
                                                }
                                                if (exc instanceof InvocationTargetException) {
                                                }
                                                if (th != null) {
                                                }
                                                throw new JSONException(str5, exc);
                                            } catch (Throwable th32) {
                                            }
                                        }
                                    }
                                    obj6 = null;
                                    if (apply(jSONSerializer, obj7, str2, obj6)) {
                                    }
                                }
                            }
                            c = c4;
                            serialContext2 = serialContext3;
                            fieldSerializer2 = fieldSerializer3;
                            i2++;
                            obj7 = obj;
                            type2 = type;
                            fieldSerializerArr2 = fieldSerializerArr2;
                            c4 = c;
                            serialContext3 = serialContext2;
                        }
                        fieldSerializer3 = fieldSerializer2;
                        serialContext2 = serialContext3;
                        r1 = obj;
                        writeAfter(jSONSerializer, r1, !z7 ? ',' : 0);
                        if (fieldSerializerArr2.length > 0) {
                            if (serializeWriter.isEnabled(SerializerFeature.PrettyFormat)) {
                                jSONSerializer.decrementIdent();
                                jSONSerializer.println();
                            }
                        }
                        if (!z) {
                            serializeWriter.append(c4);
                        }
                        jSONSerializer.context = serialContext2;
                    }
                }
                z2 = false;
                if (!z2) {
                }
                boolean isEnabled5 = serializeWriter.isEnabled(SerializerFeature.WriteClassName);
                if (writeBefore(jSONSerializer, obj7, c5) != ',') {
                }
                boolean isEnabled22 = serializeWriter.isEnabled(SerializerFeature.SkipTransientField);
                boolean isEnabled32 = serializeWriter.isEnabled(SerializerFeature.IgnoreNonFieldGetter);
                boolean z72 = z6;
                fieldSerializer2 = null;
                i2 = 0;
                while (i2 < fieldSerializerArr2.length) {
                }
                fieldSerializer3 = fieldSerializer2;
                serialContext2 = serialContext3;
                r1 = obj;
                try {
                    writeAfter(jSONSerializer, r1, !z72 ? ',' : 0);
                    if (fieldSerializerArr2.length > 0) {
                    }
                    if (!z) {
                    }
                    jSONSerializer.context = serialContext2;
                } catch (Exception e7) {
                    e = e7;
                    serialContext = serialContext2;
                    obj4 = r1;
                    exc = e;
                    fieldSerializer = fieldSerializer3;
                    obj3 = obj4;
                    String str52 = "write javaBean error, fastjson version 1.2.73";
                    if (obj3 != null) {
                    }
                    if (obj2 != null) {
                    }
                    if (exc.getMessage() != null) {
                    }
                    if (exc instanceof InvocationTargetException) {
                    }
                    if (th != null) {
                    }
                    throw new JSONException(str52, exc);
                } catch (Throwable th4) {
                    th = th4;
                    serialContext = serialContext2;
                    Throwable th5 = th;
                    jSONSerializer.context = serialContext;
                    throw th5;
                }
            } catch (Exception e8) {
                e = e8;
                fieldSerializer3 = fieldSerializer2;
                serialContext = serialContext3;
                obj4 = obj7;
                exc = e;
                fieldSerializer = fieldSerializer3;
                obj3 = obj4;
                String str522 = "write javaBean error, fastjson version 1.2.73";
                if (obj3 != null) {
                }
                if (obj2 != null) {
                }
                if (exc.getMessage() != null) {
                }
                if (exc instanceof InvocationTargetException) {
                }
                if (th != null) {
                }
                throw new JSONException(str522, exc);
            } catch (Throwable th6) {
            }
        }
    }

    /* access modifiers changed from: protected */
    public void writeClassName(JSONSerializer jSONSerializer, String str, Object obj) {
        if (str == null) {
            str = jSONSerializer.config.typeKey;
        }
        jSONSerializer.out.writeFieldName(str, false);
        String str2 = this.beanInfo.typeName;
        if (str2 == null) {
            Class<?> cls = obj.getClass();
            if (TypeUtils.isProxy(cls)) {
                cls = cls.getSuperclass();
            }
            str2 = cls.getName();
        }
        jSONSerializer.write(str2);
    }

    public boolean writeReference(JSONSerializer jSONSerializer, Object obj, int i) {
        SerialContext serialContext = jSONSerializer.context;
        int i2 = SerializerFeature.DisableCircularReferenceDetect.mask;
        if (serialContext == null || (serialContext.features & i2) != 0 || (i & i2) != 0 || jSONSerializer.references == null || !jSONSerializer.references.containsKey(obj)) {
            return false;
        }
        jSONSerializer.writeReference(obj);
        return true;
    }

    /* access modifiers changed from: protected */
    public boolean isWriteAsArray(JSONSerializer jSONSerializer) {
        return isWriteAsArray(jSONSerializer, 0);
    }

    /* access modifiers changed from: protected */
    public boolean isWriteAsArray(JSONSerializer jSONSerializer, int i) {
        int i2 = SerializerFeature.BeanToArray.mask;
        return ((this.beanInfo.features & i2) == 0 && !jSONSerializer.out.beanToArray && (i & i2) == 0) ? false : true;
    }

    public Object getFieldValue(Object obj, String str) {
        FieldSerializer fieldSerializer = getFieldSerializer(str);
        if (fieldSerializer != null) {
            try {
                return fieldSerializer.getPropertyValue(obj);
            } catch (InvocationTargetException e) {
                throw new JSONException("getFieldValue error." + str, e);
            } catch (IllegalAccessException e2) {
                throw new JSONException("getFieldValue error." + str, e2);
            }
        } else {
            throw new JSONException("field not found. " + str);
        }
    }

    public Object getFieldValue(Object obj, String str, long j, boolean z) {
        FieldSerializer fieldSerializer = getFieldSerializer(j);
        if (fieldSerializer != null) {
            try {
                return fieldSerializer.getPropertyValue(obj);
            } catch (InvocationTargetException e) {
                throw new JSONException("getFieldValue error." + str, e);
            } catch (IllegalAccessException e2) {
                throw new JSONException("getFieldValue error." + str, e2);
            }
        } else if (!z) {
            return null;
        } else {
            throw new JSONException("field not found. " + str);
        }
    }

    public FieldSerializer getFieldSerializer(String str) {
        if (str == null) {
            return null;
        }
        int i = 0;
        int length = this.sortedGetters.length - 1;
        while (i <= length) {
            int i2 = (i + length) >>> 1;
            int compareTo = this.sortedGetters[i2].fieldInfo.name.compareTo(str);
            if (compareTo < 0) {
                i = i2 + 1;
            } else if (compareTo <= 0) {
                return this.sortedGetters[i2];
            } else {
                length = i2 - 1;
            }
        }
        return null;
    }

    public FieldSerializer getFieldSerializer(long j) {
        PropertyNamingStrategy[] propertyNamingStrategyArr;
        int binarySearch;
        if (this.hashArray == null) {
            propertyNamingStrategyArr = PropertyNamingStrategy.values();
            long[] jArr = new long[(this.sortedGetters.length * propertyNamingStrategyArr.length)];
            int i = 0;
            int i2 = 0;
            while (true) {
                FieldSerializer[] fieldSerializerArr = this.sortedGetters;
                if (i >= fieldSerializerArr.length) {
                    break;
                }
                String str = fieldSerializerArr[i].fieldInfo.name;
                jArr[i2] = TypeUtils.fnv1a_64(str);
                i2++;
                for (PropertyNamingStrategy propertyNamingStrategy : propertyNamingStrategyArr) {
                    String translate = propertyNamingStrategy.translate(str);
                    if (!str.equals(translate)) {
                        jArr[i2] = TypeUtils.fnv1a_64(translate);
                        i2++;
                    }
                }
                i++;
            }
            Arrays.sort(jArr, 0, i2);
            this.hashArray = new long[i2];
            System.arraycopy(jArr, 0, this.hashArray, 0, i2);
        } else {
            propertyNamingStrategyArr = null;
        }
        int binarySearch2 = Arrays.binarySearch(this.hashArray, j);
        if (binarySearch2 < 0) {
            return null;
        }
        if (this.hashArrayMapping == null) {
            if (propertyNamingStrategyArr == null) {
                propertyNamingStrategyArr = PropertyNamingStrategy.values();
            }
            short[] sArr = new short[this.hashArray.length];
            Arrays.fill(sArr, (short) -1);
            int i3 = 0;
            while (true) {
                FieldSerializer[] fieldSerializerArr2 = this.sortedGetters;
                if (i3 >= fieldSerializerArr2.length) {
                    break;
                }
                String str2 = fieldSerializerArr2[i3].fieldInfo.name;
                int binarySearch3 = Arrays.binarySearch(this.hashArray, TypeUtils.fnv1a_64(str2));
                if (binarySearch3 >= 0) {
                    sArr[binarySearch3] = (short) i3;
                }
                for (PropertyNamingStrategy propertyNamingStrategy2 : propertyNamingStrategyArr) {
                    String translate2 = propertyNamingStrategy2.translate(str2);
                    if (!str2.equals(translate2) && (binarySearch = Arrays.binarySearch(this.hashArray, TypeUtils.fnv1a_64(translate2))) >= 0) {
                        sArr[binarySearch] = (short) i3;
                    }
                }
                i3++;
            }
            this.hashArrayMapping = sArr;
        }
        short s = this.hashArrayMapping[binarySearch2];
        if (s != -1) {
            return this.sortedGetters[s];
        }
        return null;
    }

    public List<Object> getFieldValues(Object obj) throws Exception {
        ArrayList arrayList = new ArrayList(this.sortedGetters.length);
        for (FieldSerializer fieldSerializer : this.sortedGetters) {
            arrayList.add(fieldSerializer.getPropertyValue(obj));
        }
        return arrayList;
    }

    public List<Object> getObjectFieldValues(Object obj) throws Exception {
        ArrayList arrayList = new ArrayList(this.sortedGetters.length);
        FieldSerializer[] fieldSerializerArr = this.sortedGetters;
        for (FieldSerializer fieldSerializer : fieldSerializerArr) {
            Class<?> cls = fieldSerializer.fieldInfo.fieldClass;
            if (!cls.isPrimitive() && !cls.getName().startsWith("java.lang.")) {
                arrayList.add(fieldSerializer.getPropertyValue(obj));
            }
        }
        return arrayList;
    }

    public int getSize(Object obj) throws Exception {
        int i = 0;
        for (FieldSerializer fieldSerializer : this.sortedGetters) {
            if (fieldSerializer.getPropertyValueDirect(obj) != null) {
                i++;
            }
        }
        return i;
    }

    public Set<String> getFieldNames(Object obj) throws Exception {
        HashSet hashSet = new HashSet();
        FieldSerializer[] fieldSerializerArr = this.sortedGetters;
        for (FieldSerializer fieldSerializer : fieldSerializerArr) {
            if (fieldSerializer.getPropertyValueDirect(obj) != null) {
                hashSet.add(fieldSerializer.fieldInfo.name);
            }
        }
        return hashSet;
    }

    public Map<String, Object> getFieldValuesMap(Object obj) throws Exception {
        LinkedHashMap linkedHashMap = new LinkedHashMap(this.sortedGetters.length);
        FieldSerializer[] fieldSerializerArr = this.sortedGetters;
        for (FieldSerializer fieldSerializer : fieldSerializerArr) {
            boolean isEnabled = SerializerFeature.isEnabled(fieldSerializer.features, SerializerFeature.SkipTransientField);
            FieldInfo fieldInfo = fieldSerializer.fieldInfo;
            if (!isEnabled || fieldInfo == null || !fieldInfo.fieldTransient) {
                if (fieldSerializer.fieldInfo.unwrapped) {
                    Object json = JSON.toJSON(fieldSerializer.getPropertyValue(obj));
                    if (json instanceof Map) {
                        linkedHashMap.putAll((Map) json);
                    } else {
                        linkedHashMap.put(fieldSerializer.fieldInfo.name, fieldSerializer.getPropertyValue(obj));
                    }
                } else {
                    linkedHashMap.put(fieldSerializer.fieldInfo.name, fieldSerializer.getPropertyValue(obj));
                }
            }
        }
        return linkedHashMap;
    }

    /* access modifiers changed from: protected */
    public BeanContext getBeanContext(int i) {
        return this.sortedGetters[i].fieldContext;
    }

    /* access modifiers changed from: protected */
    public Type getFieldType(int i) {
        return this.sortedGetters[i].fieldInfo.fieldType;
    }

    /* access modifiers changed from: protected */
    public char writeBefore(JSONSerializer jSONSerializer, Object obj, char c) {
        if (jSONSerializer.beforeFilters != null) {
            for (BeforeFilter beforeFilter : jSONSerializer.beforeFilters) {
                c = beforeFilter.writeBefore(jSONSerializer, obj, c);
            }
        }
        if (this.beforeFilters != null) {
            for (BeforeFilter beforeFilter2 : this.beforeFilters) {
                c = beforeFilter2.writeBefore(jSONSerializer, obj, c);
            }
        }
        return c;
    }

    /* access modifiers changed from: protected */
    public char writeAfter(JSONSerializer jSONSerializer, Object obj, char c) {
        if (jSONSerializer.afterFilters != null) {
            for (AfterFilter afterFilter : jSONSerializer.afterFilters) {
                c = afterFilter.writeAfter(jSONSerializer, obj, c);
            }
        }
        if (this.afterFilters != null) {
            for (AfterFilter afterFilter2 : this.afterFilters) {
                c = afterFilter2.writeAfter(jSONSerializer, obj, c);
            }
        }
        return c;
    }

    /* access modifiers changed from: protected */
    public boolean applyLabel(JSONSerializer jSONSerializer, String str) {
        if (jSONSerializer.labelFilters != null) {
            for (LabelFilter labelFilter : jSONSerializer.labelFilters) {
                if (!labelFilter.apply(str)) {
                    return false;
                }
            }
        }
        if (this.labelFilters == null) {
            return true;
        }
        for (LabelFilter labelFilter2 : this.labelFilters) {
            if (!labelFilter2.apply(str)) {
                return false;
            }
        }
        return true;
    }
}