Skip to content

Commit c6d5af6

Browse files
fix/parse exception traces
1 parent 786e7b2 commit c6d5af6

3 files changed

Lines changed: 55 additions & 40 deletions

File tree

.gitignore

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ target/
44
!**/src/test/**/target/
55

66
### IntelliJ IDEA ###
7-
#.idea/modules.xml
8-
#.idea/jarRepositories.xml
9-
#.idea/compiler.xml
10-
#.idea/libraries/
7+
.idea/modules.xml
8+
.idea/jarRepositories.xml
9+
.idea/compiler.xml
10+
.idea/libraries/
1111
.idea/
12+
.idea/workspace.xml
1213
*.iws
1314
*.iml
1415
*.ipr
@@ -38,3 +39,4 @@ build/
3839
### Mac OS ###
3940
.DS_Store
4041
/.idea/
42+
/.idea/

.idea/workspace.xml

Lines changed: 4 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

traceo-sdk-core/src/main/java/com/traceo/sdk/incident/IncidentHandler.java

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package com.traceo.sdk.incident;
22

3-
import com.traceo.sdk.DefaultRequest;
4-
import com.traceo.sdk.EventCallback;
5-
import com.traceo.sdk.TraceoIncident;
6-
import com.traceo.sdk.TraceoRuntimePlatform;
3+
import com.traceo.sdk.*;
74
import com.traceo.sdk.http.HttpAsyncClient;
85
import com.traceo.sdk.logging.ClientLogger;
96
import com.traceo.sdk.utils.ThrowableUtils;
107

8+
import java.net.URL;
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
1112
import static com.traceo.sdk.client.CoreClient.getConfigs;
1213

1314
public class IncidentHandler {
@@ -60,9 +61,49 @@ private static TraceoIncident processIncident(Throwable throwable, String custom
6061
traceoIncident.setMessage(throwable.getMessage());
6162
}
6263

64+
List<TraceoTrace> traces = getTraceList(throwable);
65+
traceoIncident.setTraces(traces);
66+
6367
traceoIncident.setStack(stacktrace);
6468
traceoIncident.setPlatform(platform);
6569

6670
return traceoIncident;
6771
}
72+
73+
private static List<TraceoTrace> getTraceList(Throwable throwable) {
74+
List<TraceoTrace> traces = new ArrayList<>();
75+
76+
for (StackTraceElement stackTraceElement : throwable.getStackTrace()) {
77+
TraceoTrace trace = new TraceoTrace();
78+
trace.setFunction(stackTraceElement.getMethodName());
79+
80+
String[] splitFilename = stackTraceElement.getFileName().split("\\.");
81+
if (splitFilename.length > 1) {
82+
trace.setFilename(splitFilename[0]);
83+
trace.setExtension(splitFilename[1]);
84+
}
85+
86+
trace.setLineNo(stackTraceElement.getLineNumber());
87+
trace.setAbsPath(stackTraceElement.getClassName());
88+
89+
traces.add(trace);
90+
}
91+
return traces;
92+
}
93+
94+
private static String getAbsolutePath(String className) {
95+
try {
96+
Class<?> myClass = Class.forName(className);
97+
ClassLoader classLoader = myClass.getClassLoader();
98+
99+
URL classResource = classLoader.getResource(className.replace('.', '/') + ".class");
100+
if (classResource == null) {
101+
return null;
102+
}
103+
104+
return classResource.getPath();
105+
} catch (java.lang.ClassNotFoundException e) {
106+
return null;
107+
}
108+
}
68109
}

0 commit comments

Comments
 (0)