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.ObjectTypeAdapter; import com.google.gson.internal.bind.ReflectiveTypeAdapterFactory; import com.google.gson.internal.bind.SqlDateTypeAdapter; import com.google.gson.internal.bind.TimeTypeAdapter; import com.google.gson.internal.bind.TypeAdapters; 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 boolean prettyPrinting; final boolean serializeNulls; final boolean serializeSpecialFloatingPointValues; final int timeStyle; private final Map, TypeAdapter> typeTokenCache; 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()); } /* JADX INFO: Access modifiers changed from: package-private */ 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) { 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; ArrayList arrayList = new ArrayList(); arrayList.add(TypeAdapters.JSON_ELEMENT_FACTORY); arrayList.add(ObjectTypeAdapter.FACTORY); 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(TypeAdapters.NUMBER_FACTORY); 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); arrayList.add(TimeTypeAdapter.FACTORY); arrayList.add(SqlDateTypeAdapter.FACTORY); arrayList.add(TypeAdapters.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 public Number read(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 public Number read(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); } } }; } 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 public Number read(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 public AtomicLong read(JsonReader jsonReader) throws IOException { return new AtomicLong(((Number) TypeAdapter.this.read(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 public AtomicLongArray read(JsonReader jsonReader) throws IOException { ArrayList arrayList = new ArrayList(); jsonReader.beginArray(); while (jsonReader.hasNext()) { arrayList.add(Long.valueOf(((Number) TypeAdapter.this.read(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.8) 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 { try { adapter.write(jsonWriter, obj); } catch (AssertionError e) { AssertionError assertionError = new AssertionError("AssertionError (GSON 2.8.8): " + e.getMessage()); assertionError.initCause(e); throw assertionError; } } catch (IOException e2) { throw new JsonIOException(e2); } } 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.8): " + 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)).read(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.8): " + 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); } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes3.dex */ public static class FutureTypeAdapter extends TypeAdapter { private TypeAdapter delegate; FutureTypeAdapter() { } public void setDelegate(TypeAdapter typeAdapter) { if (this.delegate != null) { throw new AssertionError(); } this.delegate = typeAdapter; } @Override // com.google.gson.TypeAdapter public T read(JsonReader jsonReader) throws IOException { TypeAdapter typeAdapter = this.delegate; if (typeAdapter == null) { throw new IllegalStateException(); } return typeAdapter.read(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 + "}"; } }