diff --git a/java/lib/NetworkTablesJNI.cpp b/java/lib/NetworkTablesJNI.cpp index 9b7f7edc4d..1884a9a367 100644 --- a/java/lib/NetworkTablesJNI.cpp +++ b/java/lib/NetworkTablesJNI.cpp @@ -18,7 +18,7 @@ static jclass connectionInfoCls = nullptr; static jclass keyNotDefinedEx = nullptr; static jclass persistentEx = nullptr; -jint JNI_OnLoad(JavaVM *vm, void *reserved) { +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { jvm = vm; JNIEnv *env; @@ -67,7 +67,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) { return JNI_VERSION_1_6; } -void JNI_OnUnload(JavaVM *vm, void *reserved) { +JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { JNIEnv *env; if (vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) return; @@ -555,6 +555,22 @@ JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI nt::SetEntryTypeValue(JavaStringRef(env, key), v); } +/* + * Class: edu_wpi_first_wpilibj_networktables_NetworkTablesJNI + * Method: getValue + * Signature: (Ljava/lang/String;)Ljava/lang/Object; + */ +JNIEXPORT jobject JNICALL Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getValue__Ljava_lang_String_2 + (JNIEnv *env, jclass, jstring key) +{ + auto val = nt::GetEntryValue(JavaStringRef(env, key)); + if (!val || !val->IsBoolean()) { + ThrowTableKeyNotDefined(env, key); + return false; + } + return ToJavaObject(env, *val); +} + /* * Class: edu_wpi_first_wpilibj_networktables_NetworkTablesJNI * Method: getBoolean @@ -667,6 +683,19 @@ JNIEXPORT jobjectArray JNICALL Java_edu_wpi_first_wpilibj_networktables_NetworkT return ToJavaStringArray(env, val->GetStringArray()); } +/* + * Class: edu_wpi_first_wpilibj_networktables_NetworkTablesJNI + * Method: getValue + * Signature: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; + */ +JNIEXPORT jobject JNICALL Java_edu_wpi_first_wpilibj_networktables_NetworkTablesJNI_getValue__Ljava_lang_String_2Ljava_lang_Object_2 + (JNIEnv *env, jclass, jstring key, jobject defaultValue) +{ + auto val = nt::GetEntryValue(JavaStringRef(env, key)); + if (!val || !val->IsBoolean()) return defaultValue; + return ToJavaObject(env, *val); +} + /* * Class: edu_wpi_first_wpilibj_networktables_NetworkTablesJNI * Method: getBoolean