Skip to content

Commit 5ffa282

Browse files
Merge pull request #393 from okta/rn_android-exception-stack-trace
Add stack trace to android exceptions
2 parents 9bfa185 + 94ee9a4 commit 5ffa282

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# 2.10.0
2+
3+
### Other
4+
- [#393](https://github.com/okta/okta-react-native/pull/393) Log stack traces for android exceptions
5+
16
# 2.9.1
27

38
### Bug Fix

android/src/main/java/com/oktareactnative/OktaSdkBridgeModule.java

+17-2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@
5555
import com.okta.oidc.storage.SharedPreferenceStorage;
5656
import com.okta.oidc.util.AuthorizationException;
5757

58+
import java.io.PrintWriter;
59+
import java.io.StringWriter;
60+
5861
public class OktaSdkBridgeModule extends ReactContextBaseJavaModule implements ActivityEventListener {
5962

6063
private static final String SESSION_CLIENT_SHARED_PREFS = "OKTA_SDK_BRIDGE_MODULE_SESSION_CLIENT";
@@ -254,8 +257,9 @@ public void onSuccess(@NonNull Result result) {
254257
WritableMap params = Arguments.createMap();
255258
params.putString(OktaSdkConstant.ERROR_CODE_KEY, OktaSdkError.SIGN_IN_FAILED.getErrorCode());
256259
params.putString(OktaSdkConstant.ERROR_MSG_KEY, OktaSdkError.SIGN_IN_FAILED.getErrorMessage());
260+
params.putString(OktaSdkConstant.ERROR_STACK_TRACE_KEY, getStackTraceString(e));
257261
sendEvent(reactContext, OktaSdkConstant.ON_ERROR, params);
258-
promise.reject(OktaSdkError.SIGN_IN_FAILED.getErrorCode(), OktaSdkError.SIGN_IN_FAILED.getErrorMessage());
262+
promise.reject(OktaSdkError.SIGN_IN_FAILED.getErrorCode(), OktaSdkError.SIGN_IN_FAILED.getErrorMessage(), e);
259263
}
260264
} else {
261265
sharedPreferencesEditor.clear().apply();
@@ -273,8 +277,9 @@ public void onError(String error, AuthorizationException exception) {
273277
WritableMap params = Arguments.createMap();
274278
params.putString(OktaSdkConstant.ERROR_CODE_KEY, OktaSdkError.OKTA_OIDC_ERROR.getErrorCode());
275279
params.putString(OktaSdkConstant.ERROR_MSG_KEY, error);
280+
params.putString(OktaSdkConstant.ERROR_STACK_TRACE_KEY, getStackTraceString(exception));
276281
sendEvent(reactContext, OktaSdkConstant.ON_ERROR, params);
277-
promise.reject(OktaSdkError.OKTA_OIDC_ERROR.getErrorCode(), OktaSdkError.OKTA_OIDC_ERROR.getErrorMessage());
282+
promise.reject(OktaSdkError.OKTA_OIDC_ERROR.getErrorCode(), OktaSdkError.OKTA_OIDC_ERROR.getErrorMessage(), exception);
278283
}
279284
});
280285
}
@@ -539,6 +544,7 @@ public void onSuccess(@NonNull AuthorizationStatus status) {
539544
WritableMap params = Arguments.createMap();
540545
params.putString(OktaSdkConstant.ERROR_CODE_KEY, OktaSdkError.SIGN_IN_FAILED.getErrorCode());
541546
params.putString(OktaSdkConstant.ERROR_MSG_KEY, OktaSdkError.SIGN_IN_FAILED.getErrorMessage());
547+
params.putString(OktaSdkConstant.ERROR_STACK_TRACE_KEY, getStackTraceString(e));
542548
if (promise != null) {
543549
promise.reject(e);
544550
}
@@ -576,6 +582,7 @@ public void onError(@NonNull String msg, AuthorizationException error) {
576582
WritableMap params = Arguments.createMap();
577583
params.putString(OktaSdkConstant.ERROR_CODE_KEY, OktaSdkError.OKTA_OIDC_ERROR.getErrorCode());
578584
params.putString(OktaSdkConstant.ERROR_MSG_KEY, msg);
585+
params.putString(OktaSdkConstant.ERROR_STACK_TRACE_KEY, getStackTraceString(error));
579586
final Promise promise = queuedPromise;
580587
if (promise != null) {
581588
promise.reject(OktaSdkError.SIGN_IN_FAILED.getErrorCode(), params.copy());
@@ -728,6 +735,14 @@ private int getRecalculatedRequestCodeForActivityResult(
728735
return initialRequestCode;
729736
}
730737

738+
private String getStackTraceString(Exception e) {
739+
StringWriter sw = new StringWriter();
740+
PrintWriter pw = new PrintWriter(sw);
741+
e.printStackTrace(pw);
742+
pw.flush();
743+
return sw.toString();
744+
}
745+
731746
private enum LastRequestType {
732747
SIGN_IN,
733748
SIGN_OUT

android/src/main/java/com/oktareactnative/OktaSdkConstant.java

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ final class OktaSdkConstant {
3131

3232
static final String ERROR_MSG_KEY = "error_message";
3333

34+
static final String ERROR_STACK_TRACE_KEY = "error_stack_trace";
35+
3436
static final String ACTIVE_KEY = "active";
3537

3638
static final String TOKEN_TYPE_KEY = "token_type";

0 commit comments

Comments
 (0)