what-the-bank/sources/io/grpc/internal/JsonUtil.java

262 lines
9.4 KiB
Java
Raw Permalink Normal View History

2024-07-27 18:17:47 +07:00
package io.grpc.internal;
import com.google.common.math.LongMath;
import java.text.ParseException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/* loaded from: classes6.dex */
public class JsonUtil {
static final boolean $assertionsDisabled = false;
private static final long DURATION_SECONDS_MAX = 315576000000L;
private static final long DURATION_SECONDS_MIN = -315576000000L;
private static final long NANOS_PER_SECOND = TimeUnit.SECONDS.toNanos(1);
private static long saturatedAdd(long j, long j2) {
long j3 = j + j2;
return (((j2 ^ j) > 0L ? 1 : ((j2 ^ j) == 0L ? 0 : -1)) < 0) | ((j ^ j3) >= 0) ? j3 : ((j3 >>> 63) ^ 1) + Long.MAX_VALUE;
}
public static List<?> getList(Map<String, ?> map, String str) {
if (!map.containsKey(str)) {
return null;
}
Object obj = map.get(str);
if (!(obj instanceof List)) {
throw new ClassCastException(String.format("value '%s' for key '%s' in '%s' is not List", obj, str, map));
}
return (List) obj;
}
public static List<Map<String, ?>> getListOfObjects(Map<String, ?> map, String str) {
List<?> list = getList(map, str);
if (list == null) {
return null;
}
return checkObjectList(list);
}
public static List<String> getListOfStrings(Map<String, ?> map, String str) {
List<?> list = getList(map, str);
if (list == null) {
return null;
}
return checkStringList(list);
}
public static Map<String, ?> getObject(Map<String, ?> map, String str) {
if (!map.containsKey(str)) {
return null;
}
Object obj = map.get(str);
if (!(obj instanceof Map)) {
throw new ClassCastException(String.format("value '%s' for key '%s' in '%s' is not object", obj, str, map));
}
return (Map) obj;
}
public static Double getNumberAsDouble(Map<String, ?> map, String str) {
if (!map.containsKey(str)) {
return null;
}
Object obj = map.get(str);
if (obj instanceof Double) {
return (Double) obj;
}
if (obj instanceof String) {
try {
return Double.valueOf(Double.parseDouble((String) obj));
} catch (NumberFormatException unused) {
throw new IllegalArgumentException(String.format("value '%s' for key '%s' is not a double", obj, str));
}
}
throw new IllegalArgumentException(String.format("value '%s' for key '%s' in '%s' is not a number", obj, str, map));
}
public static Integer getNumberAsInteger(Map<String, ?> map, String str) {
if (!map.containsKey(str)) {
return null;
}
Object obj = map.get(str);
if (obj instanceof Double) {
Double d = (Double) obj;
int intValue = d.intValue();
if (intValue != d.doubleValue()) {
throw new ClassCastException("Number expected to be integer: ".concat(String.valueOf(d)));
}
return Integer.valueOf(intValue);
}
if (obj instanceof String) {
try {
return Integer.valueOf(Integer.parseInt((String) obj));
} catch (NumberFormatException unused) {
throw new IllegalArgumentException(String.format("value '%s' for key '%s' is not an integer", obj, str));
}
}
throw new IllegalArgumentException(String.format("value '%s' for key '%s' is not an integer", obj, str));
}
public static Long getNumberAsLong(Map<String, ?> map, String str) {
if (!map.containsKey(str)) {
return null;
}
Object obj = map.get(str);
if (obj instanceof Double) {
Double d = (Double) obj;
long longValue = d.longValue();
if (longValue != d.doubleValue()) {
throw new ClassCastException("Number expected to be long: ".concat(String.valueOf(d)));
}
return Long.valueOf(longValue);
}
if (obj instanceof String) {
try {
return Long.valueOf(Long.parseLong((String) obj));
} catch (NumberFormatException unused) {
throw new IllegalArgumentException(String.format("value '%s' for key '%s' is not a long integer", obj, str));
}
}
throw new IllegalArgumentException(String.format("value '%s' for key '%s' is not a long integer", obj, str));
}
public static String getString(Map<String, ?> map, String str) {
if (!map.containsKey(str)) {
return null;
}
Object obj = map.get(str);
if (!(obj instanceof String)) {
throw new ClassCastException(String.format("value '%s' for key '%s' in '%s' is not String", obj, str, map));
}
return (String) obj;
}
public static Long getStringAsDuration(Map<String, ?> map, String str) {
String string = getString(map, str);
if (string == null) {
return null;
}
try {
return Long.valueOf(parseDuration(string));
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
public static Boolean getBoolean(Map<String, ?> map, String str) {
if (!map.containsKey(str)) {
return null;
}
Object obj = map.get(str);
if (!(obj instanceof Boolean)) {
throw new ClassCastException(String.format("value '%s' for key '%s' in '%s' is not Boolean", obj, str, map));
}
return (Boolean) obj;
}
/* JADX WARN: Multi-variable type inference failed */
public static List<Map<String, ?>> checkObjectList(List<?> list) {
for (int i = 0; i < list.size(); i++) {
if (!(list.get(i) instanceof Map)) {
throw new ClassCastException(String.format("value %s for idx %d in %s is not object", list.get(i), Integer.valueOf(i), list));
}
}
return list;
}
/* JADX WARN: Multi-variable type inference failed */
public static List<String> checkStringList(List<?> list) {
for (int i = 0; i < list.size(); i++) {
if (!(list.get(i) instanceof String)) {
throw new ClassCastException(String.format("value '%s' for idx %d in '%s' is not string", list.get(i), Integer.valueOf(i), list));
}
}
return list;
}
private static long parseDuration(String str) throws ParseException {
boolean z;
String str2;
if (str.isEmpty() || str.charAt(str.length() - 1) != 's') {
throw new ParseException("Invalid duration string: ".concat(String.valueOf(str)), 0);
}
if (str.charAt(0) == '-') {
str = str.substring(1);
z = true;
} else {
z = false;
}
String substring = str.substring(0, str.length() - 1);
int indexOf = substring.indexOf(46);
if (indexOf != -1) {
str2 = substring.substring(indexOf + 1);
substring = substring.substring(0, indexOf);
} else {
str2 = "";
}
long parseLong = Long.parseLong(substring);
int parseNanos = str2.isEmpty() ? 0 : parseNanos(str2);
if (parseLong < 0) {
throw new ParseException("Invalid duration string: ".concat(String.valueOf(str)), 0);
}
if (z) {
parseLong = -parseLong;
parseNanos = -parseNanos;
}
try {
return normalizedDuration(parseLong, parseNanos);
} catch (IllegalArgumentException unused) {
throw new ParseException("Duration value is out of range.", 0);
}
}
private static int parseNanos(String str) throws ParseException {
int i = 0;
for (int i2 = 0; i2 < 9; i2++) {
i *= 10;
if (i2 < str.length()) {
if (str.charAt(i2) < '0' || str.charAt(i2) > '9') {
throw new ParseException("Invalid nanoseconds.", 0);
}
i += str.charAt(i2) - '0';
}
}
return i;
}
private static long normalizedDuration(long j, int i) {
long j2 = i;
long j3 = NANOS_PER_SECOND;
if (j2 <= (-j3) || j2 >= j3) {
j = LongMath.checkedAdd(j, j2 / j3);
i = (int) (j2 % j3);
}
if (j > 0 && i < 0) {
i = (int) (i + j3);
j--;
}
if (j < 0 && i > 0) {
i = (int) (i - j3);
j++;
}
if (!durationIsValid(j, i)) {
throw new IllegalArgumentException(String.format("Duration is not valid. See proto definition for valid values. Seconds (%s) must be in range [-315,576,000,000, +315,576,000,000]. Nanos (%s) must be in range [-999,999,999, +999,999,999]. Nanos must have the same sign as seconds", Long.valueOf(j), Integer.valueOf(i)));
}
return saturatedAdd(TimeUnit.SECONDS.toNanos(j), i);
}
private static boolean durationIsValid(long j, int i) {
if (j < DURATION_SECONDS_MIN || j > DURATION_SECONDS_MAX) {
return false;
}
long j2 = i;
if (j2 < -999999999 || j2 >= NANOS_PER_SECOND) {
return false;
}
if (j < 0 || i < 0) {
return j <= 0 && i <= 0;
}
return true;
}
}