summaryrefslogtreecommitdiff
path: root/StoneIsland/plugins/cordova-plugin-firebasex/src/android/JavaScriptException.java
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/plugins/cordova-plugin-firebasex/src/android/JavaScriptException.java')
-rw-r--r--StoneIsland/plugins/cordova-plugin-firebasex/src/android/JavaScriptException.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/StoneIsland/plugins/cordova-plugin-firebasex/src/android/JavaScriptException.java b/StoneIsland/plugins/cordova-plugin-firebasex/src/android/JavaScriptException.java
new file mode 100644
index 00000000..3d423fa3
--- /dev/null
+++ b/StoneIsland/plugins/cordova-plugin-firebasex/src/android/JavaScriptException.java
@@ -0,0 +1,45 @@
+package org.apache.cordova.firebase;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * Exception class to log Javascript based exceptions with stacktrace.
+ *
+ * Picked from https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/8/files
+ *
+ * @author https://github.com/sagrawal31/
+ */
+public class JavaScriptException extends Exception {
+
+ public JavaScriptException(String message) {
+ super(message);
+ }
+
+ public JavaScriptException(String message, JSONArray stackTrace) throws JSONException {
+ super(message);
+ this.handleStacktrace(stackTrace);
+ }
+
+ private void handleStacktrace(JSONArray stackTrace) throws JSONException {
+ if (stackTrace == null) {
+ return;
+ }
+
+ StackTraceElement[] trace = new StackTraceElement[stackTrace.length()];
+
+ for (int i = 0; i < stackTrace.length(); i++) {
+ JSONObject elem = stackTrace.getJSONObject(i);
+
+ trace[i] = new StackTraceElement(
+ "undefined",
+ elem.optString("functionName", "undefined"),
+ elem.optString("fileName", "undefined"),
+ elem.optInt("lineNumber", -1)
+ );
+ }
+
+ this.setStackTrace(trace);
+ }
+}