// Copyright (c) 2022 Sentry. All Rights Reserved. #include "SentryBreadcrumbAndroid.h" #include "Infrastructure/SentryConvertorsAndroid.h" #include "Infrastructure/SentryJavaClasses.h" SentryBreadcrumbAndroid::SentryBreadcrumbAndroid() : FSentryJavaObjectWrapper(SentryJavaClasses::Breadcrumb, "()V") { SetupClassMethods(); } SentryBreadcrumbAndroid::SentryBreadcrumbAndroid(jobject breadcrumb) : FSentryJavaObjectWrapper(SentryJavaClasses::Breadcrumb, breadcrumb) { SetupClassMethods(); } void SentryBreadcrumbAndroid::SetupClassMethods() { SetMessageMethod = GetMethod("setMessage", "(Ljava/lang/String;)V"); GetMessageMethod = GetMethod("getMessage", "()Ljava/lang/String;"); SetTypeMethod = GetMethod("setType", "(Ljava/lang/String;)V"); GetTypeMethod = GetMethod("getType", "()Ljava/lang/String;"); SetCategoryMethod = GetMethod("setCategory", "(Ljava/lang/String;)V"); GetCategoryMethod = GetMethod("getCategory", "()Ljava/lang/String;"); SetDataMethod = GetMethod("setData", "(Ljava/lang/String;Ljava/lang/Object;)V"); GetDataMethod = GetMethod("getData", "()Ljava/util/Map;"); SetLevelMethod = GetMethod("setLevel", "(Lio/sentry/SentryLevel;)V"); GetLevelMethod = GetMethod("getLevel", "()Lio/sentry/SentryLevel;"); } void SentryBreadcrumbAndroid::SetMessage(const FString& message) { CallMethod(SetMessageMethod, *GetJString(message)); } FString SentryBreadcrumbAndroid::GetMessage() const { return CallMethod(GetMessageMethod); } void SentryBreadcrumbAndroid::SetType(const FString& type) { CallMethod(SetTypeMethod, *GetJString(type)); } FString SentryBreadcrumbAndroid::GetType() const { return CallMethod(GetTypeMethod); } void SentryBreadcrumbAndroid::SetCategory(const FString& category) { CallMethod(SetCategoryMethod, *GetJString(category)); } FString SentryBreadcrumbAndroid::GetCategory() const { return CallMethod(GetCategoryMethod); } void SentryBreadcrumbAndroid::SetData(const TMap& data) { for (const auto& dataItem : data) { CallMethod(SetDataMethod, *GetJString(dataItem.Key), *GetJString(dataItem.Value)); } } TMap SentryBreadcrumbAndroid::GetData() const { auto data = CallObjectMethod(GetDataMethod); return SentryConvertorsAndroid::StringMapToUnreal(*data); } void SentryBreadcrumbAndroid::SetLevel(ESentryLevel level) { CallMethod(SetLevelMethod, SentryConvertorsAndroid::SentryLevelToNative(level)->GetJObject()); } ESentryLevel SentryBreadcrumbAndroid::GetLevel() const { auto level = CallObjectMethod(GetLevelMethod); return SentryConvertorsAndroid::SentryLevelToUnreal(*level); }