package com.google.gson; import com.google.gson.internal.ConstructorConstructor; import com.google.gson.internal.Excluder; import com.google.gson.internal.Primitives; import com.google.gson.internal.Streams; import com.google.gson.internal.bind.ArrayTypeAdapter; import com.google.gson.internal.bind.CollectionTypeAdapterFactory; import com.google.gson.internal.bind.DateTypeAdapter; import com.google.gson.internal.bind.JsonAdapterAnnotationTypeAdapterFactory; import com.google.gson.internal.bind.JsonTreeReader; import com.google.gson.internal.bind.JsonTreeWriter; import com.google.gson.internal.bind.MapTypeAdapterFactory; import com.google.gson.internal.bind.NumberTypeAdapter; import com.google.gson.internal.bind.ObjectTypeAdapter; import com.google.gson.internal.bind.ReflectiveTypeAdapterFactory; import com.google.gson.internal.bind.TypeAdapters; import com.google.gson.internal.sql.SqlTypesSupport; import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; import com.google.gson.stream.MalformedJsonException; import java.io.EOFException; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; import java.lang.reflect.Type; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLongArray; /* loaded from: classes3.dex */ public final class Gson { static final boolean DEFAULT_COMPLEX_MAP_KEYS = false; static final boolean DEFAULT_ESCAPE_HTML = true; static final boolean DEFAULT_JSON_NON_EXECUTABLE = false; static final boolean DEFAULT_LENIENT = false; static final boolean DEFAULT_PRETTY_PRINT = false; static final boolean DEFAULT_SERIALIZE_NULLS = false; static final boolean DEFAULT_SPECIALIZE_FLOAT_VALUES = false; private static final String JSON_NON_EXECUTABLE_PREFIX = ")]}'\n"; private static final TypeToken NULL_KEY_SURROGATE = TypeToken.get(Object.class); final List builderFactories; final List builderHierarchyFactories; private final ThreadLocal, FutureTypeAdapter>> calls; final boolean complexMapKeySerialization; private final ConstructorConstructor constructorConstructor; final String datePattern; final int dateStyle; final Excluder excluder; final List factories; final FieldNamingStrategy fieldNamingStrategy; final boolean generateNonExecutableJson; final boolean htmlSafe; final Map> instanceCreators; private final JsonAdapterAnnotationTypeAdapterFactory jsonAdapterFactory; final boolean lenient; final LongSerializationPolicy longSerializationPolicy; final ToNumberStrategy numberToNumberStrategy; final ToNumberStrategy objectToNumberStrategy; final boolean prettyPrinting; final boolean serializeNulls; final boolean serializeSpecialFloatingPointValues; final int timeStyle; private final Map, TypeAdapter> typeTokenCache; @Deprecated public Excluder excluder() { return this.excluder; } public FieldNamingStrategy fieldNamingStrategy() { return this.fieldNamingStrategy; } public boolean htmlSafe() { return this.htmlSafe; } public boolean serializeNulls() { return this.serializeNulls; } public Gson() { this(Excluder.DEFAULT, FieldNamingPolicy.IDENTITY, Collections.emptyMap(), false, false, false, true, false, false, false, LongSerializationPolicy.DEFAULT, null, 2, 2, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), ToNumberPolicy.DOUBLE, ToNumberPolicy.LAZILY_PARSED_NUMBER); } public Gson(Excluder excluder, FieldNamingStrategy fieldNamingStrategy, Map> map, boolean z, boolean z2, boolean z3, boolean z4, boolean z5, boolean z6, boolean z7, LongSerializationPolicy longSerializationPolicy, String str, int i, int i2, List list, List list2, List list3, ToNumberStrategy toNumberStrategy, ToNumberStrategy toNumberStrategy2) { this.calls = new ThreadLocal<>(); this.typeTokenCache = new ConcurrentHashMap(); this.excluder = excluder; this.fieldNamingStrategy = fieldNamingStrategy; this.instanceCreators = map; ConstructorConstructor constructorConstructor = new ConstructorConstructor(map); this.constructorConstructor = constructorConstructor; this.serializeNulls = z; this.complexMapKeySerialization = z2; this.generateNonExecutableJson = z3; this.htmlSafe = z4; this.prettyPrinting = z5; this.lenient = z6; this.serializeSpecialFloatingPointValues = z7; this.longSerializationPolicy = longSerializationPolicy; this.datePattern = str; this.dateStyle = i; this.timeStyle = i2; this.builderFactories = list; this.builderHierarchyFactories = list2; this.objectToNumberStrategy = toNumberStrategy; this.numberToNumberStrategy = toNumberStrategy2; ArrayList arrayList = new ArrayList(); arrayList.add(TypeAdapters.JSON_ELEMENT_FACTORY); arrayList.add(ObjectTypeAdapter.getFactory(toNumberStrategy)); arrayList.add(excluder); arrayList.addAll(list3); arrayList.add(TypeAdapters.STRING_FACTORY); arrayList.add(TypeAdapters.INTEGER_FACTORY); arrayList.add(TypeAdapters.BOOLEAN_FACTORY); arrayList.add(TypeAdapters.BYTE_FACTORY); arrayList.add(TypeAdapters.SHORT_FACTORY); TypeAdapter longAdapter = longAdapter(longSerializationPolicy); arrayList.add(TypeAdapters.newFactory(Long.TYPE, Long.class, longAdapter)); arrayList.add(TypeAdapters.newFactory(Double.TYPE, Double.class, doubleAdapter(z7))); arrayList.add(TypeAdapters.newFactory(Float.TYPE, Float.class, floatAdapter(z7))); arrayList.add(NumberTypeAdapter.getFactory(toNumberStrategy2)); arrayList.add(TypeAdapters.ATOMIC_INTEGER_FACTORY); arrayList.add(TypeAdapters.ATOMIC_BOOLEAN_FACTORY); arrayList.add(TypeAdapters.newFactory(AtomicLong.class, atomicLongAdapter(longAdapter))); arrayList.add(TypeAdapters.newFactory(AtomicLongArray.class, atomicLongArrayAdapter(longAdapter))); arrayList.add(TypeAdapters.ATOMIC_INTEGER_ARRAY_FACTORY); arrayList.add(TypeAdapters.CHARACTER_FACTORY); arrayList.add(TypeAdapters.STRING_BUILDER_FACTORY); arrayList.add(TypeAdapters.STRING_BUFFER_FACTORY); arrayList.add(TypeAdapters.newFactory(BigDecimal.class, TypeAdapters.BIG_DECIMAL)); arrayList.add(TypeAdapters.newFactory(BigInteger.class, TypeAdapters.BIG_INTEGER)); arrayList.add(TypeAdapters.URL_FACTORY); arrayList.add(TypeAdapters.URI_FACTORY); arrayList.add(TypeAdapters.UUID_FACTORY); arrayList.add(TypeAdapters.CURRENCY_FACTORY); arrayList.add(TypeAdapters.LOCALE_FACTORY); arrayList.add(TypeAdapters.INET_ADDRESS_FACTORY); arrayList.add(TypeAdapters.BIT_SET_FACTORY); arrayList.add(DateTypeAdapter.FACTORY); arrayList.add(TypeAdapters.CALENDAR_FACTORY); if (SqlTypesSupport.SUPPORTS_SQL_TYPES) { arrayList.add(SqlTypesSupport.TIME_FACTORY); arrayList.add(SqlTypesSupport.DATE_FACTORY); arrayList.add(SqlTypesSupport.TIMESTAMP_FACTORY); } arrayList.add(ArrayTypeAdapter.FACTORY); arrayList.add(TypeAdapters.CLASS_FACTORY); arrayList.add(new CollectionTypeAdapterFactory(constructorConstructor)); arrayList.add(new MapTypeAdapterFactory(constructorConstructor, z2)); JsonAdapterAnnotationTypeAdapterFactory jsonAdapterAnnotationTypeAdapterFactory = new JsonAdapterAnnotationTypeAdapterFactory(constructorConstructor); this.jsonAdapterFactory = jsonAdapterAnnotationTypeAdapterFactory; arrayList.add(jsonAdapterAnnotationTypeAdapterFactory); arrayList.add(TypeAdapters.ENUM_FACTORY); arrayList.add(new ReflectiveTypeAdapterFactory(constructorConstructor, fieldNamingStrategy, excluder, jsonAdapterAnnotationTypeAdapterFactory)); this.factories = Collections.unmodifiableList(arrayList); } public GsonBuilder newBuilder() { return new GsonBuilder(this); } private TypeAdapter doubleAdapter(boolean z) { if (z) { return TypeAdapters.DOUBLE; } return new TypeAdapter() { // from class: com.google.gson.Gson.1 @Override // com.google.gson.TypeAdapter /* renamed from: read, reason: merged with bridge method [inline-methods] */ public Number read2(JsonReader jsonReader) throws IOException { if (jsonReader.peek() == JsonToken.NULL) { jsonReader.nextNull(); return null; } return Double.valueOf(jsonReader.nextDouble()); } @Override // com.google.gson.TypeAdapter public void write(JsonWriter jsonWriter, Number number) throws IOException { if (number == null) { jsonWriter.nullValue(); } else { Gson.checkValidFloatingPoint(number.doubleValue()); jsonWriter.value(number); } } }; } private TypeAdapter floatAdapter(boolean z) { if (z) { return TypeAdapters.FLOAT; } return new TypeAdapter() { // from class: com.google.gson.Gson.2 @Override // com.google.gson.TypeAdapter /* renamed from: read */ public Number read2(JsonReader jsonReader) throws IOException { if (jsonReader.peek() == JsonToken.NULL) { jsonReader.nextNull(); return null; } return Float.valueOf((float) jsonReader.nextDouble()); } @Override // com.google.gson.TypeAdapter public void write(JsonWriter jsonWriter, Number number) throws IOException { if (number == null) { jsonWriter.nullValue(); } else { Gson.checkValidFloatingPoint(number.floatValue()); jsonWriter.value(number); } } }; } public static void checkValidFloatingPoint(double d) { if (Double.isNaN(d) || Double.isInfinite(d)) { throw new IllegalArgumentException(d + " is not a valid double value as per JSON specification. To override this behavior, use GsonBuilder.serializeSpecialFloatingPointValues() method."); } } private static TypeAdapter longAdapter(LongSerializationPolicy longSerializationPolicy) { if (longSerializationPolicy == LongSerializationPolicy.DEFAULT) { return TypeAdapters.LONG; } return new TypeAdapter() { // from class: com.google.gson.Gson.3 /* JADX WARN: Can't rename method to resolve collision */ @Override // com.google.gson.TypeAdapter /* renamed from: read */ public Number read2(JsonReader jsonReader) throws IOException { if (jsonReader.peek() == JsonToken.NULL) { jsonReader.nextNull(); return null; } return Long.valueOf(jsonReader.nextLong()); } @Override // com.google.gson.TypeAdapter public void write(JsonWriter jsonWriter, Number number) throws IOException { if (number == null) { jsonWriter.nullValue(); } else { jsonWriter.value(number.toString()); } } }; } private static TypeAdapter atomicLongAdapter(final TypeAdapter typeAdapter) { return new TypeAdapter() { // from class: com.google.gson.Gson.4 @Override // com.google.gson.TypeAdapter public void write(JsonWriter jsonWriter, AtomicLong atomicLong) throws IOException { TypeAdapter.this.write(jsonWriter, Long.valueOf(atomicLong.get())); } @Override // com.google.gson.TypeAdapter /* renamed from: read, reason: avoid collision after fix types in other method */ public AtomicLong read2(JsonReader jsonReader) throws IOException { return new AtomicLong(((Number) TypeAdapter.this.read2(jsonReader)).longValue()); } }.nullSafe(); } private static TypeAdapter atomicLongArrayAdapter(final TypeAdapter typeAdapter) { return new TypeAdapter() { // from class: com.google.gson.Gson.5 @Override // com.google.gson.TypeAdapter public void write(JsonWriter jsonWriter, AtomicLongArray atomicLongArray) throws IOException { jsonWriter.beginArray(); int length = atomicLongArray.length(); for (int i = 0; i < length; i++) { TypeAdapter.this.write(jsonWriter, Long.valueOf(atomicLongArray.get(i))); } jsonWriter.endArray(); } @Override // com.google.gson.TypeAdapter /* renamed from: read, reason: avoid collision after fix types in other method */ public AtomicLongArray read2(JsonReader jsonReader) throws IOException { ArrayList arrayList = new ArrayList(); jsonReader.beginArray(); while (jsonReader.hasNext()) { arrayList.add(Long.valueOf(((Number) TypeAdapter.this.read2(jsonReader)).longValue())); } jsonReader.endArray(); int size = arrayList.size(); AtomicLongArray atomicLongArray = new AtomicLongArray(size); for (int i = 0; i < size; i++) { atomicLongArray.set(i, ((Long) arrayList.get(i)).longValue()); } return atomicLongArray; } }.nullSafe(); } public TypeAdapter getAdapter(TypeToken typeToken) { boolean z; TypeAdapter typeAdapter = (TypeAdapter) this.typeTokenCache.get(typeToken == null ? NULL_KEY_SURROGATE : typeToken); if (typeAdapter != null) { return typeAdapter; } Map, FutureTypeAdapter> map = this.calls.get(); if (map == null) { map = new HashMap<>(); this.calls.set(map); z = true; } else { z = false; } FutureTypeAdapter futureTypeAdapter = map.get(typeToken); if (futureTypeAdapter != null) { return futureTypeAdapter; } try { FutureTypeAdapter futureTypeAdapter2 = new FutureTypeAdapter<>(); map.put(typeToken, futureTypeAdapter2); Iterator it = this.factories.iterator(); while (it.hasNext()) { TypeAdapter create = it.next().create(this, typeToken); if (create != null) { futureTypeAdapter2.setDelegate(create); this.typeTokenCache.put(typeToken, create); return create; } } throw new IllegalArgumentException("GSON (2.8.9) cannot handle " + typeToken); } finally { map.remove(typeToken); if (z) { this.calls.remove(); } } } public TypeAdapter getDelegateAdapter(TypeAdapterFactory typeAdapterFactory, TypeToken typeToken) { if (!this.factories.contains(typeAdapterFactory)) { typeAdapterFactory = this.jsonAdapterFactory; } boolean z = false; for (TypeAdapterFactory typeAdapterFactory2 : this.factories) { if (z) { TypeAdapter create = typeAdapterFactory2.create(this, typeToken); if (create != null) { return create; } } else if (typeAdapterFactory2 == typeAdapterFactory) { z = true; } } throw new IllegalArgumentException("GSON cannot serialize " + typeToken); } public TypeAdapter getAdapter(Class cls) { return getAdapter(TypeToken.get((Class) cls)); } public JsonElement toJsonTree(Object obj) { if (obj == null) { return JsonNull.INSTANCE; } return toJsonTree(obj, obj.getClass()); } public JsonElement toJsonTree(Object obj, Type type) { JsonTreeWriter jsonTreeWriter = new JsonTreeWriter(); toJson(obj, type, jsonTreeWriter); return jsonTreeWriter.get(); } public String toJson(Object obj) { if (obj == null) { return toJson((JsonElement) JsonNull.INSTANCE); } return toJson(obj, obj.getClass()); } public String toJson(Object obj, Type type) { StringWriter stringWriter = new StringWriter(); toJson(obj, type, stringWriter); return stringWriter.toString(); } public void toJson(Object obj, Appendable appendable) throws JsonIOException { if (obj != null) { toJson(obj, obj.getClass(), appendable); } else { toJson((JsonElement) JsonNull.INSTANCE, appendable); } } public void toJson(Object obj, Type type, Appendable appendable) throws JsonIOException { try { toJson(obj, type, newJsonWriter(Streams.writerForAppendable(appendable))); } catch (IOException e) { throw new JsonIOException(e); } } public void toJson(Object obj, Type type, JsonWriter jsonWriter) throws JsonIOException { TypeAdapter adapter = getAdapter(TypeToken.get(type)); boolean isLenient = jsonWriter.isLenient(); jsonWriter.setLenient(true); boolean isHtmlSafe = jsonWriter.isHtmlSafe(); jsonWriter.setHtmlSafe(this.htmlSafe); boolean serializeNulls = jsonWriter.getSerializeNulls(); jsonWriter.setSerializeNulls(this.serializeNulls); try { try { adapter.write(jsonWriter, obj); } catch (IOException e) { throw new JsonIOException(e); } catch (AssertionError e2) { AssertionError assertionError = new AssertionError("AssertionError (GSON 2.8.9): " + e2.getMessage()); assertionError.initCause(e2); throw assertionError; } } finally { jsonWriter.setLenient(isLenient); jsonWriter.setHtmlSafe(isHtmlSafe); jsonWriter.setSerializeNulls(serializeNulls); } } public String toJson(JsonElement jsonElement) { StringWriter stringWriter = new StringWriter(); toJson(jsonElement, (Appendable) stringWriter); return stringWriter.toString(); } public void toJson(JsonElement jsonElement, Appendable appendable) throws JsonIOException { try { toJson(jsonElement, newJsonWriter(Streams.writerForAppendable(appendable))); } catch (IOException e) { throw new JsonIOException(e); } } public JsonWriter newJsonWriter(Writer writer) throws IOException { if (this.generateNonExecutableJson) { writer.write(JSON_NON_EXECUTABLE_PREFIX); } JsonWriter jsonWriter = new JsonWriter(writer); if (this.prettyPrinting) { jsonWriter.setIndent(" "); } jsonWriter.setSerializeNulls(this.serializeNulls); return jsonWriter; } public JsonReader newJsonReader(Reader reader) { JsonReader jsonReader = new JsonReader(reader); jsonReader.setLenient(this.lenient); return jsonReader; } public void toJson(JsonElement jsonElement, JsonWriter jsonWriter) throws JsonIOException { boolean isLenient = jsonWriter.isLenient(); jsonWriter.setLenient(true); boolean isHtmlSafe = jsonWriter.isHtmlSafe(); jsonWriter.setHtmlSafe(this.htmlSafe); boolean serializeNulls = jsonWriter.getSerializeNulls(); jsonWriter.setSerializeNulls(this.serializeNulls); try { try { Streams.write(jsonElement, jsonWriter); } catch (IOException e) { throw new JsonIOException(e); } catch (AssertionError e2) { AssertionError assertionError = new AssertionError("AssertionError (GSON 2.8.9): " + e2.getMessage()); assertionError.initCause(e2); throw assertionError; } } finally { jsonWriter.setLenient(isLenient); jsonWriter.setHtmlSafe(isHtmlSafe); jsonWriter.setSerializeNulls(serializeNulls); } } public T fromJson(String str, Class cls) throws JsonSyntaxException { return (T) Primitives.wrap(cls).cast(fromJson(str, (Type) cls)); } public T fromJson(String str, Type type) throws JsonSyntaxException { if (str == null) { return null; } return (T) fromJson(new StringReader(str), type); } public T fromJson(Reader reader, Class cls) throws JsonSyntaxException, JsonIOException { JsonReader newJsonReader = newJsonReader(reader); Object fromJson = fromJson(newJsonReader, cls); assertFullConsumption(fromJson, newJsonReader); return (T) Primitives.wrap(cls).cast(fromJson); } public T fromJson(Reader reader, Type type) throws JsonIOException, JsonSyntaxException { JsonReader newJsonReader = newJsonReader(reader); T t = (T) fromJson(newJsonReader, type); assertFullConsumption(t, newJsonReader); return t; } private static void assertFullConsumption(Object obj, JsonReader jsonReader) { if (obj != null) { try { if (jsonReader.peek() == JsonToken.END_DOCUMENT) { } else { throw new JsonIOException("JSON document was not fully consumed."); } } catch (MalformedJsonException e) { throw new JsonSyntaxException(e); } catch (IOException e2) { throw new JsonIOException(e2); } } } public T fromJson(JsonReader jsonReader, Type type) throws JsonIOException, JsonSyntaxException { boolean isLenient = jsonReader.isLenient(); boolean z = true; jsonReader.setLenient(true); try { try { try { jsonReader.peek(); z = false; return getAdapter(TypeToken.get(type)).read2(jsonReader); } catch (EOFException e) { if (!z) { throw new JsonSyntaxException(e); } jsonReader.setLenient(isLenient); return null; } catch (IllegalStateException e2) { throw new JsonSyntaxException(e2); } } catch (IOException e3) { throw new JsonSyntaxException(e3); } catch (AssertionError e4) { AssertionError assertionError = new AssertionError("AssertionError (GSON 2.8.9): " + e4.getMessage()); assertionError.initCause(e4); throw assertionError; } } finally { jsonReader.setLenient(isLenient); } } public T fromJson(JsonElement jsonElement, Class cls) throws JsonSyntaxException { return (T) Primitives.wrap(cls).cast(fromJson(jsonElement, (Type) cls)); } public T fromJson(JsonElement jsonElement, Type type) throws JsonSyntaxException { if (jsonElement == null) { return null; } return (T) fromJson(new JsonTreeReader(jsonElement), type); } public static class FutureTypeAdapter extends TypeAdapter { private TypeAdapter delegate; public void setDelegate(TypeAdapter typeAdapter) { if (this.delegate != null) { throw new AssertionError(); } this.delegate = typeAdapter; } @Override // com.google.gson.TypeAdapter /* renamed from: read */ public T read2(JsonReader jsonReader) throws IOException { TypeAdapter typeAdapter = this.delegate; if (typeAdapter == null) { throw new IllegalStateException(); } return typeAdapter.read2(jsonReader); } @Override // com.google.gson.TypeAdapter public void write(JsonWriter jsonWriter, T t) throws IOException { TypeAdapter typeAdapter = this.delegate; if (typeAdapter == null) { throw new IllegalStateException(); } typeAdapter.write(jsonWriter, t); } } public String toString() { return "{serializeNulls:" + this.serializeNulls + ",factories:" + this.factories + ",instanceCreators:" + this.constructorConstructor + "}"; } }