package com.google.gson.internal; import com.google.gson.InstanceCreator; import com.google.gson.JsonIOException; import com.google.gson.internal.reflect.ReflectionAccessor; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collection; import java.util.EnumSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Queue; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentNavigableMap; import java.util.concurrent.ConcurrentSkipListMap; /* loaded from: classes.dex */ public final class ConstructorConstructor { private final ReflectionAccessor accessor = ReflectionAccessor.getInstance(); private final Map> instanceCreators; public ConstructorConstructor(Map> map) { this.instanceCreators = map; } public final ObjectConstructor get(TypeToken typeToken) { Type type = typeToken.getType(); Class rawType = typeToken.getRawType(); InstanceCreator instanceCreator = this.instanceCreators.get(type); if (instanceCreator != null) { return new ObjectConstructor(this, instanceCreator, type) { // from class: com.google.gson.internal.ConstructorConstructor.1 final ConstructorConstructor this$0; final Type val$type; final InstanceCreator val$typeCreator; { this.this$0 = this; this.val$typeCreator = instanceCreator; this.val$type = type; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) this.val$typeCreator.createInstance(this.val$type); } }; } InstanceCreator instanceCreator2 = this.instanceCreators.get(rawType); if (instanceCreator2 != null) { return new ObjectConstructor(this, instanceCreator2, type) { // from class: com.google.gson.internal.ConstructorConstructor.2 final ConstructorConstructor this$0; final InstanceCreator val$rawTypeCreator; final Type val$type; { this.this$0 = this; this.val$rawTypeCreator = instanceCreator2; this.val$type = type; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) this.val$rawTypeCreator.createInstance(this.val$type); } }; } ObjectConstructor newDefaultConstructor = newDefaultConstructor(rawType); if (newDefaultConstructor != null) { return newDefaultConstructor; } ObjectConstructor newDefaultImplementationConstructor = newDefaultImplementationConstructor(type, rawType); return newDefaultImplementationConstructor != null ? newDefaultImplementationConstructor : newUnsafeAllocator(type, rawType); } private ObjectConstructor newDefaultConstructor(Class cls) { try { Constructor declaredConstructor = cls.getDeclaredConstructor(new Class[0]); if (!declaredConstructor.isAccessible()) { this.accessor.makeAccessible(declaredConstructor); } return new ObjectConstructor(this, declaredConstructor) { // from class: com.google.gson.internal.ConstructorConstructor.3 final ConstructorConstructor this$0; final Constructor val$constructor; { this.this$0 = this; this.val$constructor = declaredConstructor; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { try { return (T) this.val$constructor.newInstance(null); } catch (IllegalAccessException e) { throw new AssertionError(e); } catch (InstantiationException e2) { StringBuilder sb = new StringBuilder("Failed to invoke "); sb.append(this.val$constructor); sb.append(" with no args"); throw new RuntimeException(sb.toString(), e2); } catch (InvocationTargetException e3) { StringBuilder sb2 = new StringBuilder("Failed to invoke "); sb2.append(this.val$constructor); sb2.append(" with no args"); throw new RuntimeException(sb2.toString(), e3.getTargetException()); } } }; } catch (NoSuchMethodException unused) { return null; } } private ObjectConstructor newDefaultImplementationConstructor(Type type, Class cls) { if (Collection.class.isAssignableFrom(cls)) { if (SortedSet.class.isAssignableFrom(cls)) { return new ObjectConstructor(this) { // from class: com.google.gson.internal.ConstructorConstructor.4 final ConstructorConstructor this$0; { this.this$0 = this; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) new TreeSet(); } }; } if (EnumSet.class.isAssignableFrom(cls)) { return new ObjectConstructor(this, type) { // from class: com.google.gson.internal.ConstructorConstructor.5 final ConstructorConstructor this$0; final Type val$type; { this.this$0 = this; this.val$type = type; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { Type type2 = this.val$type; if (type2 instanceof ParameterizedType) { Type type3 = ((ParameterizedType) type2).getActualTypeArguments()[0]; if (type3 instanceof Class) { return (T) EnumSet.noneOf((Class) type3); } StringBuilder sb = new StringBuilder("Invalid EnumSet type: "); sb.append(this.val$type.toString()); throw new JsonIOException(sb.toString()); } StringBuilder sb2 = new StringBuilder("Invalid EnumSet type: "); sb2.append(this.val$type.toString()); throw new JsonIOException(sb2.toString()); } }; } if (Set.class.isAssignableFrom(cls)) { return new ObjectConstructor(this) { // from class: com.google.gson.internal.ConstructorConstructor.6 final ConstructorConstructor this$0; { this.this$0 = this; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) new LinkedHashSet(); } }; } if (Queue.class.isAssignableFrom(cls)) { return new ObjectConstructor(this) { // from class: com.google.gson.internal.ConstructorConstructor.7 final ConstructorConstructor this$0; { this.this$0 = this; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) new ArrayDeque(); } }; } return new ObjectConstructor(this) { // from class: com.google.gson.internal.ConstructorConstructor.8 final ConstructorConstructor this$0; { this.this$0 = this; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) new ArrayList(); } }; } if (!Map.class.isAssignableFrom(cls)) { return null; } if (ConcurrentNavigableMap.class.isAssignableFrom(cls)) { return new ObjectConstructor(this) { // from class: com.google.gson.internal.ConstructorConstructor.9 final ConstructorConstructor this$0; { this.this$0 = this; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) new ConcurrentSkipListMap(); } }; } if (ConcurrentMap.class.isAssignableFrom(cls)) { return new ObjectConstructor(this) { // from class: com.google.gson.internal.ConstructorConstructor.10 final ConstructorConstructor this$0; { this.this$0 = this; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) new ConcurrentHashMap(); } }; } if (SortedMap.class.isAssignableFrom(cls)) { return new ObjectConstructor(this) { // from class: com.google.gson.internal.ConstructorConstructor.11 final ConstructorConstructor this$0; { this.this$0 = this; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) new TreeMap(); } }; } if ((type instanceof ParameterizedType) && !String.class.isAssignableFrom(TypeToken.get(((ParameterizedType) type).getActualTypeArguments()[0]).getRawType())) { return new ObjectConstructor(this) { // from class: com.google.gson.internal.ConstructorConstructor.12 final ConstructorConstructor this$0; { this.this$0 = this; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) new LinkedHashMap(); } }; } return new ObjectConstructor(this) { // from class: com.google.gson.internal.ConstructorConstructor.13 final ConstructorConstructor this$0; { this.this$0 = this; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { return (T) new LinkedTreeMap(); } }; } private ObjectConstructor newUnsafeAllocator(Type type, Class cls) { return new ObjectConstructor(this, cls, type) { // from class: com.google.gson.internal.ConstructorConstructor.14 final ConstructorConstructor this$0; private final UnsafeAllocator unsafeAllocator = UnsafeAllocator.create(); final Class val$rawType; final Type val$type; { this.this$0 = this; this.val$rawType = cls; this.val$type = type; } @Override // com.google.gson.internal.ObjectConstructor public T construct() { try { return (T) this.unsafeAllocator.newInstance(this.val$rawType); } catch (Exception e) { StringBuilder sb = new StringBuilder("Unable to invoke no-args constructor for "); sb.append(this.val$type); sb.append(". Registering an InstanceCreator with Gson for this type may fix this problem."); throw new RuntimeException(sb.toString(), e); } } }; } public final String toString() { return this.instanceCreators.toString(); } }