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); } }