Skip to content

Commit

Permalink
fix: Transfer session as string value
Browse files Browse the repository at this point in the history
Avoid ambiguity/conversion differences between layers
  • Loading branch information
kattrali committed Sep 21, 2018
1 parent 8c82a15 commit 7876dfb
Show file tree
Hide file tree
Showing 8 changed files with 18 additions and 15 deletions.
6 changes: 3 additions & 3 deletions ndk/src/main/java/com/bugsnag/android/ndk/NativeBridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public static native void addBreadcrumb(String name, String type, String timesta

public static native void removeMetadata(String tab, String key);

public static native void startedSession(String sessionID, long key);
public static native void startedSession(String sessionID, String key);

public static native void updateAppVersion(String appVersion);

Expand Down Expand Up @@ -302,8 +302,8 @@ private void handleStartSession(Object arg) {
if (metadata.size() == 2) {
Object id = metadata.get(0);
Object startTime = metadata.get(1);
if (id instanceof String && startTime instanceof Long) {
startedSession((String)id, (Long)startTime);
if (id instanceof String && startTime instanceof String) {
startedSession((String)id, (String)startTime);
return;
}
}
Expand Down
6 changes: 4 additions & 2 deletions ndk/src/main/jni/bugsnag_ndk.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,15 +122,17 @@ Java_com_bugsnag_android_ndk_NativeBridge_addHandledEvent(JNIEnv *env,
}

JNIEXPORT void JNICALL Java_com_bugsnag_android_ndk_NativeBridge_startedSession(
JNIEnv *env, jobject _this, jstring session_id_, jlong start_date_) {
JNIEnv *env, jobject _this, jstring session_id_, jstring start_date_) {
if (bsg_global_env == NULL || session_id_ == NULL)
return;
char *session_id = (char *)(*env)->GetStringUTFChars(env, session_id_, 0);
char *started_at = (char *)(*env)->GetStringUTFChars(env, start_date_, 0);
bsg_request_env_write_lock();
bugsnag_report_start_session(&bsg_global_env->next_report, session_id,
(long)start_date_);
started_at);
bsg_release_env_write_lock();
(*env)->ReleaseStringUTFChars(env, session_id_, session_id);
(*env)->ReleaseStringUTFChars(env, start_date_, started_at);
}

JNIEXPORT void JNICALL
Expand Down
5 changes: 3 additions & 2 deletions ndk/src/main/jni/report.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,10 @@ void bugsnag_report_remove_metadata_tab(bugsnag_report *report, char *section) {
}

void bugsnag_report_start_session(bugsnag_report *report, char *session_id,
long started_at) {
char *started_at) {
bsg_strncpy_safe(report->session_id, session_id, sizeof(report->session_id));
report->session_start = started_at;
bsg_strncpy_safe(report->session_start, started_at,
sizeof(report->session_start));
report->handled_events = 0;
}

Expand Down
4 changes: 2 additions & 2 deletions ndk/src/main/jni/report.h
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ typedef struct {
bsg_severity_t severity;

char session_id[33];
time_t session_start;
char session_start[33];
int handled_events;
} bugsnag_report;

Expand All @@ -314,7 +314,7 @@ void bugsnag_report_set_user_email(bugsnag_report *report, char *value);
void bugsnag_report_set_user_id(bugsnag_report *report, char *value);
void bugsnag_report_set_user_name(bugsnag_report *report, char *value);
void bugsnag_report_start_session(bugsnag_report *report, char *session_id,
long started_at);
char *started_at);
#ifdef __cplusplus
}
#endif
Expand Down
5 changes: 2 additions & 3 deletions ndk/src/main/jni/utils/serializer.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,9 +252,8 @@ char *bsg_serialize_report_to_json_string(bugsnag_report *report) {
if (strlen(report->user.id) > 0)
json_object_dotset_string(event, "user.id", report->user.id);
if (strlen(report->session_id) > 0) {
strftime(report_time, sizeof report_time, "%FT%TZ",
gmtime(&report->session_start));
json_object_dotset_string(event, "session.startedAt", report_time);
json_object_dotset_string(event, "session.startedAt",
report->session_start);
json_object_dotset_string(event, "session.id", report->session_id);
json_object_dotset_number(event, "session.events.handled",
report->handled_events);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ public void testStartSessionSendsMessage() throws InterruptedException {
NativeInterface.MessageType.START_SESSION, List.class);
assertEquals(2, sessionInfo.size());
assertTrue(sessionInfo.get(0) instanceof String);
assertTrue(sessionInfo.get(1) instanceof Long);
assertTrue(sessionInfo.get(1) instanceof String);
}

@Test
Expand Down
2 changes: 1 addition & 1 deletion sdk/src/main/java/com/bugsnag/android/NativeInterface.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public enum MessageType {
/**
* A new session was started. The Message object should be a string
* array
* containing [id, startDate]
* containing [id, startDateIsoString]
*/
START_SESSION,
/**
Expand Down
3 changes: 2 additions & 1 deletion sdk/src/main/java/com/bugsnag/android/SessionTracker.java
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,10 @@ public void run() {
sessionStore.write(session);
}
setChanged();
String startedAt = DateUtils.toIso8601(session.getStartedAt());
notifyObservers(new NativeInterface.Message(
NativeInterface.MessageType.START_SESSION,
Arrays.asList(session.getId(), session.getStartedAt().getTime())));
Arrays.asList(session.getId(), startedAt)));
}
}

Expand Down

0 comments on commit 7876dfb

Please sign in to comment.