Bump auto-generated bindings version to 0.0.98.4
[ldk-java] / src / main / jni / bindings.c.body
index 9811c87ae1f942759480b92e015a1408a4ec28c3..5dd76f4414f55b2eb2728b4215062653c137631a 100644 (file)
@@ -1,3 +1,6 @@
+#include <jni.h>
+// On OSX jlong (ie long long) is not equivalent to int64_t, so we override here
+#define int64_t jlong
 #include "org_ldk_impl_bindings.h"
 #include <lightning.h>
 #include <string.h>
@@ -128,7 +131,7 @@ static inline LDKStr java_to_owned_str(JNIEnv *env, jstring str) {
 }
 
 JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1lib_1version_1string(JNIEnv *env, jclass _c) {
-       return str_ref_to_java(env, "v0.0.13-26-gfb06c6a", strlen("v0.0.13-26-gfb06c6a"));
+       return str_ref_to_java(env, "v0.0.98.4", strlen("v0.0.98.4"));
 }
 JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1ldk_1c_1bindings_1version(JNIEnv *env, jclass _c) {
        return str_ref_to_java(env, check_get_ldk_bindings_version(), strlen(check_get_ldk_bindings_version()));
@@ -2134,6 +2137,10 @@ LDKPublicKey get_per_commitment_point_LDKBaseSign_jcall(const void* this_arg, ui
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int8_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->get_per_commitment_point_meth, idx);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKPublicKey ret_ref;
        CHECK((*env)->GetArrayLength(env, ret) == 33);
        (*env)->GetByteArrayRegion(env, ret, 0, 33, ret_ref.compressed_form);
@@ -2154,6 +2161,10 @@ LDKThirtyTwoBytes release_commitment_secret_LDKBaseSign_jcall(const void* this_a
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int8_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->release_commitment_secret_meth, idx);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKThirtyTwoBytes ret_ref;
        CHECK((*env)->GetArrayLength(env, ret) == 32);
        (*env)->GetByteArrayRegion(env, ret, 0, 32, ret_ref.data);
@@ -2174,6 +2185,10 @@ LDKThirtyTwoBytes channel_keys_id_LDKBaseSign_jcall(const void* this_arg) {
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int8_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->channel_keys_id_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKThirtyTwoBytes ret_ref;
        CHECK((*env)->GetArrayLength(env, ret) == 32);
        (*env)->GetByteArrayRegion(env, ret, 0, 32, ret_ref.data);
@@ -2202,6 +2217,10 @@ LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment_L
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(*env)->CallLongMethod(env, obj, j_calls->sign_counterparty_commitment_meth, commitment_tx_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone((LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -2229,6 +2248,10 @@ LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htl
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ* ret = (LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(*env)->CallLongMethod(env, obj, j_calls->sign_holder_commitment_and_htlcs_meth, commitment_tx_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_conv = *(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone((LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -2254,6 +2277,10 @@ LDKCResult_SignatureNoneZ sign_justice_revoked_output_LDKBaseSign_jcall(const vo
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_SignatureNoneZ* ret = (LDKCResult_SignatureNoneZ*)(*env)->CallLongMethod(env, obj, j_calls->sign_justice_revoked_output_meth, justice_tx_arr, input, amount, per_commitment_key_arr);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_SignatureNoneZ_clone((LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -2287,6 +2314,10 @@ LDKCResult_SignatureNoneZ sign_justice_revoked_htlc_LDKBaseSign_jcall(const void
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_SignatureNoneZ* ret = (LDKCResult_SignatureNoneZ*)(*env)->CallLongMethod(env, obj, j_calls->sign_justice_revoked_htlc_meth, justice_tx_arr, input, amount, per_commitment_key_arr, htlc_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_SignatureNoneZ_clone((LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -2320,6 +2351,10 @@ LDKCResult_SignatureNoneZ sign_counterparty_htlc_transaction_LDKBaseSign_jcall(c
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_SignatureNoneZ* ret = (LDKCResult_SignatureNoneZ*)(*env)->CallLongMethod(env, obj, j_calls->sign_counterparty_htlc_transaction_meth, htlc_tx_arr, input, amount, per_commitment_point_arr, htlc_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_SignatureNoneZ_clone((LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -2343,6 +2378,10 @@ LDKCResult_SignatureNoneZ sign_closing_transaction_LDKBaseSign_jcall(const void*
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_SignatureNoneZ* ret = (LDKCResult_SignatureNoneZ*)(*env)->CallLongMethod(env, obj, j_calls->sign_closing_transaction_meth, closing_tx_arr);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_SignatureNoneZ_clone((LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -2370,6 +2409,10 @@ LDKCResult_SignatureNoneZ sign_channel_announcement_LDKBaseSign_jcall(const void
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_SignatureNoneZ* ret = (LDKCResult_SignatureNoneZ*)(*env)->CallLongMethod(env, obj, j_calls->sign_channel_announcement_meth, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_SignatureNoneZ ret_conv = *(LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_SignatureNoneZ_clone((LDKCResult_SignatureNoneZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -2397,6 +2440,10 @@ void ready_channel_LDKBaseSign_jcall(void* this_arg, const LDKChannelTransaction
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->ready_channel_meth, channel_parameters_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -2642,6 +2689,10 @@ LDKCVec_u8Z write_LDKSign_jcall(const void* this_arg) {
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int8_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->write_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCVec_u8Z ret_ref;
        ret_ref.datalen = (*env)->GetArrayLength(env, ret);
        ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
@@ -3308,6 +3359,10 @@ LDKCResult_NoneChannelMonitorUpdateErrZ watch_channel_LDKWatch_jcall(const void*
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(*env)->CallLongMethod(env, obj, j_calls->watch_channel_meth, funding_txo_ref, monitor_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -3341,6 +3396,10 @@ LDKCResult_NoneChannelMonitorUpdateErrZ update_channel_LDKWatch_jcall(const void
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(*env)->CallLongMethod(env, obj, j_calls->update_channel_meth, funding_txo_ref, update_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -3360,6 +3419,10 @@ LDKCVec_MonitorEventZ release_pending_monitor_events_LDKWatch_jcall(const void*
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int64_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->release_pending_monitor_events_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCVec_MonitorEventZ ret_constr;
        ret_constr.datalen = (*env)->GetArrayLength(env, ret);
        if (ret_constr.datalen > 0)
@@ -3497,6 +3560,10 @@ void broadcast_transaction_LDKBroadcasterInterface_jcall(const void* this_arg, L
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->broadcast_transaction_meth, tx_arr);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -3579,6 +3646,10 @@ LDKSecretKey get_node_secret_LDKKeysInterface_jcall(const void* this_arg) {
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int8_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->get_node_secret_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKSecretKey ret_ref;
        CHECK((*env)->GetArrayLength(env, ret) == 32);
        (*env)->GetByteArrayRegion(env, ret, 0, 32, ret_ref.bytes);
@@ -3599,6 +3670,10 @@ LDKCVec_u8Z get_destination_script_LDKKeysInterface_jcall(const void* this_arg)
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int8_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->get_destination_script_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCVec_u8Z ret_ref;
        ret_ref.datalen = (*env)->GetArrayLength(env, ret);
        ret_ref.data = MALLOC(ret_ref.datalen, "LDKCVec_u8Z Bytes");
@@ -3620,6 +3695,10 @@ LDKPublicKey get_shutdown_pubkey_LDKKeysInterface_jcall(const void* this_arg) {
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int8_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->get_shutdown_pubkey_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKPublicKey ret_ref;
        CHECK((*env)->GetArrayLength(env, ret) == 33);
        (*env)->GetByteArrayRegion(env, ret, 0, 33, ret_ref.compressed_form);
@@ -3640,6 +3719,10 @@ LDKSign get_channel_signer_LDKKeysInterface_jcall(const void* this_arg, bool inb
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKSign* ret = (LDKSign*)(*env)->CallLongMethod(env, obj, j_calls->get_channel_signer_meth, inbound, channel_value_satoshis);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKSign ret_conv = *(LDKSign*)(((uint64_t)ret) & ~1);
        ret_conv = Sign_clone(ret);
        if (get_jenv_res == JNI_EDETACHED) {
@@ -3659,6 +3742,10 @@ LDKThirtyTwoBytes get_secure_random_bytes_LDKKeysInterface_jcall(const void* thi
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int8_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->get_secure_random_bytes_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKThirtyTwoBytes ret_ref;
        CHECK((*env)->GetArrayLength(env, ret) == 32);
        (*env)->GetByteArrayRegion(env, ret, 0, 32, ret_ref.data);
@@ -3682,6 +3769,10 @@ LDKCResult_SignDecodeErrorZ read_chan_signer_LDKKeysInterface_jcall(const void*
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_SignDecodeErrorZ* ret = (LDKCResult_SignDecodeErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->read_chan_signer_meth, reader_arr);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_SignDecodeErrorZ ret_conv = *(LDKCResult_SignDecodeErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_SignDecodeErrorZ_clone((LDKCResult_SignDecodeErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -3705,6 +3796,10 @@ LDKCResult_RecoverableSignatureNoneZ sign_invoice_LDKKeysInterface_jcall(const v
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_RecoverableSignatureNoneZ* ret = (LDKCResult_RecoverableSignatureNoneZ*)(*env)->CallLongMethod(env, obj, j_calls->sign_invoice_meth, invoice_preimage_arr);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_RecoverableSignatureNoneZ ret_conv = *(LDKCResult_RecoverableSignatureNoneZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_RecoverableSignatureNoneZ_clone((LDKCResult_RecoverableSignatureNoneZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -3852,6 +3947,10 @@ uint32_t get_est_sat_per_1000_weight_LDKFeeEstimator_jcall(const void* this_arg,
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int32_t ret = (*env)->CallIntMethod(env, obj, j_calls->get_est_sat_per_1000_weight_meth, confirmation_target_conv);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -3928,6 +4027,10 @@ void log_LDKLogger_jcall(const void* this_arg, const char* record) {
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->log_meth, record_conv);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -5963,6 +6066,10 @@ LDKCVec_MessageSendEventZ get_and_clear_pending_msg_events_LDKMessageSendEventsP
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int64_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->get_and_clear_pending_msg_events_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCVec_MessageSendEventZ ret_constr;
        ret_constr.datalen = (*env)->GetArrayLength(env, ret);
        if (ret_constr.datalen > 0)
@@ -6063,6 +6170,10 @@ void handle_event_LDKEventHandler_jcall(const void* this_arg, LDKEvent event) {
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_event_meth, event_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6137,6 +6248,10 @@ void process_pending_events_LDKEventsProvider_jcall(const void* this_arg, LDKEve
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->process_pending_events_meth, (uint64_t)ret);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6215,6 +6330,10 @@ LDKCResult_TxOutAccessErrorZ get_utxo_LDKAccess_jcall(const void* this_arg, cons
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_TxOutAccessErrorZ* ret = (LDKCResult_TxOutAccessErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->get_utxo_meth, genesis_hash_arr, short_channel_id);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_TxOutAccessErrorZ ret_conv = *(LDKCResult_TxOutAccessErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_TxOutAccessErrorZ_clone((LDKCResult_TxOutAccessErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -6299,6 +6418,10 @@ void block_connected_LDKListen_jcall(const void* this_arg, LDKu8slice block, uin
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->block_connected_meth, block_arr, height);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6317,6 +6440,10 @@ void block_disconnected_LDKListen_jcall(const void* this_arg, const uint8_t (* h
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->block_disconnected_meth, header_arr, height);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6419,6 +6546,10 @@ void transactions_confirmed_LDKConfirm_jcall(const void* this_arg, const uint8_t
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->transactions_confirmed_meth, header_arr, txdata_arr, height);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6437,6 +6568,10 @@ void transaction_unconfirmed_LDKConfirm_jcall(const void* this_arg, const uint8_
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->transaction_unconfirmed_meth, txid_arr);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6455,6 +6590,10 @@ void best_block_updated_LDKConfirm_jcall(const void* this_arg, const uint8_t (*
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->best_block_updated_meth, header_arr, height);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6471,6 +6610,10 @@ LDKCVec_TxidZ get_relevant_txids_LDKConfirm_jcall(const void* this_arg) {
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        jobjectArray ret = (*env)->CallObjectMethod(env, obj, j_calls->get_relevant_txids_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCVec_TxidZ ret_constr;
        ret_constr.datalen = (*env)->GetArrayLength(env, ret);
        if (ret_constr.datalen > 0)
@@ -6621,6 +6764,10 @@ void register_tx_LDKFilter_jcall(const void* this_arg, const uint8_t (* txid)[32
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->register_tx_meth, txid_arr, script_pubkey_arr);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6644,6 +6791,10 @@ LDKCOption_C2Tuple_usizeTransactionZZ register_output_LDKFilter_jcall(const void
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCOption_C2Tuple_usizeTransactionZZ* ret = (LDKCOption_C2Tuple_usizeTransactionZZ*)(*env)->CallLongMethod(env, obj, j_calls->register_output_meth, output_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCOption_C2Tuple_usizeTransactionZZ ret_conv = *(LDKCOption_C2Tuple_usizeTransactionZZ*)(((uint64_t)ret) & ~1);
        ret_conv = COption_C2Tuple_usizeTransactionZZ_clone((LDKCOption_C2Tuple_usizeTransactionZZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -6757,6 +6908,10 @@ LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_LDKPersist_jcall(con
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(*env)->CallLongMethod(env, obj, j_calls->persist_new_channel_meth, id_ref, data_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -6799,6 +6954,10 @@ LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_LDKPersist_jcal
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_NoneChannelMonitorUpdateErrZ* ret = (LDKCResult_NoneChannelMonitorUpdateErrZ*)(*env)->CallLongMethod(env, obj, j_calls->update_persisted_channel_meth, id_ref, update_ref, data_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_NoneChannelMonitorUpdateErrZ ret_conv = *(LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_NoneChannelMonitorUpdateErrZ_clone((LDKCResult_NoneChannelMonitorUpdateErrZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -6939,6 +7098,10 @@ void handle_open_channel_LDKChannelMessageHandler_jcall(const void* this_arg, LD
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_open_channel_meth, their_node_id_arr, their_features_ref, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6972,6 +7135,10 @@ void handle_accept_channel_LDKChannelMessageHandler_jcall(const void* this_arg,
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_accept_channel_meth, their_node_id_arr, their_features_ref, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -6998,6 +7165,10 @@ void handle_funding_created_LDKChannelMessageHandler_jcall(const void* this_arg,
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_funding_created_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7024,6 +7195,10 @@ void handle_funding_signed_LDKChannelMessageHandler_jcall(const void* this_arg,
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_funding_signed_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7050,6 +7225,10 @@ void handle_funding_locked_LDKChannelMessageHandler_jcall(const void* this_arg,
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_funding_locked_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7084,6 +7263,10 @@ void handle_shutdown_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPub
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_shutdown_meth, their_node_id_arr, their_features_ref, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7110,6 +7293,10 @@ void handle_closing_signed_LDKChannelMessageHandler_jcall(const void* this_arg,
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_closing_signed_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7136,6 +7323,10 @@ void handle_update_add_htlc_LDKChannelMessageHandler_jcall(const void* this_arg,
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_update_add_htlc_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7162,6 +7353,10 @@ void handle_update_fulfill_htlc_LDKChannelMessageHandler_jcall(const void* this_
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fulfill_htlc_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7188,6 +7383,10 @@ void handle_update_fail_htlc_LDKChannelMessageHandler_jcall(const void* this_arg
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fail_htlc_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7214,6 +7413,10 @@ void handle_update_fail_malformed_htlc_LDKChannelMessageHandler_jcall(const void
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fail_malformed_htlc_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7240,6 +7443,10 @@ void handle_commitment_signed_LDKChannelMessageHandler_jcall(const void* this_ar
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_commitment_signed_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7266,6 +7473,10 @@ void handle_revoke_and_ack_LDKChannelMessageHandler_jcall(const void* this_arg,
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_revoke_and_ack_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7292,6 +7503,10 @@ void handle_update_fee_LDKChannelMessageHandler_jcall(const void* this_arg, LDKP
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_update_fee_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7318,6 +7533,10 @@ void handle_announcement_signatures_LDKChannelMessageHandler_jcall(const void* t
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_announcement_signatures_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7336,6 +7555,10 @@ void peer_disconnected_LDKChannelMessageHandler_jcall(const void* this_arg, LDKP
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->peer_disconnected_meth, their_node_id_arr, no_connection_possible);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7362,6 +7585,10 @@ void peer_connected_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPubl
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->peer_connected_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7388,6 +7615,10 @@ void handle_channel_reestablish_LDKChannelMessageHandler_jcall(const void* this_
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_channel_reestablish_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7414,6 +7645,10 @@ void handle_channel_update_LDKChannelMessageHandler_jcall(const void* this_arg,
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_channel_update_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7440,6 +7675,10 @@ void handle_error_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublic
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_error_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7813,6 +8052,10 @@ LDKCResult_boolLightningErrorZ handle_node_announcement_LDKRoutingMessageHandler
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_node_announcement_meth, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -7840,6 +8083,10 @@ LDKCResult_boolLightningErrorZ handle_channel_announcement_LDKRoutingMessageHand
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_channel_announcement_meth, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -7867,6 +8114,10 @@ LDKCResult_boolLightningErrorZ handle_channel_update_LDKRoutingMessageHandler_jc
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_boolLightningErrorZ* ret = (LDKCResult_boolLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_channel_update_meth, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_boolLightningErrorZ ret_conv = *(LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_boolLightningErrorZ_clone((LDKCResult_boolLightningErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -7887,6 +8138,10 @@ void handle_htlc_fail_channel_update_LDKRoutingMessageHandler_jcall(const void*
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->handle_htlc_fail_channel_update_meth, ret_update);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -7903,6 +8158,10 @@ LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int64_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->get_next_channel_announcements_meth, starting_point, batch_amount);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ ret_constr;
        ret_constr.datalen = (*env)->GetArrayLength(env, ret);
        if (ret_constr.datalen > 0)
@@ -7936,6 +8195,10 @@ LDKCVec_NodeAnnouncementZ get_next_node_announcements_LDKRoutingMessageHandler_j
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int64_tArray ret = (*env)->CallObjectMethod(env, obj, j_calls->get_next_node_announcements_meth, starting_point_arr, batch_amount);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCVec_NodeAnnouncementZ ret_constr;
        ret_constr.datalen = (*env)->GetArrayLength(env, ret);
        if (ret_constr.datalen > 0)
@@ -7979,6 +8242,10 @@ void sync_routing_table_LDKRoutingMessageHandler_jcall(const void* this_arg, LDK
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->sync_routing_table_meth, their_node_id_arr, init_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -8004,6 +8271,10 @@ LDKCResult_NoneLightningErrorZ handle_reply_channel_range_LDKRoutingMessageHandl
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_reply_channel_range_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -8032,6 +8303,10 @@ LDKCResult_NoneLightningErrorZ handle_reply_short_channel_ids_end_LDKRoutingMess
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_reply_short_channel_ids_end_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -8060,6 +8335,10 @@ LDKCResult_NoneLightningErrorZ handle_query_channel_range_LDKRoutingMessageHandl
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_query_channel_range_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -8088,6 +8367,10 @@ LDKCResult_NoneLightningErrorZ handle_query_short_channel_ids_LDKRoutingMessageH
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_NoneLightningErrorZ* ret = (LDKCResult_NoneLightningErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->handle_query_short_channel_ids_meth, their_node_id_arr, msg_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_NoneLightningErrorZ ret_conv = *(LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_NoneLightningErrorZ_clone((LDKCResult_NoneLightningErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {
@@ -8337,6 +8620,10 @@ uintptr_t send_data_LDKSocketDescriptor_jcall(void* this_arg, LDKu8slice data, b
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int64_t ret = (*env)->CallLongMethod(env, obj, j_calls->send_data_meth, data_arr, resume_read);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -8354,6 +8641,10 @@ void disconnect_socket_LDKSocketDescriptor_jcall(void* this_arg) {
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        (*env)->CallVoidMethod(env, obj, j_calls->disconnect_socket_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -8372,6 +8663,10 @@ bool eq_LDKSocketDescriptor_jcall(const void* this_arg, const LDKSocketDescripto
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        jboolean ret = (*env)->CallBooleanMethod(env, obj, j_calls->eq_meth, (uint64_t)other_arg_clone);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -8389,6 +8684,10 @@ uint64_t hash_LDKSocketDescriptor_jcall(const void* this_arg) {
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        int64_t ret = (*env)->CallLongMethod(env, obj, j_calls->hash_meth);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        if (get_jenv_res == JNI_EDETACHED) {
                DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
        }
@@ -8495,6 +8794,10 @@ LDKCResult_NoneErrorZ persist_manager_LDKChannelManagerPersister_jcall(const voi
        jobject obj = (*env)->NewLocalRef(env, j_calls->o);
        CHECK(obj != NULL);
        LDKCResult_NoneErrorZ* ret = (LDKCResult_NoneErrorZ*)(*env)->CallLongMethod(env, obj, j_calls->persist_manager_meth, channel_manager_ref);
+       if ((*env)->ExceptionCheck(env)) {
+               (*env)->ExceptionDescribe(env);
+               (*env)->FatalError(env, "A Java interface method called from rust threw an exception.");
+       }
        LDKCResult_NoneErrorZ ret_conv = *(LDKCResult_NoneErrorZ*)(((uint64_t)ret) & ~1);
        ret_conv = CResult_NoneErrorZ_clone((LDKCResult_NoneErrorZ*)(((uint64_t)ret) & ~1));
        if (get_jenv_res == JNI_EDETACHED) {