package ungp.sampleng.backend.exception;
import java.io.BufferedReader;
import java.io.StringReader;
public class StackTraceSnapshot {
public static String snapshot(Throwable t) {
String stacktrace = ExceptionUtil.getStackTraceAsString(t);
stacktrace = lines(4, stacktrace);
return replaceInvalidCharacters(stacktrace);
}
private static String replaceInvalidCharacters(String stacktrace) {
return stacktrace.replaceAll(":", "").replaceAll("\n", "").replaceAll("\r", "");
}
private static String lines(int numberOfLines, String stackeTrace) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader reader = new BufferedReader( new StringReader(stackeTrace) );
for (int i = 0; i < numberOfLines; i++) {
sb.append( reader.readLine() ).append("...");
}
} catch(Exception e) {
throw new RuntimeException("Erro ao dar o parse no stack trace.", e);
}
return sb.toString();
}
}