package retrofit2; import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Array; import java.lang.reflect.GenericArrayType; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.lang.reflect.TypeVariable; import java.lang.reflect.WildcardType; import java.util.Arrays; import java.util.NoSuchElementException; import okhttp3.ResponseBody; import okio.Buffer; /* loaded from: classes2.dex */ final class Utils { static final Type[] EMPTY_TYPE_ARRAY = new Type[0]; private static final class GenericArrayTypeImpl implements GenericArrayType { private final Type componentType; GenericArrayTypeImpl(Type type) { this.componentType = type; } public boolean equals(Object obj) { return (obj instanceof GenericArrayType) && Utils.equals(this, (GenericArrayType) obj); } @Override // java.lang.reflect.GenericArrayType public Type getGenericComponentType() { return this.componentType; } public int hashCode() { return this.componentType.hashCode(); } public String toString() { return Utils.typeToString(this.componentType) + "[]"; } } private static final class ParameterizedTypeImpl implements ParameterizedType { private final Type ownerType; private final Type rawType; private final Type[] typeArguments; ParameterizedTypeImpl(Type type, Type type2, Type... typeArr) { if (type2 instanceof Class) { if ((type == null) != (((Class) type2).getEnclosingClass() == null)) { throw new IllegalArgumentException(); } } for (Type type3 : typeArr) { Utils.checkNotNull(type3, "typeArgument == null"); Utils.checkNotPrimitive(type3); } this.ownerType = type; this.rawType = type2; this.typeArguments = (Type[]) typeArr.clone(); } public boolean equals(Object obj) { return (obj instanceof ParameterizedType) && Utils.equals(this, (ParameterizedType) obj); } @Override // java.lang.reflect.ParameterizedType public Type[] getActualTypeArguments() { return (Type[]) this.typeArguments.clone(); } @Override // java.lang.reflect.ParameterizedType public Type getOwnerType() { return this.ownerType; } @Override // java.lang.reflect.ParameterizedType public Type getRawType() { return this.rawType; } public int hashCode() { int hashCode = Arrays.hashCode(this.typeArguments) ^ this.rawType.hashCode(); Type type = this.ownerType; return hashCode ^ (type != null ? type.hashCode() : 0); } public String toString() { Type[] typeArr = this.typeArguments; if (typeArr.length == 0) { return Utils.typeToString(this.rawType); } StringBuilder sb = new StringBuilder((typeArr.length + 1) * 30); sb.append(Utils.typeToString(this.rawType)); sb.append("<"); sb.append(Utils.typeToString(this.typeArguments[0])); for (int i = 1; i < this.typeArguments.length; i++) { sb.append(", "); sb.append(Utils.typeToString(this.typeArguments[i])); } sb.append(">"); return sb.toString(); } } private static final class WildcardTypeImpl implements WildcardType { private final Type lowerBound; private final Type upperBound; WildcardTypeImpl(Type[] typeArr, Type[] typeArr2) { if (typeArr2.length > 1) { throw new IllegalArgumentException(); } if (typeArr.length != 1) { throw new IllegalArgumentException(); } if (typeArr2.length != 1) { if (typeArr[0] == null) { throw new NullPointerException(); } Utils.checkNotPrimitive(typeArr[0]); this.lowerBound = null; this.upperBound = typeArr[0]; return; } if (typeArr2[0] == null) { throw new NullPointerException(); } Utils.checkNotPrimitive(typeArr2[0]); if (typeArr[0] != Object.class) { throw new IllegalArgumentException(); } this.lowerBound = typeArr2[0]; this.upperBound = Object.class; } public boolean equals(Object obj) { return (obj instanceof WildcardType) && Utils.equals(this, (WildcardType) obj); } @Override // java.lang.reflect.WildcardType public Type[] getLowerBounds() { Type type = this.lowerBound; return type != null ? new Type[]{type} : Utils.EMPTY_TYPE_ARRAY; } @Override // java.lang.reflect.WildcardType public Type[] getUpperBounds() { return new Type[]{this.upperBound}; } public int hashCode() { Type type = this.lowerBound; return (type != null ? type.hashCode() + 31 : 1) ^ (this.upperBound.hashCode() + 31); } public String toString() { if (this.lowerBound != null) { return "? super " + Utils.typeToString(this.lowerBound); } if (this.upperBound == Object.class) { return "?"; } return "? extends " + Utils.typeToString(this.upperBound); } } private Utils() { } static ResponseBody buffer(ResponseBody responseBody) throws IOException { Buffer buffer = new Buffer(); responseBody.source().readAll(buffer); return ResponseBody.create(responseBody.contentType(), responseBody.contentLength(), buffer); } static T checkNotNull(T t, String str) { if (t != null) { return t; } throw new NullPointerException(str); } static void checkNotPrimitive(Type type) { if ((type instanceof Class) && ((Class) type).isPrimitive()) { throw new IllegalArgumentException(); } } private static Class declaringClassOf(TypeVariable typeVariable) { Object genericDeclaration = typeVariable.getGenericDeclaration(); if (genericDeclaration instanceof Class) { return (Class) genericDeclaration; } return null; } static boolean equals(Type type, Type type2) { if (type == type2) { return true; } if (type instanceof Class) { return type.equals(type2); } if (type instanceof ParameterizedType) { if (!(type2 instanceof ParameterizedType)) { return false; } ParameterizedType parameterizedType = (ParameterizedType) type; ParameterizedType parameterizedType2 = (ParameterizedType) type2; Type ownerType = parameterizedType.getOwnerType(); Type ownerType2 = parameterizedType2.getOwnerType(); return (ownerType == ownerType2 || (ownerType != null && ownerType.equals(ownerType2))) && parameterizedType.getRawType().equals(parameterizedType2.getRawType()) && Arrays.equals(parameterizedType.getActualTypeArguments(), parameterizedType2.getActualTypeArguments()); } if (type instanceof GenericArrayType) { if (type2 instanceof GenericArrayType) { return equals(((GenericArrayType) type).getGenericComponentType(), ((GenericArrayType) type2).getGenericComponentType()); } return false; } if (type instanceof WildcardType) { if (!(type2 instanceof WildcardType)) { return false; } WildcardType wildcardType = (WildcardType) type; WildcardType wildcardType2 = (WildcardType) type2; return Arrays.equals(wildcardType.getUpperBounds(), wildcardType2.getUpperBounds()) && Arrays.equals(wildcardType.getLowerBounds(), wildcardType2.getLowerBounds()); } if (!(type instanceof TypeVariable) || !(type2 instanceof TypeVariable)) { return false; } TypeVariable typeVariable = (TypeVariable) type; TypeVariable typeVariable2 = (TypeVariable) type2; return typeVariable.getGenericDeclaration() == typeVariable2.getGenericDeclaration() && typeVariable.getName().equals(typeVariable2.getName()); } static Type getCallResponseType(Type type) { if (type instanceof ParameterizedType) { return getParameterUpperBound(0, (ParameterizedType) type); } throw new IllegalArgumentException("Call return type must be parameterized as Call or Call"); } static Type getGenericSupertype(Type type, Class cls, Class cls2) { if (cls2 == cls) { return type; } if (cls2.isInterface()) { Class[] interfaces = cls.getInterfaces(); int length = interfaces.length; for (int i = 0; i < length; i++) { if (interfaces[i] == cls2) { return cls.getGenericInterfaces()[i]; } if (cls2.isAssignableFrom(interfaces[i])) { return getGenericSupertype(cls.getGenericInterfaces()[i], interfaces[i], cls2); } } } if (!cls.isInterface()) { while (cls != Object.class) { Class superclass = cls.getSuperclass(); if (superclass == cls2) { return cls.getGenericSuperclass(); } if (cls2.isAssignableFrom(superclass)) { return getGenericSupertype(cls.getGenericSuperclass(), superclass, cls2); } cls = superclass; } } return cls2; } static Type getParameterUpperBound(int i, ParameterizedType parameterizedType) { Type[] actualTypeArguments = parameterizedType.getActualTypeArguments(); if (i >= 0 && i < actualTypeArguments.length) { Type type = actualTypeArguments[i]; return type instanceof WildcardType ? ((WildcardType) type).getUpperBounds()[0] : type; } throw new IllegalArgumentException("Index " + i + " not in range [0," + actualTypeArguments.length + ") for " + parameterizedType); } static Class getRawType(Type type) { checkNotNull(type, "type == null"); if (type instanceof Class) { return (Class) type; } if (type instanceof ParameterizedType) { Type rawType = ((ParameterizedType) type).getRawType(); if (rawType instanceof Class) { return (Class) rawType; } throw new IllegalArgumentException(); } if (type instanceof GenericArrayType) { return Array.newInstance(getRawType(((GenericArrayType) type).getGenericComponentType()), 0).getClass(); } if (type instanceof TypeVariable) { return Object.class; } if (type instanceof WildcardType) { return getRawType(((WildcardType) type).getUpperBounds()[0]); } throw new IllegalArgumentException("Expected a Class, ParameterizedType, or GenericArrayType, but <" + type + "> is of type " + type.getClass().getName()); } static Type getSupertype(Type type, Class cls, Class cls2) { if (cls2.isAssignableFrom(cls)) { return resolve(type, cls, getGenericSupertype(type, cls, cls2)); } throw new IllegalArgumentException(); } static boolean hasUnresolvableType(Type type) { if (type instanceof Class) { return false; } if (type instanceof ParameterizedType) { for (Type type2 : ((ParameterizedType) type).getActualTypeArguments()) { if (hasUnresolvableType(type2)) { return true; } } return false; } if (type instanceof GenericArrayType) { return hasUnresolvableType(((GenericArrayType) type).getGenericComponentType()); } if ((type instanceof TypeVariable) || (type instanceof WildcardType)) { return true; } throw new IllegalArgumentException("Expected a Class, ParameterizedType, or GenericArrayType, but <" + type + "> is of type " + (type == null ? "null" : type.getClass().getName())); } private static int indexOf(Object[] objArr, Object obj) { for (int i = 0; i < objArr.length; i++) { if (obj.equals(objArr[i])) { return i; } } throw new NoSuchElementException(); } static boolean isAnnotationPresent(Annotation[] annotationArr, Class cls) { for (Annotation annotation : annotationArr) { if (cls.isInstance(annotation)) { return true; } } return false; } static Type resolve(Type type, Class cls, Type type2) { Type type3 = type2; while (type3 instanceof TypeVariable) { TypeVariable typeVariable = (TypeVariable) type3; Type resolveTypeVariable = resolveTypeVariable(type, cls, typeVariable); if (resolveTypeVariable == typeVariable) { return resolveTypeVariable; } type3 = resolveTypeVariable; } if (type3 instanceof Class) { Class cls2 = (Class) type3; if (cls2.isArray()) { Class componentType = cls2.getComponentType(); Type resolve = resolve(type, cls, componentType); return componentType == resolve ? cls2 : new GenericArrayTypeImpl(resolve); } } if (type3 instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) type3; Type genericComponentType = genericArrayType.getGenericComponentType(); Type resolve2 = resolve(type, cls, genericComponentType); return genericComponentType == resolve2 ? genericArrayType : new GenericArrayTypeImpl(resolve2); } if (type3 instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) type3; Type ownerType = parameterizedType.getOwnerType(); Type resolve3 = resolve(type, cls, ownerType); boolean z = resolve3 != ownerType; Type[] actualTypeArguments = parameterizedType.getActualTypeArguments(); int length = actualTypeArguments.length; for (int i = 0; i < length; i++) { Type resolve4 = resolve(type, cls, actualTypeArguments[i]); if (resolve4 != actualTypeArguments[i]) { if (!z) { actualTypeArguments = (Type[]) actualTypeArguments.clone(); z = true; } actualTypeArguments[i] = resolve4; } } return z ? new ParameterizedTypeImpl(resolve3, parameterizedType.getRawType(), actualTypeArguments) : parameterizedType; } boolean z2 = type3 instanceof WildcardType; Type type4 = type3; if (z2) { WildcardType wildcardType = (WildcardType) type3; Type[] lowerBounds = wildcardType.getLowerBounds(); Type[] upperBounds = wildcardType.getUpperBounds(); if (lowerBounds.length == 1) { Type resolve5 = resolve(type, cls, lowerBounds[0]); type4 = wildcardType; if (resolve5 != lowerBounds[0]) { return new WildcardTypeImpl(new Type[]{Object.class}, new Type[]{resolve5}); } } else { type4 = wildcardType; if (upperBounds.length == 1) { Type resolve6 = resolve(type, cls, upperBounds[0]); type4 = wildcardType; if (resolve6 != upperBounds[0]) { return new WildcardTypeImpl(new Type[]{resolve6}, EMPTY_TYPE_ARRAY); } } } } return type4; } private static Type resolveTypeVariable(Type type, Class cls, TypeVariable typeVariable) { Class declaringClassOf = declaringClassOf(typeVariable); if (declaringClassOf == null) { return typeVariable; } Type genericSupertype = getGenericSupertype(type, cls, declaringClassOf); if (!(genericSupertype instanceof ParameterizedType)) { return typeVariable; } return ((ParameterizedType) genericSupertype).getActualTypeArguments()[indexOf(declaringClassOf.getTypeParameters(), typeVariable)]; } static void throwIfFatal(Throwable th) { if (th instanceof VirtualMachineError) { throw ((VirtualMachineError) th); } if (th instanceof ThreadDeath) { throw ((ThreadDeath) th); } if (th instanceof LinkageError) { throw ((LinkageError) th); } } static String typeToString(Type type) { return type instanceof Class ? ((Class) type).getName() : type.toString(); } static void validateServiceInterface(Class cls) { if (!cls.isInterface()) { throw new IllegalArgumentException("API declarations must be interfaces."); } if (cls.getInterfaces().length > 0) { throw new IllegalArgumentException("API interfaces must not extend other interfaces."); } } }