package jadx.core.utils;
import jadx.api.JadxDecompiler;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.Iterator;
public class Utils {
public static final String JADX_API_PACKAGE = JadxDecompiler.class.getPackage().getName();
private Utils() {
}
public static String cleanObjectName(String obj) {
int last = obj.length() - 1;
if (obj.charAt(0) == 'L' && obj.charAt(last) == ';') {
return obj.substring(1, last).replace('/', '.');
}
return obj;
}
public static String makeQualifiedObjectName(String obj) {
return 'L' + obj.replace('.', '/') + ';';
}
public static String listToString(Iterable<?> list) {
if (list == null) {
return "";
}
StringBuilder str = new StringBuilder();
for (Iterator<?> it = list.iterator(); it.hasNext(); ) {
Object o = it.next();
str.append(o);
if (it.hasNext()) {
str.append(", ");
}
}
return str.toString();
}
public static String arrayToString(Object[] array) {
if (array == null) {
return "";
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; i++) {
if (i != 0) {
sb.append(", ");
}
sb.append(array[i]);
}
return sb.toString();
}
public static String getStackTrace(Throwable throwable) {
if (throwable == null) {
return "";
}
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw, true);
filterRecursive(throwable);
throwable.printStackTrace(pw);
return sw.getBuffer().toString();
}
private static void filterRecursive(Throwable th) {
try {
filter(th);
} catch (Exception e) {
// ignore filter exceptions
}
Throwable cause = th.getCause();
if (cause != null) {
filterRecursive(cause);
}
}
private static void filter(Throwable th) {
StackTraceElement[] stackTrace = th.getStackTrace();
int cutIndex = -1;
int length = stackTrace.length;
for (int i = 0; i < length; i++) {
StackTraceElement stackTraceElement = stackTrace[i];
if (stackTraceElement.getClassName().startsWith(JADX_API_PACKAGE)) {
cutIndex = i;
} else if (cutIndex > 0) {
cutIndex = i;
break;
}
}
if (cutIndex > 0 && cutIndex < length) {
th.setStackTrace(Arrays.copyOfRange(stackTrace, 0, cutIndex));
}
}
public static int compare(int x, int y) {
return x < y ? -1 : x == y ? 0 : 1;
}
}