Creating classes that handle the jobject/class conversions.

This commit is contained in:
kdeng00
2020-01-13 21:12:09 -05:00
parent 2f1b37f3f5
commit 49c25e54a1
6 changed files with 52 additions and 28 deletions
+1
View File
@@ -35,6 +35,7 @@ set (HEADERS
types/RepeatTypes.h
types/ShuffleTypes.h
utility/GeneralUtility.h
utility/JNIObjectConversion.h
)
set(JSON_BuildTests OFF CACHE INTERNAL "")
+1 -2
View File
@@ -14,8 +14,7 @@ namespace model {
public:
Token() = default;
Token(const std::string& accessToken) : accessToken(accessToken) { }
Token(const std::string&& accessToken) :
accessToken(accessToken) { }
Token(const std::string&& accessToken) : accessToken(accessToken) { }
std::string accessToken;
};
@@ -0,0 +1,49 @@
//
// Created by brahmix on 1/13/20.
//
#ifndef MEAR_JNIOBJECTCONVERSION_H
#define MEAR_JNIOBJECTCONVERSION_H
#include <string>
#include <algorithm>
#include <memory>
#include "../model/Token.h"
#include "../model/User.h"
namespace utility {
template<typename Obj>
class JNIObjectConversion {
public:
// jobject to classes
template<typename Token, typename JE>
static Token ObjToToken(JE *env, Obj tokenObj) {
auto tokenClass = env->GetObjectClass(tokenObj);
auto accessTokenId = env->GetFieldId(tokenClass, "accessToken", "Ljava/lang/String;");
auto accessTokenVal = env->GetObjectField(tokenObj, accessTokenId);
Token token(std::move(env->GetStringUTFChars(accessTokenVal, nullptr)));
return token;
}
// classes to jobject
template<typename Token, typename JE>
static Obj TokenToObj(JE *env, const Token& token) {
auto tokenClass = env->FindClass("com/example/mear/models/Token");
auto tokenConstructor = env->GetMethodID(tokenClass, "<init>", "()V");
auto tokenObj = env->NewObject(tokenClass, tokenConstructor);
auto accessTokenId = env->GetFieldID(tokenClass, "accessToken", "Ljava/lang/String;");
// TODO: left off here
}
private:
};
}
#endif //MEAR_JNIOBJECTCONVERSION_H